如何避免程式自動結束 |
尚未結案
|
shiungyi
一般會員 發表:14 回覆:33 積分:9 註冊:2003-05-16 發送簡訊給我 |
dear all
小弟設計一程序,update recorder to database,理論上應該是update完後程式繼續執行,然而此程式卻在update完後自動關閉,請問到底是那理出錯 以下是原始碼" begin
tempstr:=TStringList.create;
try
tempstr.LoadFromFile('d:\cis_temp1\fmedf0.txt');//欲轉入文字檔
tempstr.SaveToFile('d:\cisbackup\test.txt');//欲轉存文字檔
DeleteFile('d:\cis_temp1\fmedf0.txt');//欲刪除文字檔
with Query1 do begin
close;
SQL.Clear;//清空QUERY1
end;
for j:=0 to tempstr.Count-1 do
begin
**********
**********
Query1.ExecSQL;
end;
except
end;
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: dear all 小弟設計一程序,update recorder to database,理論上應該是update完後程式繼續執行,然而此程式卻在update完後自動關閉,請問到底是那理出錯 以下是原始碼" begin tempstr:=TStringList.create; try tempstr.LoadFromFile('d:\cis_temp1\fmedf0.txt');//欲轉入文字檔 tempstr.SaveToFile('d:\cisbackup\test.txt');//欲轉存文字檔 DeleteFile('d:\cis_temp1\fmedf0.txt');//欲刪除文字檔 with Query1 do begin close; SQL.Clear;//清空QUERY1 end; for j:=0 to tempstr.Count-1 do begin ********** ********** Query1.ExecSQL; end; except end;1.假設這段程式碼是你所有程式的內容(不含delphi自動產生), 也就是說 你只有一支程式叫unit1而且是main form, 一個button來做這件事 2.因為你加了try...except, 而且except 沒有任何攔截訊息運作, 所以我猜 想不是因為做完而結束, 而是在 try...except中有發生update的錯誤, 因為 你用了except來攔截錯誤, 但你又沒有任何錯誤如何處理, 所以自然程式因 發生錯誤而跳開, 但因為又是主程式, 當然程式就自動結束了! 你可以把 try...except先拿掉看是否有執行上錯誤, 或在except下加入一些 message例如 try ... except on E:Exception do ShowMessage(E.Message); end; 以上是我大膽假設~~~ |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
shiungyi
一般會員 發表:14 回覆:33 積分:9 註冊:2003-05-16 發送簡訊給我 |
var
Form1: TForm1;
rclock,pmin,psec: integer; implementation {$R *.DFM} procedure TForm1.Timer1Timer(Sender: TObject);
var
tempstr:TStringList;
j:integer;
begin
inc(rclock);
dec(pmin);
psec:= 59;
if rclock = 60 then
begin
timer1.Enabled:=False;
timer2.Enabled:=False;
rclock:= 0;
pmin:= 59;
tempstr:=TStringList.create;
try
tempstr.LoadFromFile('d:\cis_temp1\fmedf0.txt');//欲轉入文檔
tempstr.SaveToFile('d:\cisbackup\test.txt');//欲轉存文字檔
DeleteFile('d:\cis_temp1\fmedf0.txt');//欲刪除文字檔
with Query1 do begin
close;
SQL.Clear;//清空QUERY1
end;
for j:=0 to tempstr.Count-1 do
begin
*
*
*
if job_code= '1' then
begin Query1.ExecSQL; end
else if job_code = '3' then
begin
Query1.ExecSQL; end
else
showmessage('資料格式錯誤!!');
end;
except
end;
timer1.Enabled:=True;
timer2.Enabled:=True; end;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
rclock:= 0;
pmin:= 59;
psec:= 59;
end; procedure TForm1.Timer2Timer(Sender: TObject);
begin
dec(psec);
Edit1.Text:= IntToStr(pmin) ':' IntToStr(psec);
end; end 以上為整支程式的大概
剛剛我把
tempstr.SaveToFile('d:\cisbackup\test.txt');//欲轉存文字檔
的路徑打錯
程式雖然無法UPDATE DATEBASE 但是卻不會自動結束 按照P.D.兄的做法
其結果與原先一樣
程式自動結束
且無任何MESSAGE
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
shiungyi
一般會員 發表:14 回覆:33 積分:9 註冊:2003-05-16 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
shiungyi
一般會員 發表:14 回覆:33 積分:9 註冊:2003-05-16 發送簡訊給我 |
DEAR Justmade
更正後 begin
MessageBeep(0);
inc(rclock);
dec(pmin);
psec:= 59;
if rclock = 1 then
begin
timer1.Enabled:=False;
timer2.Enabled:=False;
rclock:= 0;
pmin:= 59;
tempstr:=TStringList.create;
try
tempstr.LoadFromFile('d:\cis_temp1\fmedf0.txt');//欲轉入文字檔
tempstr.SaveToFile('d:\cisbackup\test.txt');//欲轉存文字檔
DeleteFile('d:\cis_temp1\fmedf0.txt');//欲刪除文字檔 except
end;
timer1.Enabled:=True;
timer2.Enabled:=True; end;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
rclock:= 0;
pmin:= 59;
psec:= 59;
end; procedure TForm1.Timer2Timer(Sender: TObject);
begin
dec(psec);
Edit1.Text:= IntToStr(pmin) ':' IntToStr(psec);
end; end. 程式就不會自動結束
但仍不知錯誤何在
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
shiungyi
一般會員 發表:14 回覆:33 積分:9 註冊:2003-05-16 發送簡訊給我 |
[quote]
這即是問題很大可能出在 你 Query 段的碼,你若不貼出那些碼很難找錯。
begin
MessageBeep(0);
inc(rclock);
dec(pmin);
psec:= 59;
if rclock = 1 then
begin
timer1.Enabled:=False;
timer2.Enabled:=False;
rclock:= 0;
pmin:= 59;
tempstr:=TStringList.create;
try
tempstr.LoadFromFile('d:\cis_temp1\fmedf0.txt');//欲轉入文字檔
tempstr.SaveToFile('d:\cisbackup\test.txt');//欲轉存文字檔
DeleteFile('d:\cis_temp1\fmedf0.txt');//欲刪除文字檔
with Query1 do begin
close;
SQL.Clear;//清空QUERY1
end;
for j:=0 to tempstr.Count-1 do
begin
p_code:=copy(tempstr[j],15,2);//P_CODE(文字檔第13字元開始去,取2字元)
p_kind:=copy(tempstr[j],9,2);//P_KIND(文字檔第9字元開始去,取2字元)
p_date:=copy(tempstr[j],1,8);//P_DATE(文字檔第1字元開始去,取8字元)
bra_code:=copy(tempstr[j],11,4);//BRA_CODE(文字檔第9字元開始去,取4字元)
job_code:=copy(tempstr[j],17,1);//出口別 if job_code= '1' then
begin
curr:=copy(tempstr[j],18,3);//幣別
bank:=copy(tempstr[j],21,4);//銀行別
ser_no:=copy(tempstr[j],25,5);//流水號
top:=copy(tempstr[j],30,1);//付款方式
date:=copy(tempstr[j],31,8);//結匯日期
data_no:=copy(tempstr[j],39,12);//單據編號
ban_idno:=copy(tempstr[j],51,10);//統一編號/身分證字號
name:=copy(tempstr[j],61,6);//英文名稱縮寫
kind_code:=copy(tempstr[j],67,1);//交易日報類別
data_kind:=copy(tempstr[j],68,1);//單據別
data_atm_sign:=copy(tempstr[j],69,1);//金額正負符號
data_atm_i:=copy(tempstr[j],70,12);//金額(整數)
data_atm_d:=copy(tempstr[j],82,2);//金額(小數)
inst_amt_sign:=copy(tempstr[j],84,1);//利息正負符號
inst_amt_i:=copy(tempstr[j],85,12);//利息(整數)
inst_amt_d:=copy(tempstr[j],97,2);//利息(小數)
ward_split:=copy(tempstr[j],99,1);//交易性質註記
cntry:=copy(tempstr[j],100,2);//國家別
nt_exchg_rate_i:=copy(tempstr[j],102,3);//外幣對新台幣匯率(整數)
nt_exchg_rate_d:=copy(tempstr[j],105,8);//外幣對新台幣匯率(小數)
swift_bank:=copy(tempstr[j],113,11);//大陸付款銀行,SWIFT-CODE
oppo_bank:=copy(tempstr[j],124,60);//大陸付款銀行全名
data_source:=copy(tempstr[j],184,1);//資料來源
data_atm:=data_atm_i '.' data_atm_d;
inst_amt:=inst_amt_i '.' inst_amt_d;
nt_exchg_rate:=nt_exchg_rate_i '.' nt_exchg_rate_d; Query1.Close;
Query1.SQL.Clear; Query1.SQL.ADD('insert into STBCFC ');
Query1.SQL.ADD(' values ( ');
Query1.SQL.ADD(QuotedStr(p_date) ', ');
Query1.SQL.ADD(QuotedStr(p_kind) ', ');
Query1.SQL.ADD(QuotedStr(bra_code) ', ');
Query1.SQL.ADD(QuotedStr(p_code) ', ');
Query1.SQL.ADD(QuotedStr(curr) ', ');
Query1.SQL.ADD(QuotedStr(bank) ', ');
Query1.SQL.ADD(QuotedStr(ser_no) ', ');
Query1.SQL.ADD(QuotedStr(top) ', ');
Query1.SQL.ADD(QuotedStr(date) ', ');
Query1.SQL.ADD(QuotedStr(job_code) ', ');
Query1.SQL.ADD(QuotedStr(data_no) ', ');
Query1.SQL.ADD(QuotedStr(ban_idno) ', ');
Query1.SQL.ADD(QuotedStr(name) ', ');
Query1.SQL.ADD(QuotedStr(kind_code) ', ');
Query1.SQL.ADD(QuotedStr(data_kind) ', ');
Query1.SQL.ADD(QuotedStr(data_atm_sign) ', ');
Query1.SQL.ADD(QuotedStr(data_atm) ', ');
Query1.SQL.ADD(QuotedStr(inst_amt_sign) ', ');
Query1.SQL.ADD(QuotedStr(inst_amt) ', ');
Query1.SQL.ADD(QuotedStr(ward_split) ', ');
Query1.SQL.ADD(QuotedStr(cntry) ', ');
Query1.SQL.ADD(QuotedStr(nt_exchg_rate) ', ');
Query1.SQL.ADD(QuotedStr(swift_bank) ', ');
Query1.SQL.ADD(QuotedStr(oppo_bank) ', ');
Query1.SQL.ADD(QuotedStr(data_source) ') ');
Query1.SQL.SaveToFile('c:\insert1.txt');
Query1.ExecSQL; end
else if job_code = '3' then
begin
curr:=copy(tempstr[j],18,3);//幣別
bank:=copy(tempstr[j],21,4);//銀行別
ser_no:=copy(tempstr[j],25,5);//流水號
rem_code:=copy(tempstr[j],30,1);//國外匯款人身份別
op_date:=copy(tempstr[j],31,8);//結匯日期
data_no:=copy(tempstr[j],39,12);//單據編號
ban_idno:=copy(tempstr[j],51,10);//統一編號/身分證字號
birth_date:=copy(tempstr[j],61,8);//出生日期
issur_date:=copy(tempstr[j],69,8);//居留證核發日期
exp_date:=copy(tempstr[j],77,8);//居留證有效日期
kind_code:=copy(tempstr[j],85,1);//交易日報類別
data_kind:=copy(tempstr[j],86,1);//單據別
data_atm_sign:=copy(tempstr[j],87,1);//金額正負符號
data_atm_i:=copy(tempstr[j],88,12);//金額(整數)
data_atm_d:=copy(tempstr[j],100,2);//金額(小數)
ward_split:=copy(tempstr[j],102,1);//交易性質註記
pclass:=copy(tempstr[j],103,3);//匯款分類
top:=copy(tempstr[j],106,1);//匯款方式
sub_code:=copy(tempstr[j],107,1);//匯款分類69X的細分類
cntry:=copy(tempstr[j],108,2);//匯款地國家別
no_rep_flag:=copy(tempstr[j],110,1);//有無申報書別
q_id:=copy(tempstr[j],111,2);//國內受款人身份別
natural:=copy(tempstr[j],113,1);//結售外匯性質
aprov_no_flag:=copy(tempstr[j],114,1);//有無專案核准公文號
spec_bank:=copy(tempstr[j],115,4);//指定銀行
docu_no:=copy(tempstr[j],119,7);//送件編號/持護照者之國籍別
nt_exchg_rate_i:=copy(tempstr[j],126,3);//外幣對新台幣匯率(整數)
nt_exchg_rate_d:=copy(tempstr[j],129,8);//外幣對新台幣匯率(小數)
oppo_name:=copy(tempstr[j],137,40);//國外匯款人名稱
swift_bank:=copy(tempstr[j],177,11);//國外匯款銀行SWIFT-CODE
oppo_bank:=copy(tempstr[j],188,60);//國外匯款銀行全名
data_source:=copy(tempstr[j],248,1);//資料來源
data_atm:=data_atm_i '.' data_atm_d;
nt_exchg_rate:=nt_exchg_rate_i '.' nt_exchg_rate_d; Query1.Close;
Query1.SQL.Clear; Query1.SQL.ADD('insert into STBCFB ');
Query1.SQL.ADD(' values ( '); Query1.SQL.ADD(QuotedStr(p_date) ', ');
Query1.SQL.ADD(QuotedStr(p_kind) ', ');
Query1.SQL.ADD(QuotedStr(bra_code) ', ');
Query1.SQL.ADD(QuotedStr(p_code) ', ');
Query1.SQL.ADD(QuotedStr(curr) ', ');
Query1.SQL.ADD(QuotedStr(bank) ', ');
Query1.SQL.ADD(QuotedStr(ser_no) ', ');
Query1.SQL.ADD(QuotedStr(rem_code) ', ');
Query1.SQL.ADD(QuotedStr(op_date) ', ');
Query1.SQL.ADD(QuotedStr(job_code) ', ');
Query1.SQL.ADD(QuotedStr(data_no) ', ');
Query1.SQL.ADD(QuotedStr(ban_idno) ', ');
Query1.SQL.ADD(QuotedStr(birth_date) ', ');
Query1.SQL.ADD(QuotedStr(issur_date) ', ');
Query1.SQL.ADD(QuotedStr(exp_date) ', ');
Query1.SQL.ADD(QuotedStr(kind_code) ', ');
Query1.SQL.ADD(QuotedStr(data_kind) ', ');
Query1.SQL.ADD(QuotedStr(data_atm_sign) ', ');
Query1.SQL.ADD(QuotedStr(data_atm) ', ');
Query1.SQL.ADD(QuotedStr(ward_split) ', ');
Query1.SQL.ADD(QuotedStr(pclass) ', ');
Query1.SQL.ADD(QuotedStr(top) ', ');
Query1.SQL.ADD(QuotedStr(sub_code) ', ');
Query1.SQL.ADD(QuotedStr(cntry) ', ');
Query1.SQL.ADD(QuotedStr(no_rep_flag) ', ');
Query1.SQL.ADD(QuotedStr(q_id) ', ');
Query1.SQL.ADD(QuotedStr(natural) ', ');
Query1.SQL.ADD(QuotedStr(aprov_no_flag) ', ');
Query1.SQL.ADD(QuotedStr(spec_bank) ', ');
Query1.SQL.ADD(QuotedStr(docu_no) ', ');
Query1.SQL.ADD(QuotedStr(nt_exchg_rate) ', ');
Query1.SQL.ADD(QuotedStr(oppo_name) ', ');
Query1.SQL.ADD(QuotedStr(swift_bank) ', ');
Query1.SQL.ADD(QuotedStr(oppo_bank) ', ');
Query1.SQL.ADD(QuotedStr(data_source) ') ');
Query1.SQL.SaveToFile('c:\insert3.txt');
Query1.ExecSQL; end
else if job_code= '5' then
begin
curr:=copy(tempstr[j],18,3);//幣別
bank:=copy(tempstr[j],21,4);//銀行別
ser_no:=copy(tempstr[j],25,5);//流水號
rem_code:=copy(tempstr[j],30,1);//國外匯款人身份別
op_date:=copy(tempstr[j],31,8);//結匯日期
data_no:=copy(tempstr[j],39,12);//單據編號
ban_idno:=copy(tempstr[j],51,10);//統一編號/身分證字號
birth_date:=copy(tempstr[j],61,8);//出生日期
issur_date:=copy(tempstr[j],69,8);//居留證核發日期
exp_date:=copy(tempstr[j],77,8);//居留證有效日期
kind_code:=copy(tempstr[j],85,1);//交易日報類別
data_kind:=copy(tempstr[j],86,1);//單據別
data_atm_sign:=copy(tempstr[j],87,1);//金額正負符號
data_atm_i:=copy(tempstr[j],88,12);//金額(整數)
data_atm_d:=copy(tempstr[j],100,2);//金額(小數)
ward_split:=copy(tempstr[j],102,1);//交易性質註記
pclass:=copy(tempstr[j],103,3);//匯款分類
top:=copy(tempstr[j],106,1);//匯款方式
sub_code:=copy(tempstr[j],107,1);//匯款分類69X的細分類
cntry:=copy(tempstr[j],108,2);//匯款地國家別
no_rep_flag:=copy(tempstr[j],110,1);//有無申報書別
q_id:=copy(tempstr[j],111,2);//國內受款人身份別
natural:=copy(tempstr[j],113,1);//結售外匯性質
aprov_no_flag:=copy(tempstr[j],114,1);//有無專案核准公文號
spec_bank:=copy(tempstr[j],115,4);//指定銀行
docu_no:=copy(tempstr[j],119,7);//送件編號/持護照者之國籍別
nt_exchg_rate_i:=copy(tempstr[j],126,3);//外幣對新台幣匯率(整數)
nt_exchg_rate_d:=copy(tempstr[j],129,8);//外幣對新台幣匯率(小數)
oppo_name:=copy(tempstr[j],137,40);//國外匯款人名稱
swift_bank:=copy(tempstr[j],177,11);//國外匯款銀行SWIFT-CODE
oppo_bank:=copy(tempstr[j],188,60);//國外匯款銀行全名
account_no:=copy(tempstr[j],248,20);//國外受款人銀行帳號
data_source:=copy(tempstr[j],268,1);//資料來源
data_atm:=data_atm_i '.' data_atm_d;
nt_exchg_rate:=nt_exchg_rate_i '.' nt_exchg_rate_d; Close;
Query1.SQL.Clear;
Query1.SQL.Add('insert into STBCFD');
Query1.SQL.ADD(' values ( '); Query1.SQL.ADD(QuotedStr(p_date) ', ');
Query1.SQL.ADD(QuotedStr(p_kind) ', ');
Query1.SQL.ADD(QuotedStr(bra_code) ', ');
Query1.SQL.ADD(QuotedStr(p_code) ', ');
Query1.SQL.ADD(QuotedStr(curr) ', ');
Query1.SQL.ADD(QuotedStr(bank) ', ');
Query1.SQL.ADD(QuotedStr(ser_no) ', ');
Query1.SQL.ADD(QuotedStr(rem_code) ', ');
Query1.SQL.ADD(QuotedStr(op_date) ', ');
Query1.SQL.ADD(QuotedStr(job_code) ', ');
Query1.SQL.ADD(QuotedStr(data_no) ', ');
Query1.SQL.ADD(QuotedStr(ban_idno) ', ');
Query1.SQL.ADD(QuotedStr(birth_date) ', ');
Query1.SQL.ADD(QuotedStr(issur_date) ', ');
Query1.SQL.ADD(QuotedStr(exp_date) ', ');
Query1.SQL.ADD(QuotedStr(kind_code) ', ');
Query1.SQL.ADD(QuotedStr(data_kind) ', ');
Query1.SQL.ADD(QuotedStr(data_atm_sign) ', ');
Query1.SQL.ADD(QuotedStr(data_atm) ', ');
Query1.SQL.ADD(QuotedStr(ward_split) ', ');
Query1.SQL.ADD(QuotedStr(pclass) ', ');
Query1.SQL.ADD(QuotedStr(top) ', ');
Query1.SQL.ADD(QuotedStr(sub_code) ', ');
Query1.SQL.ADD(QuotedStr(cntry) ', ');
Query1.SQL.ADD(QuotedStr(no_rep_flag) ', ');
Query1.SQL.ADD(QuotedStr(q_id) ', ');
Query1.SQL.ADD(QuotedStr(natural) ', ');
Query1.SQL.ADD(QuotedStr(aprov_no_flag) ', ');
Query1.SQL.ADD(QuotedStr(spec_bank) ', ');
Query1.SQL.ADD(QuotedStr(docu_no) ', ');
Query1.SQL.ADD(QuotedStr(nt_exchg_rate) ', ');
Query1.SQL.ADD(QuotedStr(oppo_name) ', ');
Query1.SQL.ADD(QuotedStr(swift_bank) ', ');
Query1.SQL.ADD(QuotedStr(oppo_bank) ', ');
Query1.SQL.ADD(QuotedStr(account_no) ', ');
Query1.SQL.ADD(QuotedStr(data_source) ') ');
Query1.SQL.SaveToFile('c:\insert5.txt');
Query1.ExecSQL; end
else
showmessage('資料格式錯誤!!');
end;
except
end;
timer1.Enabled:=True;
timer2.Enabled:=True; end;
end;
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
shiungyi
一般會員 發表:14 回覆:33 積分:9 註冊:2003-05-16 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
shiungyi
一般會員 發表:14 回覆:33 積分:9 註冊:2003-05-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |