讀取TXT檔的小問題 |
尚未結案
|
心情之風
一般會員 發表:14 回覆:9 積分:4 註冊:2005-05-10 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
心情之風 您好: 您想用什麼方式來讀取文字檔以及設給 Memo 物件?如果您要直接使用 Memo 物件的 LoadFromFile 來進行,那麼您僅能先將整個檔案載入,然後再對 Memo->Lines->Strings[i] 做檢查,以刪除行首含有指定字元的資料行了。 否則您就得先將檔案邊檢查邊載入到另一個暫存的物件或空間,然後再設給 Memo 物件,但是這樣的效率不見得會比較高,因此我還是建議您用前述的方式來處理,這裡給您一個範例供您參考:
AnsiString MyFile = "c:\\test.txt"; Memo1->Lines->BeginUpdate(); Memo1->Lines->LoadFromFile(MyFile); for (int i=Memo1->Lines->Count-1; i>=0; i--) { if (Memo1->Lines->Strings[i].c_str()[0] == '.') { Memo1->Lines->Delete(i); } } Memo1->Lines->EndUpdate();啊~抱歉,沒注意到您問的是 Delphi,我使用了 BCB 的 Code 寫範例,不過兩者差異不大,希望您能看得懂....。 發表人 - RedSnow 於 2005/05/14 21:51:06 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
呵呵~剛才臨時抱佛腳,試著將前一篇寫的 BCB 範例改寫成 Delphi 的 Code,也不知道對不對?不過還是貼上來試試看好了。
VAR MyFile: String; i: Integer; begin MyFile := 'c:\test.txt'; Memo1.Lines.BeginUpdate; Memo1.Lines.LoadFromFile(MyFile); for i := Memo1.Lines.Count-1 to 0 do begin if Copy(Memo1.Lines.Strings[i], 1, 1) = '.' then Memo1.Lines.Delete(i); end; Memo1.Lines.EndUpdate; end;發表人 - RedSnow 於 2005/05/14 22:28:43 |
心情之風
一般會員 發表:14 回覆:9 積分:4 註冊:2005-05-10 發送簡訊給我 |
我成功嚕
雖然不是照你的方法寫
以下是我寫的方法
procedure TForm2.Button1Click(Sender: TObject);
Var
TF :TEXTFILE;
Str :String;
temp :string;
Begin
OpenDialog1.Execute;
Edit1.Text := OpenDialog1.FileName;
Try
AssignFile(TF,Opendialog1.FileName);
Reset(TF);
Memo1.Lines.Clear;
While not EOF(TF) Do
Begin
Readln(TF,STR);
temp:=leftstr(STR,1);
if temp ='.' then
begin
end
else
memo1.Lines.Add(STR); End;
CloseFile(TF);
except
End;
End;
不過還是很感謝你幫我想...
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
心情之風 您好: 建議您無論使用那種方式來處理?最好還是在 Memo 物件內容做變更動作的前後分別加上 Memo1.Lines.BeginUpdate; 與 Memo1.Lines.EndUpdate; 的敘述,這樣子效率會高一些。 誠如我前兩篇所講的,我對 Delphi 不熟悉,但是由您的程式中可以看出來,比對字串的第一個字元可用下列方式達成:
temp:=leftstr(STR,1); if temp ='.' then ....那麼您不妨將我原先那個判斷式修改如下: VAR MyFile: String; temp : String; i: Integer; begin MyFile := 'c:\test.txt'; Memo1.Lines.BeginUpdate; Memo1.Lines.LoadFromFile(MyFile); for i := Memo1.Lines.Count-1 to 0 do begin同時您找一個大一點的文字檔來做測試,比較一下兩種方式運作的效率,看看何者比較能符合您的需求? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |