如何改善執行的速度? |
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
我有一個.csv檔(約1.73M 大小),當我用Excel開啟後,去置換當中的某些字元
時,其處理速度相當快。但是若將其副檔名改成.txt的文字檔同樣利用當中的置換功能時其速度慢得誇張,所以自個兒寫個小程式來代替時發現速度一樣慢,我利用ReplaceDialog的OnReplace事件,程式如下: with TReplaceDialog(Sender) do
begin
SelPos := Pos(FindText, dtMemo.Lines.Text);
FindText := '"';
ReplaceText := '';
while SelPos > 0 do
begin
SelPos := Pos(FindText, dtMemo.Lines.Text);
dtMemo.SelStart := SelPos - 1;
dtMemo.SelLength := Length(Findtext);
{ Replace selected text with ReplaceText }
dtMemo.SelText := ReplaceText;
end; 不知有無它法可讓其速度如Excel一樣快? 謝謝。
------
我也在努力學習中,若有錯謬請見諒。 |
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 我有一個.csv檔(約1.73M 大小),當我用Excel開啟後,去置換當中的某些字元 時,其處理速度相當快。但是若將其副檔名改成.txt的文字檔同樣利用當中的置換功能時其速度慢得誇張,所以自個兒寫個小程式來代替時發現速度一樣慢,我利用ReplaceDialog的OnReplace事件,程式如下: with TReplaceDialog(Sender) do begin SelPos := Pos(FindText, dtMemo.Lines.Text); FindText := '"'; ReplaceText := ''; while SelPos > 0 do begin SelPos := Pos(FindText, dtMemo.Lines.Text); dtMemo.SelStart := SelPos - 1; dtMemo.SelLength := Length(Findtext); { Replace selected text with ReplaceText } dtMemo.SelText := ReplaceText; end; 不知有無它法可讓其速度如Excel一樣快? 謝謝。用這個試試看 type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase); function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string; ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
鈴鐺
初階會員 發表:33 回覆:81 積分:35 註冊:2002-03-13 發送簡訊給我 |
引言: 這個方法我也試過了,速度上只稍快了一點點,還是不行。你慢的地方應該是在 load data to buffer. 應該改用別種方式將資料讀進 memory, 再置換. 因為我認為 ReplaceStr() Boland 應該以將其最佳化. 除非你用組合語言改寫, 不然再怎麼寫也快不到那兒去. 我自己用 memo 讀入資料, 再用 replaceStr, 兩行就搞定. 不過檔案 size 只有約 1000 bytes 左右, 速度很快. 對了, 我是用 AnsiReplaceStr 而非 ReplaceStr.(以避免中文問題, 你若處理純英文資料, 那就沒差了) 發表人 - 鈴鐺 於 2002/07/16 10:53:44 |
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
|
Edward
一般會員 發表:3 回覆:7 積分:2 註冊:2002-07-11 發送簡訊給我 |
引言: 我有一個.csv檔(約1.73M 大小),當我用Excel開啟後,去置換當中的某些字元 時,其處理速度相當快。但是若將其副檔名改成.txt的文字檔同樣利用當中的置換功能時其速度慢得誇張,所以自個兒寫個小程式來代替時發現速度一樣慢,我利用ReplaceDialog的OnReplace事件,程式如下: with TReplaceDialog(Sender) do begin SelPos := Pos(FindText, dtMemo.Lines.Text); FindText := '"'; ReplaceText := ''; while SelPos > 0 do begin SelPos := Pos(FindText, dtMemo.Lines.Text); dtMemo.SelStart := SelPos - 1; dtMemo.SelLength := Length(Findtext); { Replace selected text with ReplaceText } dtMemo.SelText := ReplaceText; end; 不知有無它法可讓其速度如Excel一樣快? 謝謝。你可以把那個.csv檔寄給我嗎? 我試試看!!! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |