全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1524
推到 Plurk!
推到 Facebook!

有關IF THEN ELSE的問題

尚未結案
linkhanks
一般會員


發表:3
回覆:11
積分:2
註冊:2006-07-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-10 19:33:12 IP:60.248.xxx.xxx 訂閱

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if DirectoryExists(ADOTable1.FieldByName('目的').AsString) = true then
begin
Form1.hide;
ShellExecute(handle, PChar('open'),pchar(ADOTable1.FieldByName('執行').AsString),nil,nil, SW_SHOW);
end
else
begin
if MessageBox(Form1.Handle, '檔案不存在,是否下載?' , 'Dialog' ,MB_YESNO)=IDYES then
begin
Form1.hide;
if CopyDir(ADOTable1.FieldByName('來源').AsString, ADOTable1.FieldByName('目的').AsString) = true then
begin
ShellExecute(handle, PChar('open'),pchar(ADOTable1.FieldByName('執行').AsString),nil,nil, SW_SHOW);
end
else
begin
DelDir(ADOTable1.FieldByName('目的').AsString);
end

end
else
begin

MessageBox(Form1.Handle, '使用者停止下載...' , 'Message' ,MB_ICONASTERISK);

end
end

end;

各位前輩好~~小弟買書自學~~嘗試連結ACCESS資料庫取出檔案路徑~下載並執行~

但寫到這段一直無法解決~想破頭~也翻遍書(只有寫一點點)~還是一知半解~搞不懂~~

每次執行就是停在最後的 " end; " 這裡~~自知問題淺薄~非萬不得以不敢上來發問~~

實在因為周邊沒有人學DELPHI.........還望各位前輩海涵,提點一下小弟問題在哪裡~~

不勝感激~~~m (_ _) m

jhlin88
一般會員


發表:21
回覆:28
積分:9
註冊:2002-10-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-11 09:20:55 IP:219.87.xxx.xxx 未訂閱
看起來並不是假設語句似乎沒有問題,請問有出現什麼錯誤訊息?
------
JamesLin
adonis
高階會員


發表:140
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-11 09:34:37 IP:210.201.xxx.xxx 未訂閱

看不出有少 end ~~ 但我稍微整理了一下寫法,希望對你有幫助 ~

我也在學習中,若有錯謬請見諒 ~

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if DirectoryExists(ADOTable1.FieldByName('目的').AsString) = true then
begin
Form1.hide;
ShellExecute(handle, PChar('open'),pchar(ADOTable1.FieldByName('執行').AsString),nil,nil, SW_SHOW);
end
else
begin
if MessageBox(Form1.Handle, '檔案不存在,是否下載?' , 'Dialog' ,MB_YESNO)=IDYES then
begin
Form1.hide;
if CopyDir(ADOTable1.FieldByName('來源').AsString, ADOTable1.FieldByName('目的').AsString) = true
then ShellExecute(handle, PChar('open'),pchar(ADOTable1.FieldByName('執行').AsString),nil,nil, SW_SHOW)
else DelDir(ADOTable1.FieldByName('目的').AsString);
end
else MessageBox(Form1.Handle, '使用者停止下載...' , 'Message' ,MB_ICONASTERISK);
end;
end;

------
我也在努力學習中,若有錯謬請見諒。
linkhanks
一般會員


發表:3
回覆:11
積分:2
註冊:2006-07-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-11 14:32:41 IP:60.248.xxx.xxx 訂閱

===================引 用 文 章===================

看不出有少 end ~~ 但我稍微整理了一下寫法,希望對你有幫助 ~

我也在學習中,若有錯謬請見諒 ~

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if DirectoryExists(ADOTable1.FieldByName('目的').AsString) = true then
begin
Form1.hide;
ShellExecute(handle, PChar('open'),pchar(ADOTable1.FieldByName('執行').AsString),nil,nil, SW_SHOW);
end
else
begin
if MessageBox(Form1.Handle, '檔案不存在,是否下載?' , 'Dialog' ,MB_YESNO)=IDYES then
begin
Form1.hide;
if CopyDir(ADOTable1.FieldByName('來源').AsString, ADOTable1.FieldByName('目的').AsString) = true
then ShellExecute(handle, PChar('open'),pchar(ADOTable1.FieldByName('執行').AsString),nil,nil, SW_SHOW)
else DelDir(ADOTable1.FieldByName('目的').AsString);
end
else MessageBox(Form1.Handle, '使用者停止下載...' , 'Message' ,MB_ICONASTERISK);
end;
end;

首先謝謝你的回答~也感謝上一位的提醒~我忘了把訊息貼上來

我依造您的寫法改變後~會出現這樣的錯誤訊息~~[Error] Unit1.pas(337): ';' not allowed before 'ELSE'~位置是紅色的那一行

linkhanks
一般會員


發表:3
回覆:11
積分:2
註冊:2006-07-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-11 15:18:42 IP:60.248.xxx.xxx 訂閱

經由兩位的啟發~小弟已經試出來了~僅將結果貼上來參考參考~

也感謝兩位的提示給小弟思考方向~

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if DirectoryExists(ADOTable1.FieldByName('目的').AsString) = true then
begin
Form1.hide;
ShellExecute(handle, PChar('open'),pchar(Edit1.Text),nil,nil, SW_SHOW);
end
else
begin
SpeedButton1.Enabled:=False;
SpeedButton2.Enabled:=False;
if MessageBox(Form1.Handle, '檔案不存在,是否下載?' , 'Dialog' ,MB_YESNO)=IDYES then
begin
Form1.hide;
if CopyDir(ADOTable1.FieldByName('來源').AsString, ADOTable1.FieldByName('目的').AsString) = true then
begin
ShellExecute(handle, PChar('open'),pchar(Edit1.Text),nil,nil, SW_SHOW);
SpeedButton1.Enabled:=True;
SpeedButton2.Enabled:=True;
end
else
DelDir(ADOTable1.FieldByName('目的').AsString);
SpeedButton1.Enabled:=True;
SpeedButton2.Enabled:=True;
Form1.show;
end
else
MessageBox(Form1.Handle, '使用者停止下載...' , 'Message' ,MB_ICONASTERISK);
SpeedButton1.Enabled:=True;
SpeedButton2.Enabled:=True;
end

end;

linkhanks
一般會員


發表:3
回覆:11
積分:2
註冊:2006-07-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-07-11 15:30:04 IP:60.248.xxx.xxx 訂閱

ˊˋ不過雖然可以正常的執行了

if CopyDir(ADOTable1.FieldByName('來源').AsString, ADOTable1.FieldByName('目的').AsString) = true then
begin
ShellExecute(handle, PChar('open'),pchar(Edit1.Text),nil,nil, SW_SHOW);
SpeedButton1.Enabled:=True;
SpeedButton2.Enabled:=True;
end
else
DelDir(ADOTable1.FieldByName('目的路徑').AsString);
SpeedButton1.Enabled:=True;
SpeedButton2.Enabled:=True;
Form1.show;
end

DelDir的功能確時有時無~~傷腦筋~~再繼續研究研究~~^^

te_hsun
一般會員


發表:43
回覆:34
積分:20
註冊:2002-03-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-07-14 20:09:40 IP:61.216.xxx.xxx 未訂閱

盡量縮排對齊每個程序,方便閱讀及找錯誤。

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin

if True then
begin
//DoTrue(...);
SpeedButton1.Enabled:= True;

end
else
begin
//DoFalse(...);
SpeedButton1.Enabled:= False;

if True then
begin
//DoTrue(...);
SpeedButton1.Enabled:= True;

end;

if True then
SpeedButton1.Enabled:= True
else
SpeedButton1.Enabled:= False;

//DoOther(...);
end;

end;

系統時間:2024-05-02 9:21:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!