小编Erk*_*anK的帖子

字符串到PAnsiChar转换麻烦

这些是C DLL函数示例及其Delphi转换:

C定义:

DLL_EXPORT int AR_dll_function (const char *terminal_no, const char *description);
Run Code Online (Sandbox Code Playgroud)

Delphi定义:

function Ar_Dll_Function(const TerminalNo: PAnsiChar; const Description: PAnsiChar):Integer;

...

function Ar_Dll_Function(const TerminalNo: PAnsiChar; const Description: PAnsiChar):Integer;
var
  MyFunct : function(const TerminalNo: PAnsiChar; const Description: PAnsiChar):Integer;cdecl;
begin
  Result := 0;
  @MyFunct:=GetProcAddress(HInst,'ar_dll_function');
  if Assigned(MyFunct) then
    Result := MyFunct(TerminalNo, Description);
end;
Run Code Online (Sandbox Code Playgroud)

我使用上面这样的Delphi函数:

function SP(const s:string): PAnsiChar;
var
  UTF8Str: RawByteString;
begin
  Result := #0;
  SetCodePage(UTF8Str, 0, False);
  UTF8Str := UTF8Encode(s);
  Result := PAnsiChar(AnsiString(UTF8Str));
end;

...

result := Ar_Dll_Function(SP(dTermNo),SP(descr));
Run Code Online (Sandbox Code Playgroud)

问题出在两个PAnsiChar参数之间.当我在调试模式下进入DLL函数时,我看到第二个PAnsiChar …

delphi string pointers ansi char

2
推荐指数
1
解决办法
716
查看次数

标签 统计

ansi ×1

char ×1

delphi ×1

pointers ×1

string ×1