程序出错的最主要的代码如下:procedure TForm1.Button1Click(Sender: TObject);
var
  TaskHandle : Longint;  intErrCode : Integer;
begin
  //ErrorNULLPtr = $FFFCF064;
  //ErrorInvalidDeviceID = $FFFCF1E4;  //-200220
  //ErrorInvalidTask = $FFFCF268;      //-200088  //c: taskHandle 0x6deb1cc0 void *
  //delphi:    taskHandle 0x6deb1cc0
  //c: &taskHandle 0x0012ff54 void * *
  //delphi:    @TaskHandle 12f58c intErrCode := DAQmxCreateTask('' , @TaskHandle);
  memo1.Lines.Add('ErrCode: ' + Format('%x' , [intErrCode]));  //c:taskhandle = 0x6deb1cc0
  //delphi:taskhandle $6deb1cc0   //1844124864
  //c:DAQmx_Val_Cfg_Default -1 ffffffff// Default
  //delphi:DAQmx_Val_Cfg_Default = $FFFFFFFF
  //c:DAQmx_Val_Volts 10348 286c// Volts
  //delphi:DAQmx_Val_VoltageUnits1_Volts = $0000286C intErrCode := DAQmxCreateAIVoltageChan(taskHandle , 'Dev1/ai0' , '' ,
    DAQmx_Val_Cfg_Default , -10.0 , 10.0 , DAQmx_Val_VoltageUnits1_Volts , '');
  memo1.Lines.Add('ErrCode: ' + Format('%x' , [intErrCode]));end;end.
在运行DAQmxCreateTask时,intErrCode返回0,表示正常;
在运行到调用函数DAQmxCreateAIVoltageChan时,intErrCode返回FFFCF268,即:-200088,我查了一下,是报ErrorInvalidTask错误,原型函数的声明(XNIDAQmx.pas)声明如下:
unit XNIDAQmx;interface
uses
  Windows , ActiveX , Classes , Graphics , StdVCL , Variants , SysUtils , XNIDAQmxCAPI_TLB;//typedef void* TaskHandle;
//int32 __CFUNC     DAQmxCreateTask (const char taskName[], TaskHandle *taskHandle);
function DAQmxCreateTask(taskName : PChar; taskHandle : PLongint) : Longint; stdcall ; external 'nicaiu.dll';//int32 __CFUNC     DAQmxCreateAIVoltageChan
//(TaskHandle taskHandle, const char physicalChannel[], const char nameToAssignToChannel[],
//int32 terminalConfig, float64 minVal, float64 maxVal,
//int32 units, const char customScaleName[]);
//DAQmxCreateAIVoltageChan(taskHandle,"WLS-13BC5DC/ai0","",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL))
function DAQmxCreateAIVoltageChan(taskHandle : Longint ; physicalChannel : PChar;
  nameToAssignToChannel : PChar; terminalConfig : DAQmxInputTermCfg;
    minVal : Double ; maxVal:Double ; units : DAQmxVoltageUnits2 ; customScaleName : PChar) : Longint ;
      stdcall ; external 'nicaiu.dll';function DAQmxCfgSampClkTiming(taskHandle : Longint ; source : PChar ; rate : Double;
  activeEdge:DAQmxEdge; sampleMode:DAQmxAcquisitionType; sampsPerChan:Longint):Longint; stdcall;  external 'nicaiu.dll';
function DAQmxStartTask(taskHandle:Longint):Longint; stdcall; external 'nicaiu.dll';
function DAQmxReadAnalogF64(taskHandle : Longint; numSampsPerChan:Longint; timeout:Double;
  fillMode:DAQmxFillMode; readArray:array of double; arraySizeInSamps:Longint;
    sampsPerChanRead:Integer; reserved:Pointer):Longint; stdcall;external 'nicaiu.dll';function DAQmxGetErrorString(errorCode : Longint ; errorString : PChar ;
  bufferSize : Longint) : Longint ; stdcall ; external 'nicaiu.dll';
function DAQmxGetExtendedErrorInfo(errorString : PChar ; bufferSize : Longint) : Longint ;
  stdcall ; external 'nicaiu.dll';调试了好几天了,就是找不到原因,拜托请帮忙查看一下错误原因。多谢啦。