2

我在 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字符串是空的。我不明白为什么。我究竟做错了什么?

4

0 回答 0