将C dll头转换为delphi:char *

时间:2017-04-14 00:08:49

标签: c delphi pointers nidaqmx

我在Delphi XE4应用程序中使用NIDAQmx DLL。 DLL只有一个ANSI C头文件。

我试图转换此功能:

int32 __CFUNC DAQmxGetPhysicalChanName(TaskHandle taskHandle, 
        const char channel[], char *data, uInt32 bufferSize);

这是我的翻译:

function DAQmxGetPhysicalChanName(taskHandle: TTaskHandle;
        chanName: PAnsiChar; chanPhysName: PAnsiChar;
        bufferSize: DWORD): Integer; stdcall; external NI_DLL_NAME delayed;

当我这样称呼时:

var    
  s1,s2:  String[200];
  sp: PAnsiChar;
begin
// sp:=@s2[1]; When I uncomment this, fucntion works as
//  expected, otherwice return string s2 is empty!
   res:=DAQmxGetPhysicalChanName(taskHandle,@s1[1],@s2[1],200);

该功能仅在我在通话前插入sp:=@s2[1]时有效。我从来没有真正使用sp指针,只是它被分配的事实有帮助。没有它,s2字符串为空。我不明白为什么。我做错了什么?

0 个答案:

没有答案