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

如何才能使文件轉換程式寫的最少呢?

尚未結案
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-26 16:39:36 IP:202.175.xxx.xxx 未訂閱
打個比方,就是打開多個文本文件,每一行都是以爲結尾,我現在把每一行的換成,并存回原來的文件,怎么樣才能用最少的程式來轉換過來呢。 我想不出來如何精簡語句。
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-26 16:48:39 IP:61.30.xxx.xxx 未訂閱
你好: 介不介意先把你的程式先 Post 上來,這樣大家才能給你意見呀< > 也說不定你的方法已經是最精簡的呢< >
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-26 16:55:39 IP:218.16.xxx.xxx 未訂閱
procedure ConvertCR(filename : string);
begin
  with TStringList.Create do
  try
    LoadFromFile(filename);
    Text := StringReplace(Text,#10,#13#10,[rfReplaceAll]);
    SaveToFile(filename);
  finally
    free;
  end
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  ConvertCR('ABC.txt');
  ConvertCR('DEF.txt');
end;
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-26 21:52:30 IP:61.235.xxx.xxx 未訂閱
你用的方法比我的方法好多了。我的過程太複製了,不好意思貼出來, 會讓大家見笑的。我用的是打開文件另存一個再複製過來。代碼我就不複製過來了。我就沒有想到
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-26 22:52:16 IP:219.130.xxx.xxx 未訂閱
可能是 StrReplace 當換成的字完多了又包含原本字元時有 Bug 重覆做罷...(但不明白為甚麼不無一直重做而只做兩次) 可以以二階段轉換來避免這個問題 : Text := StringReplace(Text,#10,#1,[rfReplaceAll]); Text := StringReplace(Text,#1,#13#10,[rfReplaceAll]); 試過可行
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-27 06:37:27 IP:61.235.xxx.xxx 未訂閱
版主你的方法是我見過最簡單的。 TSTRING不用聲明一下,變量就可以用嗎? 還有一點就是 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33027 你在這裏說 引言: -------------------------------------------------------------------------------- 應該是 mathewzhao 問題的誤導吧,一般來說 .txt 是純文字檔,應該不會有 #0 這樣的東西,如果有,就不是純文字檔。 如果是純文字檔,而改變的資料是純文字的資料如 #50 改成 #60 ,那上述的所有方法都適用,但是如果要處理 #0 就不應該用純文字的方法來處理,以 TStringList 來說,在 SaveToFile 時,每一行會自動加上 #13 #10 ,如果不是純文字檔,那檔案大小可能就改變了。 -------------------------------------------------------------------------------- 那麽我們可不可以直接保存呢。經試驗可以。爲什麽它會自動加上一個#13#10呢。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-27 08:13:27 IP:219.130.xxx.xxx 未訂閱
精簡是精簡但不是最有效率 其實寫長一些用FileStream讀入以迴圈每個字去跑執行會快一些。所以若要求執行速度還是低階一點會好點,但若速度不是太重要的話用簡單的寫法較清楚易維護。    另你說的那段不是我說的啦,這裡有很多版主的 其實並不是
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-27 11:46:35 IP:202.175.xxx.xxx 未訂閱
明白了,但我只是一個打開就保存,就得到我要的效果了,不知道爲什麽。 因爲用文本編輯器表殃不出來,只有在實用的過程中才能體現出來。 鬱悶中。
系統時間:2024-05-01 5:32:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!