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

新手發問:關於StringGrid讀取TXT檔的問題

尚未結案
seanyugx
一般會員


發表:1
回覆:1
積分:0
註冊:2005-08-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-03 22:59:46 IP:211.76.xxx.xxx 未訂閱
各位先進好,小弟在練習stringgrid讀取文字檔中,以逗號作為讀進格子cell的練習,發現最後一格總是會跳行,在此將原程式碼PO上來: procedure TForm1.BTN_DOTClick(Sender: TObject); VAR FILENAME : STRING; TF : TEXTFILE; STR, S1 : STRING; X, Y, I, J : INTEGER; begin GRID.RowCount := 1; MEMO1.Lines.CLEAR; FILENAME := FileListBox1.FileName; IF FileExists(FILENAME) = TRUE THEN BEGIN AssignFile(TF,FILENAME); RESET(TF); X := 1; WHILE NOT EOF(TF) DO BEGIN READLN(TF,STR); Y := 1; WHILE TRIM(STR)<>'' DO BEGIN J := POS(',',STR); S1 := COPY(STR, 1, J-1 ); STR := COPY(STR, J 1, LENGTH(STR)-J ); GRID.Cells[Y-1,X-1] := S1; INC(Y); IF (POS(',',STR)<=0) THEN BEGIN GRID.Cells[Y,X] := STR; BREAK; END; END; GRID.RowCount := X; INC(X); END; CloseFile(TF); END ELSE BEGIN SHOWMESSAGE('沒有此檔案!'); END; end; 所後小弟將程式碼改成如下,發現倒數第二行會消失,但是如果TXT檔每一行的末端改成兩個逗號作結尾,卻又可以正常的顯示在格子中,百思不得其解,希望各位大大能夠解惑: procedure TForm1.BitBtn2Click(Sender: TObject); var filename:string; tf:textfile; str, s1:string; x,y,i,j:integer; begin stringgrid1.RowCount:=1; memo1.Lines.Clear; filename:=filelistbox1.FileName; if fileexists(filename)=true then begin assignfile(tf,filename); reset(tf); x:=1; while not eof(tf) do begin readln(tf, str); y:=1; while trim(str)<>'' do begin j:=pos(',', str); s1:=copy(str, 1, j-1); str:=copy(str, j 1, length(str)-j); stringgrid1.Cells[y-1,x-1]:=s1; if (pos(',',str)<=0) then begin stringgrid1.Cells[y-1,x-1]:=str; //改為[y,x]後結果不變...why? inc(y); //將原本的inc(y)在此先做判斷後在執行 break; end; inc(y); end; stringgrid1.RowCount:=x; inc(x); end; closefile(tf); end else begin showmessage('no such file'); end; end;
borland_delphi70
中階會員


發表:8
回覆:50
積分:51
註冊:2002-12-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-04 00:16:34 IP:220.132.xxx.xxx 未訂閱
procedure TForm1.BTN_DOTClick(Sender: TObject); VAR FILENAME : STRING; TF : TEXTFILE; STR, S1 : STRING; X, Y, I, J : INTEGER; begin GRID.RowCount := 1; MEMO1.Lines.CLEAR; FILENAME := FileListBox1.FileName; IF FileExists(FILENAME) = TRUE THEN BEGIN AssignFile(TF,FILENAME); RESET(TF); X := 1; WHILE NOT EOF(TF) DO BEGIN READLN(TF,STR); Y := 1; WHILE TRIM(STR)<>'' DO BEGIN J := POS(',',STR); S1 := COPY(STR, 1, J-1 ); STR := COPY(STR, J+1, LENGTH(STR)-J ); GRID.Cells[Y-1,X-1] := S1; INC(Y); IF (POS(',',STR)<=0) THEN BEGIN GRID.Cells[Y,X] := STR;請使用相同座標規則,改為--->GRID.Cells[Y-1,X-1] := STR; BREAK; END; END; GRID.RowCount := X; INC(X); END; CloseFile(TF); END ELSE BEGIN SHOWMESSAGE('沒有此檔案!'); END; end; ^_^|||... 對我而言,程式設計是一場令人興奮又刺激的惡夢
seanyugx
一般會員


發表:1
回覆:1
積分:0
註冊:2005-08-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-04 23:46:31 IP:211.76.xxx.xxx 未訂閱
十分感謝,再讓我試試看
系統時間:2017-10-17 10:04:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!