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

檔案取值的問題

答題得分者是:Stallion
explorer5270
一般會員


發表:3
回覆:16
積分:3
註冊:2007-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-13 14:17:43 IP:140.130.xxx.xxx 訂閱
我有一文字檔.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
編輯記錄
explorer5270 重新編輯於 2007-08-13 15:19:36, 註解 無‧
explorer5270 重新編輯於 2007-08-13 15:20:48, 註解 無‧
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-13 15:25:20 IP:61.220.xxx.xxx 訂閱
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
編輯記錄
pcboy 重新編輯於 2007-08-13 15:28:49, 註解 無‧
explorer5270
一般會員


發表:3
回覆:16
積分:3
註冊:2007-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-13 17:06:42 IP:140.130.xxx.xxx 訂閱
版主...看不懂><!
------
Neil
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-08-13 17:29:28 IP:211.22.xxx.xxx 未訂閱
兩個範例,一個是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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-08-13 17:53:39 IP:140.130.xxx.xxx 訂閱
試了一下
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-08-13 18:00:53 IP:60.248.xxx.xxx 未訂閱
取代的結果值放在S2變數
explorer5270
一般會員


發表:3
回覆:16
積分:3
註冊:2007-03-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-08-13 18:06:56 IP:140.130.xxx.xxx 訂閱
我開啟我的檔案3800並沒有變成5000。
而且直接抓取S2值是出現檔案的最後一行C,195,0,0;
為什麼會變成這樣!!
謝謝

===================引 用 pedro756901 文 章===================
取代的結果值放在S2變數
------
Neil
fatmoon1
初階會員


發表:3
回覆:29
積分:36
註冊:2004-05-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-08-13 18:29:27 IP:61.63.xxx.xxx 訂閱
因為在 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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-08-13 18:39:54 IP:140.130.xxx.xxx 訂閱
謝謝各位大大...已經可以取代了!!
感謝你們!!小弟要再好好努力!!


===================引 用 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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-08-13 20:00:20 IP:140.130.xxx.xxx 訂閱
還有一個問題就是...
3800用Edit1取代
4300用Edit2取代
4800用Edit3取代

好像試不太出來!!
各位大大再幫幫忙嚕!!
------
Neil
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-08-13 20:32:50 IP:211.22.xxx.xxx 未訂閱
你的主要問題程式碼哩?不要讓別人猜!
貼程式碼時請按規定!以免會看不到你的部分程式碼。
===================引 用 explorer5270 文 章===================
還有一個問題就是...
3800用Edit1取代
4300用Edit2取代
4800用Edit3取代

好像試不太出來!!
各位大大再幫幫忙嚕!!
explorer5270
一般會員


發表:3
回覆:16
積分:3
註冊:2007-03-23

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-08-13 21:05:51 IP:140.130.xxx.xxx 訂閱
<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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-08-13 21:17:53 IP:211.22.xxx.xxx 未訂閱
<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

發送簡訊給我
#14 引用回覆 回覆 發表時間:2007-08-13 22:00:49 IP:140.130.xxx.xxx 訂閱
謝謝版主...小弟以後會更加努力的!!
------
Neil
explorer5270
一般會員


發表:3
回覆:16
積分:3
註冊:2007-03-23

發送簡訊給我
#15 引用回覆 回覆 發表時間:2007-08-16 10:50:55 IP:140.130.xxx.xxx 訂閱
各位大大幫個忙,小弟有一問題,程式如下。    程式如下
<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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2007-08-16 18:43:06 IP:220.131.xxx.xxx 未訂閱
你的問題有鬼。
加上你的基礎不好。很難回答。
你要第九個字。
其中有幾個問題。
一、每一行都有九個字以上嗎?
二、你的前八個字會不會是空白?
三、如果是空白,會不會是TAB的空白?

如果扣除上面說的問題。
char line[...];
char *cp;
cp = line;
cp =8;
這樣 cp 就跳到第9個位置了。
explorer5270
一般會員


發表:3
回覆:16
積分:3
註冊:2007-03-23

發送簡訊給我
#17 引用回覆 回覆 發表時間:2007-08-16 20:40:17 IP:140.130.xxx.xxx 訂閱
謝謝版主大大...小弟已將問題解決了!!
謝謝各位的幫忙...小弟初學者還會再努力加油的!!
------
Neil
系統時間:2024-05-02 15:15:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!