delphi - 将 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... 没有成功!
你知道这里有什么问题吗?
非常感谢!
解决方案
推荐阅读
- salesforce - Salesforce Classic 而非 Lightning 中报表的唯一联系人 ID 计数器的公式字段
- c++ - 运行 PROJ 示例时未定义对“proj_context_create”的引用
- xcode - 安装了 TestFlight 的应用程序 iOS 15 的设备上未显示应用程序图标
- reactjs - 如何让ProgressBar占据View容器的剩余宽度
- webpack - webpack 5 中的 import 语句似乎将所有内容都包含在 module.exports = "" 中
- typescript - 我怎样才能让类型缩小在这里工作?
- c# - c#如何根据动态表值触发代码中的方法
- python - 有没有一种方法可以创建具有多个结果的单个查询,而不是在 for 循环内的每次迭代期间进行查询
- asp.net - ASP.NET 生成的 excel 文件的格式与扩展名不同
- python - 从 x_arr 搜索 n 个元素并将其推送到 custom_arr 中,其中条件为 y_arr