【发布时间】:2011-10-30 10:39:53
【问题描述】:
如何将 Delphi 代码转换为 C#?它需要一个array of Byte,但我不确定 C# 等价物是什么。我的尝试不起作用,并引发了 AccessViolationException 之类的异常。
德尔福:
function SetLevel(a: array of byte): boolean; stdcall; external 'DMX510.dll';
C#:
[DllImport("DMX510.DLL")]
public static extern Boolean SetLevel(Byte[] bytearray);
Byte[] byteArray = new Byte[5];
byteArray[1] = 75;
SetLevel(byteArray);
【问题讨论】:
-
monacor.de/fileadmin/user_upload/software_updates/DMX510dll.zip 这是带有一些delphi示例代码的dll的链接
-
DLL 用于控制 USB-DMX 控制器。这个控制器让我可以从我的笔记本电脑上控制我的照明和激光硬件。 DMX 是一个串行总线系统,该阵列用于输出 0 到 255 到 510 个硬件通道之间的值,每个通道用于一个单独的设备。设备是字节数组索引,值是DMX值。
-
示例中的源代码和 cmets 显示最多有 510 个通道。字节数组为此做好了准备;创建表单时,它的长度为 510,并且所有字节都初始化为 0。现在,我仍然不知道如何将 C# 数组映射到 Delphi 数组(如果这种方式可能的话),但我可以想象为什么一个 5 的数组会给你一个访问冲突。