線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2032
推到 Plurk!
推到 Facebook!

當有資料更改時儲存並關閉後就會發生錯誤

答題得分者是:Mickey
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-16 11:02:20 IP:220.228.xxx.xxx 訂閱
各位前輩有個問題想請教:
本人的程式是由主程式呼叫dll檔.dll檔含一個dataModule .
dll元件及部份程式如下:

一,元件:
dataModule : TSQLConnection TSQLDataSet
dll: TDataSetProvider TClientDataSet TDBGrid TDataSource;

二,主程式呼叫方式如下:
try
LibHandle:=LoadLibrary(pchar( EmployeeManage.dll));
if LibHandle = 0 then begin
exit;
end;
@ExcuteFunc:=GetProcAddress(LibHandle,pchar(ShowEmployeeManageForm));
ExcuteFunc;
FreeLibrary(LibHandle);
except on e : exception do
end;
三.dll的部份程式:
unit UniEmployeeManage;
interface
uses
(省略)
procedure ShowEmployeeManageForm;export;
exports ShowEmployeeManageForm;

type
.
.
implementation

{$R *.dfm}

procedure ShowEmployeeManageForm;
begin
try
frmEmployeeManage:= TfrmEmployeeManage.Create(Application);
frmEmployeeManage.ShowModal;
except
end;
end;

procedure TfrmEmployeeManage.FormCreate(Sender: TObject);
begin
DataModule1 := TDataModule1.Create(Application);
..
..
..
end;

procedure TfrmEmployeeManage.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DataModule1.Free;
end;

問題是:在dll檔出現後,若有更新任何資料,儲存且關閉dll後,就會出現錯誤"應用程式發生例外:不明的軟體例外錯誤";
若沒有任何資料更新並儲存就不會有問題.

請各位幫忙解決,謝謝!!
編輯記錄
mingking0947 重新編輯於 2007-10-16 11:04:21, 註解 無‧
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-25 09:02:01 IP:218.163.xxx.xxx 訂閱
你好:

針對 DLL 中之全域變數 "Application"...應該是 呼叫此 DLL 的主程式...

所以...建議不要用Application 當 Owner( 因為不知"主程式"是否會盡到 Owner 的職責 )...

沒有 Owner 當然自己要處理乾淨.

試試看:

procedure ShowEmployeeManageForm;
begin
try
frmEmployeeManage:= TfrmEmployeeManage.Create(nil);
frmEmployeeManage.ShowModal;
FreeAndNil(frmEmployeeManage);
except
if frmEmployeeManage<>nil then FreeAndNil(frmEmployeeManage);
end;
end;

procedure TfrmEmployeeManage.FormCreate(Sender: TObject);
begin
DataModule1 := TDataModule1.Create(nil);
..
..
..
end;

procedure TfrmEmployeeManage.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DataModule1.SQLConnection1.Connected := False;
FreeAndNil(DataModule1);
end;
編輯記錄
Mickey 重新編輯於 2007-10-25 09:10:51, 註解 無‧
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-01 16:04:38 IP:220.228.xxx.xxx 訂閱
已解決,謝謝!!
wangccw
一般會員


發表:21
回覆:39
積分:17
註冊:2005-01-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-11-19 07:53:05 IP:219.71.xxx.xxx 訂閱
請問是如何解決的~~ 我也遇到相似的問題~~
mingking0947
一般會員


發表:30
回覆:32
積分:12
註冊:2005-07-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-11-24 09:52:22 IP:220.228.xxx.xxx 訂閱
時間太久,有點忘了.大約記得是和Owner()內放置的object有關.注意Mickey版主的說明應該就沒問題了.
祝你好運!!
系統時間:2024-04-26 3:42:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!