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

StrToInt 已轉換但出現錯誤

答題得分者是:careychen
cod3339
一般會員


發表:27
回覆:15
積分:8
註冊:2004-12-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-04 12:40:06 IP:58.99.xxx.xxx 訂閱
以下是我分晰一行字串並取出字串中的數值,最後再把數值相加,但在price = StrToInt(result[i][1]);
出現錯誤訊息 : "這並不是int "
請問各位這問題出在那?


[code cpp]
String s="";
String desName="";//設計師編號
String result[10][2];//最多服務項目可以十種[0編號][1價錢]
int price = 0;//總價錢
int tempP = 0;

for(int i =0;i s="";
s = ListBox2->Items->Strings[i 1];
result[i][0] = s.SubString(1,s.Pos(" ")).c_str();//取得編號
s = s.SubString(result[i][0].Length() 12,s.Length()-result[i][0].Length());
//空格為十二個
result[i][1] = s.SubString(1,s.Pos(" ")).c_str();
price = StrToInt(result[i][1]); / / <==問題點,明明已轉成 int 為何還會出現,這不是int 的錯誤訊息
}

[/code]
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-04 12:48:31 IP:210.208.xxx.xxx 訂閱
(1)建議在轉換的時候,不要直接用 StrToInt,改用 TryStrToInt,它會幫你檢查字串是否可以轉換,例如:

[code cpp]
AnsiString a1="123";
AnsiString a2="abc";
int i1, i2;
if(TryStrToInt(a1, i1))
{
ShowMessage("succeeded");
ShowMessage(i1);
}
else
{
ShowMessage("failed");
}
if(TryStrToInt(a2, i2))
{
ShowMessage("succeeded");
}
else
{
ShowMessage("failed");
ShowMessage(a2);
}
[/code]

(2)會發生錯誤,通常是你要轉換的字串,沒有辦法轉換成數值,建議你再檢查要轉換的字串,是否會有這種情況發生
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
編輯記錄
RaynorPao 重新編輯於 2008-09-04 12:49:18, 註解 無‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-04 12:48:36 IP:218.210.xxx.xxx 訂閱
也許 Result [i][1] 是空字串或是非數字字串也不一定

改用 StrToIntDef(Result[i][1], 0) 試試 【後面那個 0 就自己改吧,那個是當轉換失敗時會回傳的數字】
------
價值的展現,來自於你用哪一個角度來看待它!!
cod3339
一般會員


發表:27
回覆:15
積分:8
註冊:2004-12-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-04 14:24:25 IP:58.99.xxx.xxx 訂閱
1.我剛試過兩位大大的方法,都是相同的結果 - 轉換失敗。
這個原因有點奇怪,因為我在 String result[10][2]; 是宣告為 String
然後再用轉 StrToInt()轉型失敗。

2.我要轉型的內容,有用Label->caption 看過例 :"199" 、"299" 之類,並未發現非數值字串
, 用 (int ) result[0][1]; //compiler 是無法過的,好像是不能直接轉之類

不知各位有遇過相同的經驗,或是解決方法嗎???
還是有其他轉型的方式,可以把 String 轉型成 int?
編輯記錄
cod3339 重新編輯於 2008-09-04 14:32:27, 註解 無‧
cod3339 重新編輯於 2008-09-04 14:36:50, 註解 無‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-04 15:01:40 IP:218.210.xxx.xxx 訂閱
那你要不要試試再宣告個變數,先把   轉換的結果丟到變數裡,再來用 

Price = 變數;
------
價值的展現,來自於你用哪一個角度來看待它!!
cod3339
一般會員


發表:27
回覆:15
積分:8
註冊:2004-12-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-09-04 15:50:26 IP:58.99.xxx.xxx 訂閱
還是不行,執行時一樣出現 "120 ",is  not a valid integer value

當我仔細看錯誤訊息時,看到原來是"120 "後面有多加一個" "空格,
我的媽呀!!!寫程式真的不能不小心,小細節也不能放過。
問題解決了,感謝各位
編輯記錄
cod3339 重新編輯於 2008-09-04 15:54:11, 註解 無‧
系統時間:2024-03-28 19:06:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!