title: InnoSetup: How to pass a two dimensional string array to a function
body: <p>Innosetup is killing me. I am getting a RUNTIME 'Type Mismatch' error, where it is, to me, quite unexpected. I am using Inno-setup 5.5.3 (u) 
  (where the 'u' means the unicode version)</p>
  
  <p>I am attempting to pass a two dimensional array into a method. </p>
  
  <p>Here is my complete example. </p>
  
  <pre><code>[Setup]
  AppName=EmptyProgram
  AppVerName=EmptyProgram 1
  UsePreviousAppDir=false
  DefaultDirName={pf}\EmptyProgram
  Uninstallable=false
  OutputBaseFilename=HelloWorld
  PrivilegesRequired=none
  
  [Messages]
  SetupAppTitle=My Title
  
  [Code]
  var
      langMap : array[0..3] of array[0..1] of String;
  
  
  function getMapVal(map : array of array[0..1] of String; key: String ) : String;
  begin
      Result:='not testing the body of the method';
  end;
  
  function InitializeSetup(): Boolean;
  begin
      MsgBox('Hello world.', mbInformation, MB_OK);
  
      getMapVal(langMap, 'hello');    // this line here fails with type mismatch! Why?
  
      Result := FALSE;
  end;
  </code></pre>
  
  <p>This example would run, but for the invokation of the method:</p>
  
  <p>getMapVal(langMap, 'hello');</p>
  
  <p>It compiles, and therefore is happy with the declaration. But on invokation, mismatch error. What am I doing wrong? </p>