e_snare
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:26 回覆:35 積分:12 註冊:2004-03-14
發送簡訊給我
|
我有幾筆資料欄位是存在AnsiString,
用TStringList存入檔案,
所以會像下面這樣:比如三筆
第一筆 123
第二筆 456
第三筆 789
但我想要的是每行5個或其它,雖然欄位是那三筆,但存入檔案我要這樣
12345
6789
依照我想要的每行五個,將多筆資料按照這樣的格式存入接在一起。
且叫出來要回到欄位三筆三個欄位。 希望給點提示,弄了兩天了,不懂。
|
RaynorPao
版主
![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif) ![](./myimg/board/mystar.gif)
![](http://delphi.ktop.com.tw/download.php?download=upload/48c9d66ac5033_KTOP-%E5%8C%85%E5%AD%90%28%E7%9C%BC%E9%8F%A1%29-Q-100x100.jpg) 發表:139 回覆:3622 積分:7025 註冊:2002-08-12
發送簡訊給我
|
引言:
我有幾筆資料欄位是存在AnsiString,
用TStringList存入檔案,
所以會像下面這樣:比如三筆
第一筆 123
第二筆 456
第三筆 789
但我想要的是每行5個或其它,雖然欄位是那三筆,但存入檔案我要這樣
12345
6789
依照我想要的每行五個,將多筆資料按照這樣的格式存入接在一起。
且叫出來要回到欄位三筆三個欄位。 希望給點提示,弄了兩天了,不懂。
e_snare 你好:
請參考以下的做法 (主要利用 TStringList 及 AnsiString.SubString)
< class="code">
// 寫入檔案
AnsiString sz1="123";
AnsiString sz2="456";
AnsiString sz3="789";
AnsiString sz=sz1+sz2+sz3;
TStringList *sl=new TStringList;
int iTime=(sz.Length()%5==0)? sz.Length()/5: sz.Length()/5+1;
for(int i=0; iAdd(sz.SubString(1+i*5, iCount));
}
sl->SaveToFile("test2.txt");
delete sl; // 讀取檔案
AnsiString sz1;
AnsiString sz2;
AnsiString sz3;
AnsiString sz;
TStringList *sl=new TStringList;
sl->LoadFromFile("test2.txt");
for(int i=0; iCount; i++)
{
sz+=sl->Strings[i];
}
sz1=sz.SubString(1+3*0, 3);
sz2=sz.SubString(1+3*1, 3);
sz3=sz.SubString(1+3*2, 3);
ShowMessage(sz1);
ShowMessage(sz2);
ShowMessage(sz3);
delete sl;
-- Enjoy Researching & Developing --
------ -- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
|
e_snare
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:26 回覆:35 積分:12 註冊:2004-03-14
發送簡訊給我
|
簡直是神 如果我的功力有RaynorPao五分之一就好了 此方法沒有問題,需要的朋友可以參考,很有用的,謝謝了。
|
e_snare
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:26 回覆:35 積分:12 註冊:2004-03-14
發送簡訊給我
|
e_snare 你好:
請參考以下的做法 (主要利用 TStringList 及 AnsiString.SubString) ![]()
< class="code">
// 寫入檔案
AnsiString sz1="123";
AnsiString sz2="456";
AnsiString sz3="789";
AnsiString sz=sz1+sz2+sz3;
TStringList *sl=new TStringList;
int iTime=(sz.Length()%5==0)? sz.Length()/5: sz.Length()/5+1;
for(int i=0; i Add(sz.SubString(1+i*5, iCount));
}
sl->SaveToFile("test2.txt");
delete sl; // 讀取檔案
AnsiString sz1;
AnsiString sz2;
AnsiString sz3;
AnsiString sz;
TStringList *sl=new TStringList;
sl->LoadFromFile("test2.txt");
for(int i=0; iCount; i++)
{
sz+=sl->Strings[i];
}
sz1=sz.SubString(1+3*0, 3);
sz2=sz.SubString(1+3*1, 3);
sz3=sz.SubString(1+3*2, 3);
ShowMessage(sz1);
ShowMessage(sz2);
ShowMessage(sz3);
delete sl;
-- Enjoy Researching & Developing --
[/quote]
上面可以了,但
我讀取檔案時加了以下程式碼來將hex轉回相對應的字
int iCount=sl->sz1.Length()/2; //這行改成長度3,因為上面是三個字
AnsiString sz[3] = {sz1,sz2,sz3};
for(int i=0; isz[i].SubString(1+i*2, 2)));
}
Edit1->Text=sz[0];
Edit2->Text=sz[1];
Edit3->Text=sz[3]; 我的問題是比如我檔案裡是
410000
結果叫出來
410000A
看來A有轉出來,但410000也還在,應該只有A才對!
還有sz[1].....等就抓不出來了,都是空的或有問題!
不知我哪裡弄錯了!
發表人 - e_snare 於 2004/03/23 20:21:20
|
e_snare
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:26 回覆:35 積分:12 註冊:2004-03-14
發送簡訊給我
|
問題已自行解決
|