Skip to main content

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

function DelphiFunction(inputString : PAnsiChar;
                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

var 
  s : string;
begin
  try
    s := inputString;
 
    outputStringBuffer:=PString(AnsiString(s));
 
    Result := true;

except

  except
    on e : exception do
    begin
      s:= 'error';
      errorMsgBuffer:=PString(AnsiString(e.Message));
      Result := false;
    end;
  end;
end;

In c# then:

    const int stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

s := inputString;
 
outputStringBuffer:=PString(AnsiString(s));
 
Result := true;

except

on e : exception do
begin
  s:= 'error';
  errorMsgBuffer:=PString(AnsiString(e.Message));
  Result := false;
  end;
 end;
end;

In c# then:

    const int stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;
                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;
var 
  s : string;
begin
  try
    s := inputString;
    outputStringBuffer:=PString(AnsiString(s));
    Result := true;
  except
    on e : exception do
    begin
      s:= 'error';
      errorMsgBuffer:=PString(AnsiString(e.Message));
      Result := false;
    end;
  end;
end;

In c# then:

    const int stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);
deleted 14 characters in body
Source Link
gimpy
  • 54
  • 5

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

s := inputString;

outputStringBuffer:=PString(AnsiString(s));

Result := true;

except

on e : exception do
begin
  s:= 'error';
  errorMsgBuffer:=PString(AnsiString(e.Message));
  Result := false;
  end;
 end;
end;

In c# then using example:

    const int stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

s := inputString;

outputStringBuffer:=PString(AnsiString(s));

Result := true;

except

on e : exception do
begin
  s:= 'error';
  errorMsgBuffer:=PString(AnsiString(e.Message));
  Result := false;
  end;
 end;
end;

In c# then using example:

    const int stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

s := inputString;

outputStringBuffer:=PString(AnsiString(s));

Result := true;

except

on e : exception do
begin
  s:= 'error';
  errorMsgBuffer:=PString(AnsiString(e.Message));
  Result := false;
  end;
 end;
end;

In c# then:

    const int stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);
added 58 characters in body
Source Link
gimpy
  • 54
  • 5

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

s := inputString;

outputStringBuffer:=PString(AnsiString(s));

Result := true;

except

on e : exception do
begin
  s:= 'error';
  errorMsgBuffer:=PString(AnsiString(e.Message));
  Result := false;
  end;
 end;
end;

In c# then using example:

    IntPtrconst str=int outputStringBuffer;stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

s := inputString;

outputStringBuffer:=PString(AnsiString(s));

Result := true;

except

on e : exception do
begin
  s:= 'error';
  errorMsgBuffer:=PString(AnsiString(e.Message));
  Result := false;
  end;
 end;
end;

In c# then using example:

    IntPtr str= outputStringBuffer;

    string loginResult = Marshal.PtrToStringAnsi(str);

It is easier to retireve a string using PString:

function DelphiFunction(inputString : PAnsiChar;

                    var outputStringBuffer : PString;
                    var errorMsgBuffer : PString)
                    : WordBool; stdcall; export;

var s : string;

begin

try

s := inputString;

outputStringBuffer:=PString(AnsiString(s));

Result := true;

except

on e : exception do
begin
  s:= 'error';
  errorMsgBuffer:=PString(AnsiString(e.Message));
  Result := false;
  end;
 end;
end;

In c# then using example:

    const int stringBufferSize = 1024;

    var  str = new    IntPtr(stringBufferSize);

    string loginResult = Marshal.PtrToStringAnsi(str);
added 142 characters in body
Source Link
gimpy
  • 54
  • 5
Loading
Source Link
gimpy
  • 54
  • 5
Loading