access violation |
答題得分者是:P.D.
|
bookworm
中階會員 發表:63 回覆:161 積分:82 註冊:2002-08-03 發送簡訊給我 |
各位先進:
小弟學寫程式的時候,常常會遇到access violation的錯誤
我把程式碼放在下面
procedure TDataModule1.ADOTable0AfterScroll(DataSet: TDataSet);
begin
if adotable0.FieldByName('dateout').AsString='' then
form3.speedbutton1.visible:=true
else
form3.SpeedButton1.Visible:=false;
form3.DateTimePicker2.visible:=true;
end;
我想在adotable0移動資料的時候去判斷有些功能是不是可讓使用者用
如果沒有else以下三行,程式是可以跑,只是speedbutton不會聽話
那為什麼加了else,反而會出現一堆錯誤呢?
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 各位先進: 小弟學寫程式的時候,常常會遇到access violation的錯誤 我把程式碼放在下面 procedure TDataModule1.ADOTable0AfterScroll(DataSet: TDataSet); begin if adotable0.FieldByName('dateout').AsString='' then form3.speedbutton1.visible:=true else form3.SpeedButton1.Visible:=false; form3.DateTimePicker2.visible:=true; end; 我想在adotable0移動資料的時候去判斷有些功能是不是可讓使用者用 如果沒有else以下三行,程式是可以跑,只是speedbutton不會聽話 那為什麼加了else,反而會出現一堆錯誤呢?1.Access Violation 一般是使用到不存在的物件或變數, 因為看你的程式是使用DataMoudle, 不知道你的DataModule 是否掛在自動Create或是要以程式來Create, 可能是你的DataModule沒有被正確的Create出來 2.如果你是要 else 以下兩個都要執行, 請加上紅色部份 else begin form3.SpeedButton1.Visible:=false; form3.DateTimePicker2.visible:=true; end; |
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
給你一個關於pascal寫作的好習慣建議,就是不管有幾行敘述最好用BEGIN END包來自己對別人都會很好,如
1.FOR I := 1 TO 10 DO BEGIN .......... END; 2.IF (I=1) THEN BEGIN .......... END ELSE IF (I=1) THEN BEGIN .......... END ELSE BEGIN .......... END; 3. WHILE NOT QUERY.EOF DO BEGIN .......... END;以上寫法並不會造成程式碼的負擔,但卻可讓維護的人對程式流程一目了然,不是很好嗎,而且也比較不會有程式邏輯上的錯誤 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |