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

請問一個讀取文字檔的問題....

尚未結案
foxelf
初階會員


發表:9
回覆:42
積分:30
註冊:2003-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-03 12:18:27 IP:61.222.xxx.xxx 未訂閱
我開啟了一個文字檔,我要將裡面的資料處理完畢,卻只能處理到第一筆,程式就自動跳出處理程序(讀完第一筆資料並且處理完了,程式判斷為EOF而自動跳出) try AssignFile(OpenFile, Edit6.Text) ; Reset(OpenFile) ; except ShowMessage('檔案:' Edit6.Text ' 開啟錯誤, 無法執行 !!!') ; Exit ; end ; while not Eof(OpenFile) do begin Readln(OpenFile,RecDatas) ; : (處理程序) : end ;
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-03 13:03:35 IP:203.95.xxx.xxx 未訂閱
hi, 是不是你的 處理程式 有對該 OpenFile 有做什麼處理呢? 否則應該不會這樣才對, 可以貼出較完整的程式碼嗎? 發表人 - timhuang 於 2004/02/03 13:18:43
foxelf
初階會員


發表:9
回覆:42
積分:30
註冊:2003-03-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-04 16:12:01 IP:61.222.xxx.xxx 未訂閱
timhuang 大大您好 程式碼如下 var OpenFile : TextFile ; MaxRec : Integer ; LeadSpace : Integer ; Begin try AssignFile(OpenFile, Edit1.Text) ; Reset(OpenFile) ; except ShowMessage('檔案:' Edit1.Text ' 開啟錯誤, 無法執行 !!!') ; Exit ; end ; LeadSpace := 60 ; MaxRec := (FileSize(OpenFile) div 1732) ; Readln(OpenFile,RecDatas) ; while (not Eof(OpenFile)) do begin Readln(OpenFile,RecDatas) ; : (資料處理) : end ; Try CloseFile(OpenFile ) ; except end ; End ; 發表人 - foxelf 於 2004/02/04 16:13:07
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-04 17:00:24 IP:203.95.xxx.xxx 未訂閱
幾個進一步的問題: 1. RecDatas 是 string 應該沒錯吧! 2. 開啟的檔案是文字檔或是二進位檔呢? 3. (資料處理) 的部分是不是有用到 OpenFile 這個變數呢, 也有可能影響該檔案的目前指標位置 請試著往這幾個方面想看看!
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-04 22:31:59 IP:203.222.xxx.xxx 未訂閱
看到你的程式,發現你的程式思路不是很好 既然你對基本 IO 與 try 的用法不熟,又何必強迫用自自己用呢? 直接用元件來處理
var 宣告區加入
 TMyFileToWork: TMemo;    處理區使用
try     TMyFileToWork := TMemo.Create(Self)
 TMyFileToWork.Lines.LoadFromFile('Your FileName Here');     for Li := 0 to (TMyFileToWork.Lines.Count - 0) do // 一行一行處理
或是用
 if TMyFileToWord.Lines.Count > 0 then             //一起由回圈處理      WithTMyFileToWork do
   begin
    
     在這裡處理你要的動作     
     Lines[X][Y]  第 X 行 / 第 Y 字 
     每行的字數 Length(Lines[X])
           end;     finally     TMyFileToWork.Free;    end;        
Leway
一般會員


發表:43
回覆:71
積分:22
註冊:2003-07-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-05 09:06:33 IP:218.80.xxx.xxx 未訂閱
  您好!我試過您的程式,沒有您說的問題。   另建議您才有下面的方法處理會比較清晰。  
var
  FileName: string;
  slFile: TStringList;
  i: integer;
  RecData: string;
begin
  FIleName:= trim(Edit1.Text);
  slFile:= TStringList.Create;
  try
    slFile.LoadFromFile(FileName);
    for i:= 0 to slFile.Count -1 do
    begin
      RecData:= slFile.Strings[i];
      處理資料
    end;
  finally
    slFile.Free;
  end;
end;
 
========================= 語言是工具,最重要是如何解決問題。 發表人 - Leway 於 2004/02/05 09:29:49
foxelf
初階會員


發表:9
回覆:42
積分:30
註冊:2003-03-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-05 11:12:10 IP:61.222.xxx.xxx 未訂閱
謝謝各位大大的解疑 我決定將它重寫,改別人的程式實在是痛苦啊....
系統時間:2024-05-07 18:08:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!