全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:737
推到 Plurk!
推到 Facebook!

請問該怎麼讀進一個特定格式的檔案呢

尚未結案
gooddess
一般會員


發表:7
回覆:2
積分:1
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-26 22:27:27 IP:61.64.xxx.xxx 未訂閱
請教各位賢達: 今有一個特定格式如下的檔案: Label:add r1,r2,r3;flag=1 sub r4,r6,r9; mux r3,r2,r1; 每一個字都有意義, 我該怎麼去讀取到每一個完整的字,例如: label,sub,mux呢 有想過用標點符號來做分隔,卻不太清楚詳細的做法 請各位賢達指點迷津,感激不盡!!!
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-27 09:08:14 IP:218.32.xxx.xxx 未訂閱
引言: 請教各位賢達: 今有一個特定格式如下的檔案: Label:add r1,r2,r3;flag=1 sub r4,r6,r9; mux r3,r2,r1; 每一個字都有意義, 我該怎麼去讀取到每一個完整的字,例如: label,sub,mux呢 有想過用標點符號來做分隔,卻不太清楚詳細的做法 請各位賢達指點迷津,感激不盡!!!
使用TStringList , TStringList strList = new TStringList(); strList->Delimiter = ',';// 標點符號做區隔 strList->DelimitedText = "label,sub,mux"; 則 strList->Strings[0]是label, strList->Strings[1]是sub, strList->Strings[2]是mux。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D -------------------------------
gooddess
一般會員


發表:7
回覆:2
積分:1
註冊:2003-04-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-28 02:21:52 IP:140.126.xxx.xxx 未訂閱
樓上的這位大哥,謝謝你的意見。但您可能誤會小弟的意思了。目前先一步一步來,先抓取":"之前的字。    小弟不才用以下的寫法,想把":"之前的字抓出來,卻發生了連空白一起抓出來的結果,請教我該如何修改才能把抓到的字一行一行的排整齊呢 single_line_str = input_line->Strings[i];  //load i'th line        if (single_line_str.Pos(":"))            start_addr = 0;            end_addr = (single_line_str.Pos(":"));           label = single_line_str.SubString(start_addr,end_addr-1);                ListBox1->Items->Add(label);    結果:  (左邊是檔案內容,右邊是抓出來的值,理想是抓出main之後,下一行         就接著抓到fact而不是空白阿~ ><)          發表人 - gooddess 於 2004/04/28 02:41:13
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-28 08:27:56 IP:218.32.xxx.xxx 未訂閱
TStringList strList = new TStringList(); strList->Delimiter = ':';// 標點符號做區隔 strList->DelimitedText = input_line->Strings[i]; //load i'th line ListBox1->Items->Add(strList->Strings[0].Trim());//去掉空白 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D -------------------------------
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-28 08:39:50 IP:218.32.xxx.xxx 未訂閱
如果你要main的下一行緊鄰fact, 那應該這樣寫 TStringList strList = new TStringList(); strList->Delimiter = ':';// 標點符號做區隔 String strTemp;    //---------------
strList->DelimitedText = input_line->Strings[i]; //load i'th line 
strTemp = strList->Strings[0].Trim();//去掉空白
if(!strTemp.IsEmpty())
{
    ListBox1->Items->Add();
}
------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D -------------------------------
johnny149
一般會員


發表:0
回覆:13
積分:2
註冊:2004-03-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-28 10:13:36 IP:218.161.xxx.xxx 未訂閱
可以考慮用C的function: strtok() 抄一個sample供您參考:
ptr = strtok( "Apr.28,2004",".," );
for( i=1; ptr; i   ) {
    printf( "[%d] : %s, i, ptr );
    ptr = strtok( NULL, ".," );
}
發表人 - taishyang 於 2004/04/28 13:35:04
系統時間:2024-07-09 10:41:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!