請問Substring傳回空字串? |
尚未結案
|
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
請問各位先進:
小子我有一段程式,在BCB6時執行正常
因故要在BCB5重寫,卻發現會傳回空字串,
請問原因為何?
Edit1輸入 16+3.2
void __fastcall TbuObtain::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_RETURN)
{
int pos = 0,len = 0,dot = 0;
String INO,a,b;
//pos = 3
pos = Edit1->Text.LastDelimiter(' ');
dot = Edit1->Text.LastDelimiter('.');
len = Edit1->Text.Length();
//下面這行傳回空字串 a = NULL
a = Edit1->Text.SubString(0,pos-1);
//下面這行傳回 b = 3.2
b = Edit1->Text.SubString(pos 1,len);
if(pos<1||(len-pos)<1||(dot0))
{
ShowMessage("請輸入正整數 浮點數");
Edit1->Clear();
bPlus = false;
bDot = false;
return;
}
try{
//下面因為 a = NULL 出錯
a.ToInt();
b.ToDouble();
}
catch(...){
ShowMessage("輸入內容錯誤,請輸入正整數 浮點數");
Edit1->Clear();
bPlus = false;
bDot = false;
return;
} }
檢查的結果程式好像沒錯,但是a值就是NULL
請問為何會這樣?
請問有沒有其他方法取代SubString? 發表人 - myboss 於 2004/05/22 13:29:40
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
pwipwi 兄你好:
我已經試過這方法了,可惜結果相同,
SubString就是讀不到
pos = Edit1->Text.LastDelimiter(' ');
dot = Edit1->Text.LastDelimiter('.');
len = Edit1->Text.Length();
AnsiString TempStr = Edit1->Text;
a = TempStr.SubString(0,pos-1); 當Edit1->Text輸入 16 3.2時
TempStr的值=16 3.2
a=null b=3.2
請問這是什麼情形?
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
引言: pwipwi 兄你好: 我已經試過這方法了,可惜結果相同, SubString就是讀不到 pos = Edit1->Text.LastDelimiter(' '); dot = Edit1->Text.LastDelimiter('.'); len = Edit1->Text.Length(); AnsiString TempStr = Edit1->Text; a = TempStr.SubString(0,pos-1); 當Edit1->Text輸入 16 3.2時 TempStr的值=16 3.2 a=null b=3.2 請問這是什麼情形?mybass你好: SubString的index是從1開始的,所以應該寫成 a = Edit1->Text.SubString(1,pos-1);bcb 5.0和6.0不同的地方在於bcb6.0在SubString的實作上, 當index是小於1時,就直接當作1來用,所以在bcb6上SubString(0,...) 會被直接當成SubString(1,...),bcb5則是直接回傳一個AnsiString()。 試試看,看結果正不正確。 |
myboss
一般會員 發表:25 回覆:42 積分:13 註冊:2004-01-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |