首页 > 解决方案 > 将 C# 代码(字符串)迁移到 Delphi 10

问题描述

我正在尝试在 Delphi 10.3 中重写基于 DLL 的 C# 代码(也可能来自 C#,我没有来自它的源代码/文档)。但是我在字符串字段周围遇到了一些问题......这是来自 C# 的工作代码:

[DllImport("methods.dll", CharSet = CharSet.Ansi)] 
public static extern int getName([MarshalAs(UnmanagedType.LPStr)] ref string apstrName);

string myName = "";
int ret = getName(ref myName);

“ret”得到“0”,“myName”得到“ok”。

在德尔福,我试过:

function getName(var apstrName: PAnsiChar): Integer; stdcall; external 'methods.dll';

var myName: PAnsiChar;

ret := getName(myName);

但是“ret”得到“-1”(无效参数),“myName”得到“#0”(null)。

我尝试过其他类型而不是 PAnsiChar:PChar、PWideChar、PByte、string、AnsiString、WideString... 没有成功!

你知道这里有什么问题吗?

非常感谢!

标签: delphidelphi-10.3-rio

解决方案


推荐阅读