相关疑难解决方法(0)

在Freepascal编译的DLL和Delphi编译的EXE之间交换字符串(PChar)

经过大量的实验,我找到了一种方法,用FreePascal编译的DLL与Delphi编译的EXE交换PChar.我负责DLL和EXE源代码,但一个必须在FreePascal中,另一个在Delphi中.我的解决方案涉及DLL中的以下方法:

function GetAString(): PChar;
var aString: string;
begin
  aString := 'My String';
  result := StrAlloc(length(aString) + 1);
  StrPCopy(result, aString); 
end;

procedure FreeString(aString: PChar);
begin
  StrDispose(aString); 
end;
Run Code Online (Sandbox Code Playgroud)

从Delphi EXE中,要调用GetAString方法,我需要调用GetAString方法,将PChar保存到实际的Delphi String并调用FreeString方法.

这是从FreePascal DLL与Delphi EXE交换字符串的最佳方法吗?我可以避免从Delphi调用FreeString吗?

最后,如果这是正确的解决方案,默认情况下它将如何使用Delphi 2010和WideString:我是否还需要在FreePascal中强制使用WidePChar?

delphi string dll pascal freepascal

4
推荐指数
1
解决办法
8399
查看次数

标签 统计

delphi ×1

dll ×1

freepascal ×1

pascal ×1

string ×1