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

TStringList 分割後會有空白的陣列

尚未結案
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-03 18:07:47 IP:202.39.xxx.xxx 未訂閱
先看程式碼:
  TStringList* oldList = new TStringList();
  String tmp = "ShoV=true,ClPg=asdf,";
  
  oldList->DelimitedText = ",";
  oldList->CommaText = tmp;
  Memo1->Lines->Add("oldList->Count = "   (String)oldList->Count );
oldList->Count = 3
  Memo1->Lines->Add("oldList->Text = "   oldList->Text);
oldList->Text = ShoV=true
ClPg=asdf
這一行是NULL
為什麼 oldList->Count 會有 4個呢... 照理說,oldList 的內容應該如下,怎麼看也是 3個: oldList->Strings[0] = "ShoV=true" oldList->Strings[1] = "ClPg=asdf" oldList->Strings[2] = NULL; 麻煩先進指導…謝謝…< >< >< >< >< >< >
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-03 18:49:07 IP:61.231.xxx.xxx 未訂閱
引言: 先看程式碼:
  TStringList* oldList = new TStringList();
  String tmp = "ShoV=true,ClPg=asdf,";
  
  oldList->DelimitedText = ",";
  oldList->CommaText = tmp;
  Memo1->Lines->Add("oldList->Count = "   (String)oldList->Count );
oldList->Count = 3
  Memo1->Lines->Add("oldList->Text = "   oldList->Text);
oldList->Text = ShoV=true
ClPg=asdf
這一行是NULL
為什麼 oldList->Count 會有 4個呢... 照理說,oldList 的內容應該如下,怎麼看也是 3個: oldList->Strings[0] = "ShoV=true" oldList->Strings[1] = "ClPg=asdf" oldList->Strings[2] = NULL; 麻煩先進指導…謝謝…< >< >< >< >< >< >
您所列出來的結果不就是 3 了嗎? oldList->Count = 3 您的問題是什麼呢? 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
artist1002
高階會員


發表:2
回覆:155
積分:151
註冊:2002-09-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-03 18:59:43 IP:211.76.xxx.xxx 未訂閱
引言: 先看程式碼:
  TStringList* oldList = new TStringList();
  String tmp = "ShoV=true,ClPg=asdf,";
  
  oldList->DelimitedText = ",";
  oldList->CommaText = tmp;
  Memo1->Lines->Add("oldList->Count = "   (String)oldList->Count );
oldList->Count = 3
  Memo1->Lines->Add("oldList->Text = "   oldList->Text);
oldList->Text = ShoV=true
ClPg=asdf
這一行是NULL
為什麼 oldList->Count 會有 4個呢... 照理說,oldList 的內容應該如下,怎麼看也是 3個: oldList->Strings[0] = "ShoV=true" oldList->Strings[1] = "ClPg=asdf" oldList->Strings[2] = NULL; 麻煩先進指導…謝謝…< >< >< >< >< >< >
嗯... 分離字串應該是這樣吧?
  oldList->Delimiter = ",";
  oldList->DelimitedText = tmp;
這樣才會用","幫你分一行一行的...
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-03 22:54:38 IP:202.39.xxx.xxx 未訂閱
to artist1002: 怪了…不過小弟的確是這樣就可以用的 我是用 oldList->CommaText = tmp; 小弟回家再試一下 artist1002 兄的方法 感謝幫忙小弟解決問題... 發表人 - shinnuei 於 2003/10/04 00:50:43
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-04 00:44:13 IP:61.221.xxx.xxx 未訂閱
不好意思,原先是沒搞懂 Delimiter、DelimitedText 和 CommaText 的用法, 原來用 CommaText時,就是預設用 ',' 去分割字串…所以不用設定 Delimiter。 現在把程式改成用 DelimitedText 的做法…程式碼如下:
  TStringList* oldList = new TStringList();
  int pos;
  String arg1,arg2;
  oldList->Delimiter = ',';
  oldList->DelimitedText = Edit1->Text;
  Memo1->Lines->Add("oldList->Count = " + (String)oldList->Count );
  Memo1->Lines->Add("oldList->Text = " + oldList->Text);
  for(int i=0 ; iCount ; i++)
  {
    pos = oldList->Strings[i].Pos("=");
    arg1 = oldList->Strings[i].SubString(0,pos-1);
    arg2 = oldList->Strings[i].SubString(pos+1,oldList->Strings[i].Length()-pos);
    Memo1->Lines->Add("i = " + (String)i + ", arg1 = " + arg1 + ",arg2 = " + arg2);
  }
結果如下:    oldList->Count = 3
oldList->Text = ShoV=true
ClPg=aassddff    i = 0, arg1 = ShoV,arg2 = true
i = 1, arg1 = ClPg,arg2 = aassddff
i = 2, arg1 = ,arg2 =     
雖然是一樣的結果…但是用法正確多了… 另外,3個不就是 0,1,2 嗎…我看我真的是頭暈了… 謝謝兩位的指導…不過分數實在是很難給… 一個指出我頭暈時的錯誤,一位讓我知道正確的用法… 這個比我的問題還要困難… 發表人 -
系統時間:2024-05-18 20:31:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!