用C#调用正常
[DllImport("plcommpro.dll", EntryPoint = "GetDeviceData")]
public static extern int GetDeviceData(IntPtr h, ref byte buffer, int buffersize, string tablename, string filename, string filter, string options);private void btngetdat_Click(object sender, EventArgs e)
{
     int ret = 0;
     int BUFFERSIZE = 10 * 1024 * 1024;
      byte[] buffer = new byte[BUFFERSIZE];
      if (IntPtr.Zero != h)
      {
          ret = GetDeviceData(h, ref buffer[0],BUFFERSIZE, "user", "*", "", "");
      }
      else
      {
          MessageBox.Show("Connect device failed!");
          return;
      }
}
改Delphi调用出错,求指点
Type  TGetDeviceData=function(h:hWnd;var buffer:array of PByte;BufferSize: Longint; TableName,FieldNames,Filter,Options: string):Integer;Stdcall;procedure TfrmMain.dxBarLargeButton2Click(Sender: TObject);
var
  buffer :array of PByte;
  lBUFFERSIZE: Longint;
  ret,lLength,lStrat,lEnd: Integer;
  devtablename, str, devdatfilter, options:string;
begin
   ret :=0;
   lBUFFERSIZE :=10*1024*1024;
   SetLength(buffer,lBUFFERSIZE);
   ret :=GetDeviceData(h,buffer,lBUFFERSIZE, 'user', '*', '','');
   if ret >= 0 then
   begin
      ShowMessage(IntToStr(ret));
   end;
end;