請問EditChange的問題? |
尚未結案
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
void __fastcall TForm1::Edit6Change(TObject *Sender) { extern double a[200][2]; extern double x[200]; extern int num; if (Edit6->Text==""||Edit6->Text=="-") { Edit9->Text=""; return; } double input=StrToFloat(Edit6->Text); double result; for (int i=0;i<=num-2;i ) { if (input>=a[i][0]&&inputText=FloatToStr(result); }下面的for敘述是計算過程,如果測試0以上的值都沒有問題,但是在測試負值時,才輸入負號就出現error,所以必須先輸入數字再輸入負號,但我在前面已經設下if的條件了,為何還是不能處理這問題,可以請教一下各位先進嗎,謝謝!! |
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
|
windblown
中階會員 發表:0 回覆:117 積分:98 註冊:2003-11-14 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
se0528 您好: 我測試過您的程式碼,先輸入 "-" 號時並不會出現錯誤,您的問題可能不是出在這裡,您再檢查看看是否 Edit6 有設置其它的相關事件處理?例如 OnKeyDown, OnKeyUp, OnKeyPress 等。 另外您應該要檢查並限制輸入的字元,如果輸入的字元含有空白字元等 "非數字" 的字元時,就會出現錯誤,對於這個動作可以參考下列這篇,我回覆其他網友的作法中的 OnKeyPress: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=64476 發表人 - RedSnow 於 2005/05/12 13:19:50
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
se0528 您好: 我再次試過的結果,依然沒有發生問題,無論是先輸入減號號,或是先輸入數字後再到前方輸入減號,結果都是一樣的,因此我還是覺得您可能在無意中輸入了減號、小數點及數字以外的字元。 可否請您按下列方式做個測試: 1. 確認一下 Edit6 的內容在程式啟動時是完全空的 (Edit6->Text = "";)。 2. 增加一個 OnKeyPress 事件如下所示:
void __fastcall TForm1::Edit6KeyPress(TObject *Sender, char &Key) { if(Key > 26 && (Key < '0' || Key >'9') && (Key != '-' || Edit6->Text.Length() > 0 && Edit6->SelLength != Edit6->Text.Length()) && (Key != '-' || Edit6->SelStart > 0 || Edit6->Text.Pos('-') != 0) && (Key != '.' || Edit6->Text.Pos('.') != 0)){ Key = NULL; } }這樣子應該可以確保不會輸入 "會導致錯誤" 的字元,看看是否能解決您的問題? 發表人 - RedSnow 於 2005/05/12 20:30:48 |
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
我試了!!但是出現
[C Error] Unit1.cpp(498): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(498): E2293 ) expected
[C Error] Unit1.cpp(498): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(498): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(498): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(499): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(499): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(500): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(500): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(501): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(501): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(501): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(501): E2129 Character constant too long (or empty)
[C Error] Unit1.cpp(505): E2377 If statement missing )
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
if(Key > 26 && (Key < ''0'' || Key >''9'') && (Key != ''-'' || Edit6->Text.Length() > 0 && Edit6->SelLength != Edit6->Text.Length()) && (Key != ''-'' || Edit6->SelStart > 0) && (Key != ''.'' || Edit6->Text.Pos(''.'') != 0)){ Key = NULL; }錯誤訊息停在第一行,在 (Key < ''0'' || Key >''9'') 的 < 符號右邊 !!謝謝 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
我貼上來的資料如下:
if(Key > 26 && (Key < '0' || Key >'9') && (Key != '-' || Edit6->Text.Length() > 0 && Edit6->SelLength != Edit6->Text.Length()) && (Key != '-' || Edit6->SelStart > 0 || Edit6->Text.Pos('-') != 0) && (Key != '.' || Edit6->Text.Pos('.') != 0)){ Key = NULL; }您貼上來的怎麼會變成這個樣子: if(Key > 26 && (Key < ''0'' || Key >''9'') && (Key != ''-'' || Edit6->Text.Length() > 0 && Edit6->SelLength != Edit6->Text.Length()) && (Key != ''-'' || Edit6->SelStart > 0) && (Key != ''.'' || Edit6->Text.Pos(''.'') != 0)){ Key = NULL; }我的判斷式裡邊用的全部都是一個單引號 ',您貼上來的卻全部都變成了兩個單引號 ''? 請您將連續兩個單引號的地方全部改成一個單引號,然後再試試看。 附註:Key 是 char 型態,因此比對的字元都是使用單引號括住,不能用雙引號,當然也不能是兩個單引號 (沒有這種標示方式)。 發表人 - RedSnow 於 2005/05/12 23:05:35 |
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
我已經改成這樣了
if(Key > 26 && (Key < "0" || Key >"9") && (Key != "-" || Edit6->Text.Length() > 0 && Edit6->SelLength != Edit6->Text.Length()) && (Key != "-" || Edit6->SelStart > 0 || Edit6->Text.Pos("-") != 0) && (Key != "." || Edit6->Text.Pos(".") != 0)){ Key = NULL;現在出現 [C Error] Unit1.cpp(499): E2034 Cannot convert 'char' to 'char *' [C Error] Unit1.cpp(499): E2034 Cannot convert 'char' to 'char *' [C Error] Unit1.cpp(500): E2034 Cannot convert 'char' to 'char *' [C Error] Unit1.cpp(501): E2034 Cannot convert 'char' to 'char *' [C Error] Unit1.cpp(502): E2034 Cannot convert 'char' to 'char *' [C Error] Unit1.cpp(505): E2134 Compound statement missing } 在跟剛剛相同的位置上 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
您的程式很大嗎?如果不大的話,可以直接貼上來,要不然就上傳到 "會員求助程式檔案上傳區" 好了,上傳的方式如下:
1. 點選下列連結:
http://delphi.ktop.com.tw/post.asp?method=Topic&FORUM_ID=97&CAT_ID=31&Forum_Title=%B7%7C%AD%FB%A8D%A7U%B5%7B%A6%A1%C0%C9%AE%D7%A4W%B6%C7%B0%CF 2. 找到畫面上標示著 "上傳檔案:" 字樣的地方,然後點選其右方標示著 "瀏覽..." 字樣的按紐。 3. 使用一般我們開啟檔案的操作方式來找您電腦上的檔案,點選欲上傳的檔案後點擊選檔視窗上的 "開啟" 按紐。 4. 記得圈選主題分類、程式語言項目的內容,並在主題欄內填上適當文字。 5. 往下找到標示著 "存入新主題" 的按鈕,點擊該按鈕即可。
我還沒上傳過檔案,請您仔細瀏覽上傳頁面上的各個項目與標示,以確保我上述的簡述沒有遺漏重要步驟。 我使用的是 BCB4,或許與 BCB6 有些許差異,但我會試看看,希望能幫您找出問題的所在。 因為我自己測試都沒有問題,因此請您說明您程式發生問題時的測試步驟為何?好讓我有個測試的方向。 發表人 - RedSnow 於 2005/05/13 00:29:38
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=70890 你好,我已經將檔案上傳的上述位置了,真的真的很感謝你肯花時間幫我這個初學者的忙,謝謝你!!檔案中的程式已經按照你教我的方式多加了OnKeyPress 的敘述,不過我剛先前一樣只要在 Edit6 中才輸入"-"號,便出現
"-" is not a floating point value 的訊息,並不會如預期避掉這個錯誤,換句話說,當我想要測試帶負號的數值時,被迫必須先打數字的部分,在到最前面打上負號,才可以求出內插值,謝謝!!
!!
|
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
se0528, 你原先所PO出來的CODE跟你完整的CODE就有不同的地方,你的問題出在標示紅色的地方
if (Edit6->Text==""||StrToFloat(Edit6->Text)>a[num-1][0] 0.000000000001||StrToFloat(Edit6->Text)Text=="-") { Edit9->Text=""; return; }不應該把紅色的部分放在這個判斷式裡,要放在之後再判斷. |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
se0528 您好: 我查看過您的程式碼了,您程式內 Edit6 物件的 OnChange 事件中的判斷式已經不是像您在此處貼出來的那個樣子了,原先的 OnChange 事件中的判斷敘述如下:
if (Edit6->Text==""||Edit6->Text=="-") { Edit9->Text=""; return; }但是您上傳檔案 Edit6 的 OnChange 事件中的判斷式則如下: if (Edit6->Text==""||StrToFloat(Edit6->Text)>a[num-1][0] 0.000000000001||StrToFloat(Edit6->Text)Text=="-") { Edit9->Text=""; return; }這根本就不一樣,判斷後的結果自然也不同,我不知道您加上去的那些判斷條件的用途為何?但是我建議您將該判斷式拆成兩段來處理,例如: if (Edit6->Text==""||Edit6->Text=="-") { Edit9->Text=""; return; } if (StrToFloat(Edit6->Text)>a[num-1][0] 0.000000000001||StrToFloat(Edit6->Text)Text=""; return; }如果您再發生一些錯誤的狀況時,請千萬要說明清楚,否則大家會被搞得一頭霧水,同時也會延誤您自己解決問題的時間,最保險的作法就是將發生問題當時的相關程式碼重新貼上來,然後將操作過程與發生錯誤的狀況描述清楚,這樣子會比較好。 |
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
se0528
一般會員 發表:13 回覆:22 積分:7 註冊:2005-05-04 發送簡訊給我 |
|
jimmy_and_you
初階會員 發表:20 回覆:74 積分:33 註冊:2003-05-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |