この場合、IntPtr を使用することを学びました。
-delphi (デルファイ 2006 バージョン) コード
function GetRequestResult(out code:integer):PChar; stdcall;
begin
LogMessage('GetRequestResult');
code:=requestCode;
result:=PChar(RequestResult);
LogMessage('GetRequestResult done');
end;
次に、C#で使用するために、次のように使用しました
IntPtr str = GetRequestResult(out code);
string loginResult = Marshal.PtrToStringAnsi(str);
これはうまくいきます。
では、このケースはどうでしょうか。
-デルファイ コード
procedure Login(login,password:PChar); stdcall;
...
...
この PChar は () 内にあります。では、その Login delphi 関数に文字列値を渡す正確な方法は何ですか?
[DllImport ("ServerTool")]
private static extern void Login([MarshalAs(UnmanagedType.LPStr)]string id, [MarshalAs(UnmanagedType.LPStr)]string pass);
private static extern void Login(IntPtr id, IntPtr pass); // この場合、この IntPtr を後半でどのように使用しますか?
private static extern void Login(string id, string pass);
前もって感謝します。