function hdcService(head,body,msg,resultdata:PChar):Integer;stdcall;external 'hdcv1.dll'; //申明从hdcv1.dll中调用函数hdcservice函数,该函数包括4个参数,其中head和body是传入的xml头部分和主体部分,msg是返回的提示信息, //resultdata是返回的结果。 procedure Tfrmupload.Button1Click(Sender: TObject); var rst,i,t1,t2,interval:integer; head,body,msg,resultdata:String; DateTime:TDateTime; begin if checkbox1.Checked and (StringGrid1.Row<1) then begin showmessage('请选择一个事件!'); exit; end; if (not checkbox1.Checked) and (memo1.Text='') then begin showmessage('请选择一份header文件!'); exit; end; if memo4.Text='' then begin showmessage('请选择一份body文件!'); exit; end; memo2.Lines.Clear; memo5.Lines.Clear; edit1.Text:=''; label6.Caption:=''; button1.Enabled:=false; head:='<header><eventid>'+StringGrid1.Cells[1,StringGrid1.Row]+'</eventid><organizationid>123</organizationid></header>'; //把head.xml文件转换成字符串 body:=memo4.Text; //把body.xml文件转换成字符串 setlength(msg,2000); //因为msg是返回的信息,需要预先分配空间, 2000仅为示例,意为必须保证空间足够 setlength(resultdata,20000); //因为resultdata是返回的信息,需要预先分配空间,结果有可能比较大,所以分配的空间也需要比较大 // 20000仅为示例,意为必须保证空间足够 t1:=getTickCount; //调用dll前时间 rst:=hdcService(PChar(head),PChar(body),PChar(msg),PChar(resultdata));//rst是执行返回的结果 t2:=getTickCount; interval:= t2-t1; //调用dll前后时间差 label6.Caption:=inttostr(interval); button1.Enabled:=true; edit1.Text:=inttostr(rst); memo2.Lines.Add(resultdata); memo5.Lines.Add(msg); end;
转载于:https://www.cnblogs.com/zsdentist/archive/2011/07/22/2114188.html