檔案取值的問題 |
答題得分者是:Stallion
|
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
我有一文字檔.txt,想把裡面的3800,3800,4300,4800,4800這些值
想分別用Edit1,Edit2,Edit3,Edit4,Edit5裡面的值來取代。 不知用如何下手??麻煩會的大大教一下嚕...謝謝!! M: 1,I,80,4.5,123,110,0,0,-1,3800,0,0; C,80,0,0; C,80,61.5,0; C,84.5,63.1379,0; C,84.5,0,0; 1,I,118,4.5,123,110,0,0,-1,3800,0,0; C,118,0,0; C,118,61.5,0; C,122.5,63.1379,0; C,122.5,0,0; 1,O,170,25,110,45,0,0,-1,4300,0,0; C,145,0,0; C,145,30,0; C,170,55,0; C,170,0,0; 1,O,195,25,85,45,0,0,-1,4800,0,0; C,170,0,0; C,170,17.5,0; C,195,42.5,0; C,195,0,0; 0,O,195,10,60,45,0,0,-1,4800,0,0; C,185,0,0; C,185,20,0; C,195,30,0; C,195,0,0;
------
Neil 編輯記錄
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
舊文章有討論過字串搜尋和取代
http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=83780 http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=62065
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
編輯記錄
pcboy 重新編輯於 2007-08-13 15:28:49, 註解 無‧
|
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
兩個範例,一個是Delphi的,一個是C語言的。我認為兩個範例都應該是基本的語法吧!是不是你在基本功部分還要加強?!
另外可以現成VCL方式來解決你的問題,下面的方法算是最簡單的了,你看不懂也沒辦法了。 <textarea cols="60" rows="10" class="cpp" name="code"> TStringList *S1; AnsiString S2; int Count; try { S1 = new TStringList(); S1->LoadFromFile("你的檔案名稱"); for ( Count = 0 ; Count < S1->Count ; Count ) { S2 = StringReplace( S1->Strings[Count] , "新的文字", "要被替換的文字", TReplaceFlags() << rfIgnoreCase ); S1->Strings[Count] = S2; } //至此S1已被替換完成 } __finally { delete S1; //釋放向系統要來的記憶體。 } </textarea> ===================引 用 explorer5270 文 章=================== 版主...看不懂><!-- |
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
試了一下
S2 = StringReplace( S1->Strings[Count] , "5000", "3800", TReplaceFlags() << rfIgnoreCase ); 可是5000並沒有取代3800 SORRY版主...我是剛入門!! ===================引 用 Stallion 文 章=================== 兩個範例,一個是Delphi的,一個是C語言的。我認為兩個範例都應該是基本的語法吧!是不是你在基本功部分還要加強?! 另外可以現成VCL方式來解決你的問題,下面的方法算是最簡單的了,你看不懂也沒辦法了。 <textarea class="cpp" rows="10" cols="60" name="code"> TStringList *S1; AnsiString S2; int Count; try { S1 = new TStringList(); S1->LoadFromFile("你的檔案名稱"); for ( Count = 0 ; Count < S1->Count ; Count ) { S2 = StringReplace( S1->Strings[Count] , "新的文字", "要被替換的文字", TReplaceFlags() << rfIgnoreCase ); S1->Strings[Count] = S2; } //至此S1已被替換完成 } __finally { delete S1; //釋放向系統要來的記憶體。 } </textarea> ===================引 用 explorer5270 文 章=================== 版主...看不懂><!--
------
Neil |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
我開啟我的檔案3800並沒有變成5000。
而且直接抓取S2值是出現檔案的最後一行C,195,0,0; 為什麼會變成這樣!! 謝謝 ===================引 用 pedro756901 文 章=================== 取代的結果值放在S2變數
------
Neil |
fatmoon1
初階會員 發表:3 回覆:29 積分:36 註冊:2004-05-24 發送簡訊給我 |
因為在 DELPHI 裡 StringReplace 函數 是
StringReplace( S , '要被替換的文字', '新的文字', Flags ); 所以 建議 將下述 S2 = StringReplace( S1->Strings[Count] , "新的文字", "要被替換的文字", TReplaceFlags() << rfIgnoreCase ); 改成 S2 = StringReplace( S1->Strings[Count] , "要被替換的文字", "新的文字", TReplaceFlags() << rfIgnoreCase ); 試試
------
才疏學淺 |
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
謝謝各位大大...已經可以取代了!!
感謝你們!!小弟要再好好努力!! ===================引 用 fatmoon1 文 章=================== 因為在 DELPHI 裡 StringReplace 函數 是 StringReplace( S , '要被替換的文字', '新的文字', Flags ); 所以 建議 將下述 S2 = StringReplace( S1->Strings[Count] , "新的文字", "要被替換的文字", TReplaceFlags() << rfIgnoreCase ); 改成 S2 = StringReplace( S1->Strings[Count] , "要被替換的文字", "新的文字", TReplaceFlags() << rfIgnoreCase ); 試試
------
Neil |
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
你的主要問題程式碼哩?不要讓別人猜!
貼程式碼時請按規定!以免會看不到你的部分程式碼。 ===================引 用 explorer5270 文 章=================== 還有一個問題就是... 3800用Edit1取代 4300用Edit2取代 4800用Edit3取代 好像試不太出來!! 各位大大再幫幫忙嚕!! |
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
<textarea class="cpp" rows="10" cols="60" name="code">
String A=Label1->Caption;//3800
String B=Edit1->Text;//5000
String C=Label2->Caption;//4300
String D=Edit2->Text;//8000
{
TStringList *S1;
AnsiString S2;
int Count; try
{
S1 = new TStringList();
S1->LoadFromFile("C:\\0508.txt");
for ( Count = 0 ; Count < S1->Count ; Count )
{
S2 = StringReplace( S1->Strings[Count], A, B, TReplaceFlags() << rfIgnoreCase);
S2 = StringReplace( S1->Strings[Count], C, D, TReplaceFlags() << rfIgnoreCase); // 會沒有反應??
S1->Strings[Count] = S2;
}
S1->SaveToFile("C:\\Guts-032807\\Tool\\whl\\0508.whl");
}
__finally
{
delete S1;
}</textarea>
------
Neil |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
<textarea name="code" cols="60" rows="10" class="cpp">
String A=Label1->Caption;//3800
String B=Edit1->Text;//5000
String C=Label2->Caption;//4300
String D=Edit2->Text;//8000
{
TStringList *S1;
AnsiString S2;
int Count;
try
{
S1 = new TStringList();
S1->LoadFromFile("C:\\0508.txt");
for ( Count = 0 ; Count < S1->Count ; Count )
{
S2 = StringReplace( S1->Strings[Count], A, B, TReplaceFlags() << rfIgnoreCase);
S1->Strings[Count] = S2;
S2 = StringReplace( S1->Strings[Count], C, D, TReplaceFlags() << rfIgnoreCase);
S1->Strings[Count] = S2;
}
S1->SaveToFile("C:\\Guts-032807\\Tool\\whl\\0508.whl");
}
__finally
{
delete S1;
}
</textarea>
|
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
|
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
各位大大幫個忙,小弟有一問題,程式如下。 程式如下
<textarea class="cpp" rows="10" cols="60" name="code"> TMemo *aMemo; int Count; const char *s1 = "3800" , *s2 = "4300" ;//尋找特定字串。因為我需要的值存在第9個位置,假如我只要尋找的是每一行的第9個位置,並將它顯是在Memo1上,該如何修改只找每一行的第9格位置呢?? try { this->Memo1->Clear(); aMemo = new TMemo(this) ; aMemo->Parent = this; aMemo->WordWrap = false; aMemo->Lines->LoadFromFile("C:\\123.txt");//123.txt文字檔如上面所示。 for ( Count = 0 ; Count < aMemo->Lines->Count - 1 ; Count ) { if ( aMemo->Lines->Strings[Count].Pos(s1) ) this->Memo1->Lines->Add( IntToStr(Count) ); if ( aMemo->Lines->Strings[Count].Pos(s2) ) this->Memo1->Lines->Add( IntToStr(Count) ); } } __finally { aMemo->Free(); }</textarea>
------
Neil |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
explorer5270
一般會員 發表:3 回覆:16 積分:3 註冊:2007-03-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |