50分高手白捡的分(关于dll编写及调用的问题)(50分)

  • 主题发起人 主题发起人 lmeagle01
  • 开始时间 开始时间
L

lmeagle01

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手帮解决以下,问题如下:<br>~~~~~~~~~dll文件代码为:~~~~~~~~~~~~~<br>function DealErr(var errmsg:string;errNum:integer;errUnit:string;errMan:string):integer;stdcall;<br>var<br>&nbsp; frm_DealErr:Tfrm_DealErr;<br>begin<br>&nbsp; //Application.Initialize;<br>&nbsp; //Application.CreateForm(Tfrm_DealErr, frm_DealErr);<br><br>&nbsp; //frm_DealErr :=new Tfrm_DealErr(Application);<br><br>&nbsp; frm_DealErr:=Tfrm_DealErr.Create(Application);<br>&nbsp; Result:=0;<br><br>&nbsp; frm_DealErr.lErrNum.Caption:=IntToStr(errNum);<br>&nbsp; frm_DealErr.mErrText.Lines.Add(errmsg);<br><br>&nbsp; frm_DealErr.LogErr(errNum, errmsg, errUnit, errMan);<br>&nbsp; frm_DealErr.ShowModal;<br><br>&nbsp; Result:=frm_DealErr.frmResult;<br>&nbsp; DealErr:=Result;<br>&nbsp; frm_DealErr.Free;<br>// &nbsp;return Result;<br>end;<br>exports<br>&nbsp; &nbsp;DealErr;<br>begin<br>end.<br>dll文件内容主要就是那个函数<br>~~~~~~~~~~~~~~~~~下面是调用~~~~~~~~~~~~~~~~~~~~~~<br>procedure TForm1.Button1Click(Sender: TObject);<br>type<br>&nbsp; &nbsp; TDealErr=FUNCTION(errmsg:string;errNum:integer;errUnit,errMan:string):Integer;StdCall;<br>var<br>&nbsp; Th:THandle;<br>&nbsp; DealErr:TDealErr;<br>begin<br>&nbsp; Th:=LoadLibrary('DllUnit.dll');<br>&nbsp; if Th&gt;0 then<br>&nbsp; begin<br>&nbsp; &nbsp; try<br>&nbsp; &nbsp; &nbsp; @DealErr:=GetProcAddress(Th,'DealErr');<br>&nbsp; &nbsp; if not (@DealErr=nil) then begin<br>&nbsp; &nbsp; &nbsp; DealErr('ASDFA', 21, trim(Form1.Caption), 'ASDF'); {调用TestC函数}<br>&nbsp; &nbsp; end else<br>&nbsp; &nbsp; &nbsp; ShowMessage('函数没有找到');<br>&nbsp; &nbsp; finally<br>&nbsp; &nbsp; &nbsp; FreeLibrary(Th); {释放DLL}<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end;<br>~~~~~~~~结果报错~~~~~~~~~~~~<br>出现这种错误:尚未调用CoInitialize。<br>这是怎么回事,请高手帮助解答一下,如果觉得分不够,可再加!!!
 
use ComObj<br>手动调用CoInitialize。<br>
 
to kingdeezj<br>不太明白,能说的详细些吗,谢谢了[:)]
 
高手帮解答,都看看好吗
 
var<br>DealErr : tfarproc;<br>即可
 
to zct99<br>不行呀,那样的话,delphi编译不通过了
 
高手快来呀
 
你是不是在Tfrm_DealErr类中,使用了com组件,CoInitialize是使用com组件必须要调用的一个函数。
 
TO YANGWEI0308<br>我调用的frm_DealErr,就是一个窗体,它只用了DB, ADODB,就是为了操作数据库,没用别的
 
请大家也都帮看看,谢谢了
 
高手都哪去了
 
我的问题不是很难吧
 
????????????????????????????
 
送分也这么难吗
 
你这个人真是讨厌,你真的认为别人就有义务回答你的问题?不要过分依赖别人,不如靠自己把。
 
ADO就是一组com组件,你肯定是那里出问题了,不如改用ADOQuery,简单好用,不要直接调用ADO 的API函数。
 
to YANGWEI0308<br>我不是觉得大家有义务回答我,而我自己也是会的话就帮助解答,而且我也说了,是给分的,再说,这个论坛不就是这个目的吗,有问题大家讨论帮助,而我也确实是不会呀,不然能急成这样吗?<br>unit CommErrDeal;<br><br>interface<br><br>uses<br>&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br>&nbsp; Dialogs, DB, ADODB, StdCtrls, Buttons, ExtCtrls;<br><br>type<br>&nbsp; Tfrm_DealErr = class(TForm)<br>&nbsp; &nbsp; Label1: TLabel;<br>&nbsp; &nbsp; Image1: TImage;<br>&nbsp; &nbsp; Label2: TLabel;<br>&nbsp; &nbsp; lErrNum: TLabel;<br>&nbsp; &nbsp; Label4: TLabel;<br>&nbsp; &nbsp; Bevel1: TBevel;<br>&nbsp; &nbsp; mErrText: TMemo;<br>&nbsp; &nbsp; BitBtn1: TBitBtn;<br>&nbsp; &nbsp; BitBtn2: TBitBtn;<br>&nbsp; &nbsp; ADOConnection1: TADOConnection;<br>&nbsp; &nbsp; procedure BitBtn1Click(Sender: TObject);<br>&nbsp; &nbsp; procedure BitBtn2Click(Sender: TObject);<br>&nbsp; &nbsp; procedure FormCreate(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; &nbsp; &nbsp; frmResult:integer;<br><br>&nbsp; &nbsp; &nbsp; sp:TADOStoredProc;<br>我用的是TADOStoredProc,自己动态创建的,有什么问题吗
 
急呀,盼回复
 
急盼回复,请高手解答,分不够,可以再加
 
高手需要的是好问题,而不是分!
 
后退
顶部