【发布时间】:2013-02-18 16:23:50
【问题描述】:
在我的 Delphi 代码中,我必须使用以下原型调用 DLL 的函数(用 Visual C 编写):
int PWFunc(LPCSTR szName, int nWidth, int nHeight, LPCSTR szFileName)
如何将 Delphi AnsiString 变量(用于名称和文件名)转换为函数调用的正确类型参数(LPCSTR szName 和 szFileName)? 我知道 VC LPCSTR 类型对应于 Delphi PAnsiChar 类型,但是将 AnsiString 转换为 PAnsiChar 的正确程序是什么?
【问题讨论】:
-
PAnsiChar(AnsiString(s))是您最后一个问题的答案,假设编码是 ANSI。如果编码是 UTF-8,则不同的答案! -
@henry,你使用的是什么版本的 Delphi?至少在 Delphi 2009 中定义了
LPCSTR类型... -
对于 UTF-8 编码,如果使用
LPCSTR数据类型定义原型,则可以传递PAnsiChar(AnsiString(UTF8Encode(s)))之类的参数值或直接传递LPCSTR(AnsiString(UTF8Encode(s)))。甚至没有转换为AnsiString,例如PAnsiChar(UTF8Encode(s))或LPCSTR(UTF8Encode(s))。 -
您自己尝试过什么?我很确定您的第一次或第二次尝试会产生预期的结果...
-
在界面的另一边显示代码。 Rudy 的翻译很好,并且在所有操作系统上的行为方式都相同。所以,我们掌握的信息有问题。
标签: delphi dll parameters type-conversion