因为需要调用visa dll里面的viscanf,viprintf函数,所以必须传递可变参数。c++代码如下:
声明:
UINT viScanf (ViSession vi, char* readFmt, ...);使用:
char buf[255];
viPrintf(vi,("measure:voltage:dc?\n ");
viScanf(vi,"%#t",buf);
delphi代码我是这样写的:
声明:
function viPrintf(vi:ViSession;writFmt:ViString):ViStatus;cdecl varargs;external 'visa32.dll';
function viScanf(vi:ViSession;readFmt:PChar):ViStatus;cdecl varargs;external 'visa32.dll';使用:
viPrintf(vi,PChar('measure:voltage:dc? '#10''));
viScanf(vi,'%#t',buf);已试出viPrintf可以把内容发出去,但 viScanf无法取回数据。
有请各位高手指教!
声明:
UINT viScanf (ViSession vi, char* readFmt, ...);使用:
char buf[255];
viPrintf(vi,("measure:voltage:dc?\n ");
viScanf(vi,"%#t",buf);
delphi代码我是这样写的:
声明:
function viPrintf(vi:ViSession;writFmt:ViString):ViStatus;cdecl varargs;external 'visa32.dll';
function viScanf(vi:ViSession;readFmt:PChar):ViStatus;cdecl varargs;external 'visa32.dll';使用:
viPrintf(vi,PChar('measure:voltage:dc? '#10''));
viScanf(vi,'%#t',buf);已试出viPrintf可以把内容发出去,但 viScanf无法取回数据。
有请各位高手指教!
难道不应该是
viScanf(vi,Pchar('%#t'),buf); 吗?
'%#t'是格式化字符串,在delphi种常量字符串和PChar应该是可以互用的。
我想应该是PCHAR和字符串数组的区别的问题。
我用字符数组还是可以的。但用PCHAR不知道为什么不行?
难道使用之前要申请内存吗?
我本来是用c++的,但听说delphi如何优秀,就学习一下,把之前的一个工程由c++改写为delphi。
个人感觉,如果用的delphi写程序,首先必须对它的数据结构要熟悉,因为其它很多程序是用c++写的,
里面的#define,#ifndef, typedef等就有几百上千行。
转换起来实在不容易呀,在网上下了个转换工具,十行有八行转出来无法使用。希望那个高手能开发出来一个优秀的转换工具,那就会有很多人用delphi了。
const Args: array of const
传递参数,不过问题已经可以解决了。多谢各位。
你是怎么解决的,能告诉我么,我现在也遇到这个问题!