I Unmanaged Exports NuGet von Robert Giesecke bin mit und die folgende Methode in C#:Rückgabe eines String-Array von C# zu Inno Setup
[DllExport("DummyMethod", CallingConvention = CallingConvention.StdCall)]
public static void DummyMethod(
[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] out string[] test, out int count)
{
count = 3;
test = new[] {"test1", "test2", "test3"};
}
In Inno Setup dies ist mein Code:
[Code]
procedure DummyMethod(out Test: TArrayOfString; out Count: Integer);
external '[email protected]:MyDll.dll stdcall';
procedure InitializeWizard();
var Test : TArrayOfString;
var Count : Integer;
begin
DummyMethod(Test, Count);
MsgBox(Test[0], mbError, MB_OK);
end;
Aus irgendeinem Grund ist Count
immer 0 und Test
ist immer leer.
Ich habe mir einige Beispiele angesehen, konnte aber keine finden, bei denen Inno Setup ein String-Array von einer C# DLL holt.
Ihre Antwort war sehr hilfreich und der mitgelieferte Code funktioniert perfekt. Die Umwandlung von string [] nach char ** macht in der Tat Sinn. Ich habe nicht viel Erfahrung mit dieser Art von Setups und mein Wissen über verwalteten Code ist ziemlich begrenzt. Ich musste von Nicht-Unicode zu Unicode-Inno-Setup wechseln, aber ich halte das für eine gute Sache! :) – breez