用Delphi通过GPIB读取仪表参数时,调用了VISA.dll库,但是如何通过下面函数取得params双指针的返回值,请高手指教?赠送10分。Function viScanf(vi:integer;readFmt:pchar;var params:ppchar):integer;Cdecl;external 'VISA32.DLL';
详细代码如下:
implementation{$R *.dfm}
Function viOpenDefaultRM(var sesn:integer):integer;stdcall;external 'VISA32.DLL';
Function viOpen(sesn:integer; viDesc:pchar; mode:integer;timeout:integer; var vi:integer):integer;stdcall;external 'VISA32.DLL';
Function viClose(vi:integer):integer;stdcall;external 'VISA32.DLL';
Function viPrintf(vi:integer;writeFmt:pchar):integer;Cdecl;external 'VISA32.DLL';
Function viScanf(vi:integer;readFmt:pchar;var params:ppchar):integer;Cdecl;external 'VISA32.DLL';
params:ppchar):integer;Cdecl;external 'VISA32.DLL';
Function viClear(vi:integer):integer;stdcall;external 'VISA32.DLL';
procedure TForm1.Button3Click(Sender: TObject);
var buf:ppchar;
begin
viScanf(vi,'%t',buf);
memo1.Text:=buf;
// 此处该如何写,才能调用双指针params的值,然后将取得的值显示出来。end;
详细代码如下:
implementation{$R *.dfm}
Function viOpenDefaultRM(var sesn:integer):integer;stdcall;external 'VISA32.DLL';
Function viOpen(sesn:integer; viDesc:pchar; mode:integer;timeout:integer; var vi:integer):integer;stdcall;external 'VISA32.DLL';
Function viClose(vi:integer):integer;stdcall;external 'VISA32.DLL';
Function viPrintf(vi:integer;writeFmt:pchar):integer;Cdecl;external 'VISA32.DLL';
Function viScanf(vi:integer;readFmt:pchar;var params:ppchar):integer;Cdecl;external 'VISA32.DLL';
params:ppchar):integer;Cdecl;external 'VISA32.DLL';
Function viClear(vi:integer):integer;stdcall;external 'VISA32.DLL';
procedure TForm1.Button3Click(Sender: TObject);
var buf:ppchar;
begin
viScanf(vi,'%t',buf);
memo1.Text:=buf;
// 此处该如何写,才能调用双指针params的值,然后将取得的值显示出来。end;
var buf:ppchar;
buf1:pchar;
begin
getmem(buf,255);
getmem(buf1,255);
viScanf(vi,'%d',buf);
buf1:=@buf^;
memo1.Text:=pchar(buf1);
freemem(buf);
freemem(buf1);
end;
这样写运行后,提示指针操作无效。