線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1200
推到 Plurk!
推到 Facebook!

怎樣讀取已經按格式保存的文本文件内容到數個Edit框中

答題得分者是:Vicen
ralph921
一般會員


發表:17
回覆:31
積分:14
註冊:2005-08-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-21 18:43:11 IP:210.83.xxx.xxx 未訂閱
小弟設計了一個文本錄入窗體,含五個Edit框。    其中每個Edit框要使用五次(生成五條記錄,五條記錄為一個完整的錄入文件),順序為Edit1->Edit2->Edit3->Edit4->Edit5->Edit1->Edit2......->Edit5(第五次),此時保存文件,規定保存格式為    頭字段(已規定好)'Tab'Edit1.text'Tab'Edit2.text'Tab'...'Tab'Edit5.text'Tab'尾字段(已自動生成) 換行 頭字段(與第一條記錄相同)'Tab'Edit1.text'Tab'Edit2.text'Tab'...'Tab'Edit5.text'Tab'尾字段(與第一條記錄的不同) ...... ...... (第五條)頭字段'Tab'Edit1.text'Tab'Edit2.text'Tab'...'Tab'Edit5.text'Tab'尾字段 其中'Tab'為一個Tab的長度。 程式要求按下Page Up時自動返回上一條記錄,每個Edit框也要顯示上一條記錄中的内容(只有五個Edit框,因此不能顯示頭字段和尾字段)。 請問各位大大,如何正常讀取? 發表人 - ralph921 於 2005/09/21 18:57:28
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-22 08:34:55 IP:221.226.xxx.xxx 未訂閱
这种要求使用TSTRINGLIST反而更方便,不需要使用文件读写方式。    
procedure TForm1.ButReadClick(Sender: TObject);
Var
  slOpenFile : TStringList;
  sTemp : String;
begin
  slOpenFile := TStringList;
  try
    //读取文件
    slOpenFile.LoadFromFile('你的存储文件位置');
    //这时你可以通过以下方式读取行
    //行号是从 0 开始的 到 slOpenFile.Count-1 结束的
    //用一个变量保存行号,很容易进行上一条下一条的操作
    sTemp := slOpenFile.Strings[行号];
    //这个时候可以通过POS TAB进行切割
    头字段 := LeftBStr(sTemp, Pos('你定义的分割符号,比如TAB', sTemp)-1);
    sTemp := RightBStr(sTemp, Length(sTemp)-Pos('你定义的分割符号,比如TAB', sTemp));        EDIT1.TEXT := LeftBStr(sTemp, Pos('你定义的分割符号,比如TAB', sTemp)-1);
    sTemp := RightBStr(sTemp, Length(sTemp)-Pos('你定义的分割符号,比如TAB', sTemp));        EDIT2.TEXT := LeftBStr(sTemp, Pos('你定义的分割符号,比如TAB', sTemp)-1);
    sTemp := RightBStr(sTemp, Length(sTemp)-Pos('你定义的分割符号,比如TAB', sTemp));        EDIT3.TEXT := LeftBStr(sTemp, Pos('你定义的分割符号,比如TAB', sTemp)-1);
    sTemp := RightBStr(sTemp, Length(sTemp)-Pos('你定义的分割符号,比如TAB', sTemp));        EDIT4.TEXT := LeftBStr(sTemp, Pos('你定义的分割符号,比如TAB', sTemp)-1);
    sTemp := RightBStr(sTemp, Length(sTemp)-Pos('你定义的分割符号,比如TAB', sTemp));        EDIT5.TEXT := LeftBStr(sTemp, Pos('你定义的分割符号,比如TAB', sTemp)-1);
    sTemp := RightBStr(sTemp, Length(sTemp)-Pos('你定义的分割符号,比如TAB', sTemp));        尾字段 := sTemp;        //但看不明白你说的显示头字段和尾字段的问题,要显示就多放2个TEDIT就是。
  finally
    slOpenFile.Free;
  end;
end;
ralph921
一般會員


發表:17
回覆:31
積分:14
註冊:2005-08-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-23 13:01:33 IP:210.83.xxx.xxx 未訂閱
Hi 你好 Vicen, 我正是使用了一個TStringlist來保存文本内容。 試了你的方法,果然有效。 由於不用保存頭字段和尾字段,因此去掉對頭尾字段的賦值,在對存儲行號的變量賦值之後直接以 sTemp := RightBStr(sTemp, Length(sTemp)-Pos(' ', sTemp)); 開始程式就可以了。 謝謝你!
系統時間:2024-06-29 14:03:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!