不是精通delphiApplication,是普通delphi Application
解决方案 »
- 求助:代码行数问题
- 求助:如何获取StringGrid指定单元格的坐标值
- TChart的几个问题请教:1,bar类型的,为什么bar的头上也有横坐标的值呢(横坐标为时间,纵坐标为产量)
- 把一个窗体重载了create 的窗体为参数传送的问题,望高手提点
- 呼唤高手!异常处理!
- 求助一个用WebBrowser1控件做的浏览器问题???
- 线程问题!大家帮帮我吧!
- 请高手帮助....!!!
- 用这个程序2个小时就可以给出300分,送出源代码,请到sunyuzhe.363.net下载
- modal窗体的问题!
- 请教各位有关定义方面的问题!
- @@identity ,一个csdn里面没有解决的问题,高分求解,不够可以再加,谢谢!!!!!!
// createolobject....
CoUnInitialize;
试试
CoInitialize(nil);
// createolobject....
CoUnInitialize;
procedure TWebModule1.WebModule1GetDataAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var stmp:string;
Callobj:OleVariant;
f:textfile;
begin
stmp:=trim(request.Content);
stmp:=trim(copy(stmp,6,length(stmp)));
if length(stmp)=0 then exit; AssignFile(f,'c:\http.Log');
if FileExists('c:\http.Log') then Append(f) else rewrite(F);
Writeln(f, InterChangeLibrary+#13#10+stmp);
closefile(f); CoInitialize(nil);
CallObj:=CreateOleObject(InterChangeLibrary);
CallObj.Submit(stmp,'2.4');
CallObj:=Unassigned;
CoUnInitialize;
end;
我把写文件放在前文件就写出来了,放在后就写不出来了,我用普通delphi的应用程序调用,我那边的断点就激活了,但在这个isapi的dll中却全无反应,救命!
你在ISAPI中不能激活断点是因为在之前的语句中已经出现了Exception。
我判断比较大的可能是线程模型的冲突,如果可能的话你在一个普通得DelphiApp里面用线程调用你的对象看看是否还能正确?应该也是会出错的。例如:TComponentTestThread = class(TThread)
procedure Execute; override;
end;procedure TComponentTestThread.Execute;
var
v: Variant;
begin
CoInitializeEx(nil, COINIT_XXX); // or OleInitialize if you invoke OLE Services
try
v:=CreateOleObject(YourProgID);
v.CallYourMethod;
v:=Unassigned; // omittable but recommend for clarity
finally
CoUninitialize; // or OleUninitialize if it's by OleInitialize
end;
end;注意因为OLE不是thread safe的,所以OleInitialize只能够将所属线程声明为STA。但是CoInitializeEx可以指定所需的线程模型,STA或MTA(COINIT_APARTMENTTHREADED或COINIT_MULTITHREADED)。最好使用同你组件相同的线程模型以避免额外的marshal操作降低性能。BTW:1,用于通过IDispatch调用对象的CallObj变量不用声明成OleVariant, Variant就可以了。具体参考文档Index:OleVariant。2, 不是因为你的组件是Ole Automation的(支持IDispatch)就需要用OleInitialize,当不需要使用Ole服务时(如托拽支持)应该仅用CoInitialize(Ex)以避免额外的系统开销。
急!谢谢!