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

如何一個個讀出文字檔的內容??????

 
wangth
一般會員


發表:2
回覆:2
積分:0
註冊:2002-05-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-05-30 15:09:15 IP:202.39.xxx.xxx 未訂閱
小弟有一文字檔的內容是 t02 k3k 如何用char一個個的叫出, 當讀到空白字元時,則會跳至下一行繼續 讀取,直到讀到兩個空白字元時才會跳出.... 幫幫忙,想一下下.............
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-05-30 15:24:57 IP:211.22.xxx.xxx 未訂閱
 var f: TextFile;
  s: string;
  Ch: Char;
begin
  AssignFile(f, 'C:\xxx.txt');
  Reset(F1);
  while not Eof(f) do begin
    ReadLn(f, s);
    if Pos(' ', s) then // s 字串內有一個空白
      ;
    if Pos('  ', s) then // s 字串內有兩個空白
      Break;
  end;
  CloseFile(f);
end;
wangth
一般會員


發表:2
回覆:2
積分:0
註冊:2002-05-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-05-30 15:59:37 IP:202.39.xxx.xxx 未訂閱
引言:
 var f: TextFile;
  s: string;
  Ch: Char;
begin
  AssignFile(f, 'C:\xxx.txt');
  Reset(F1);
  while not Eof(f) do begin
    ReadLn(f, s);
    if Pos(' ', s) then // s 字串內有一個空白
      ;
    if Pos('  ', s) then // s 字串內有兩個空白
      Break;
  end;
  CloseFile(f);
end;
pos(' ',s)並不是boolean,能用在if 嗎... 若是想把內容一個個單字取出,並且 用comm1傳出,能這樣做嗎???該怎做?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-05-30 16:03:31 IP:211.22.xxx.xxx 未訂閱
引言: pos(' ',s)並不是boolean,能用在if 嗎... 若是想把內容一個個單字取出,並且 用comm1傳出,能這樣做嗎???該怎做?
1.Sorry! 應該是
if Pos(' ', s) <> 0 then ;
2.若想把 s 字串一個字元一個字元傳出, 如:
  for i := 1 to Length(s) do
   Comm1.SendString(s[i]); 
wangth
一般會員


發表:2
回覆:2
積分:0
註冊:2002-05-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-05-30 16:12:53 IP:202.39.xxx.xxx 未訂閱
引言:
引言: pos(' ',s)並不是boolean,能用在if 嗎... 若是想把內容一個個單字取出,並且 用comm1傳出,能這樣做嗎???該怎做?
1.Sorry! 應該是
if Pos(' ', s) <> 0 then ;
2.若想把 s 字串一個字元一個字元傳出, 如:
  for i := 1 to Length(s) do
   Comm1.SendString(s[i]); 
不好意思哦,再問個問題,如果我用的是 Comm1.WriteCommData來傳出呢,該怎用啊??
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-05-30 16:16:44 IP:211.22.xxx.xxx 未訂閱
引言: 不好意思哦,再問個問題,如果我用的是 Comm1.WriteCommData來傳出呢,該怎用啊??
不好意思, 請問一下 WriteCommData 的宣告是怎樣? 小弟沒用過, 所以不曉得。 :)
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-05-30 16:32:07 IP:202.39.xxx.xxx 未訂閱
引言:
引言: 不好意思哦,再問個問題,如果我用的是 Comm1.WriteCommData來傳出呢,該怎用啊??
不好意思, 請問一下 WriteCommData 的宣告是怎樣? 小弟沒用過, 所以不曉得。 :) 我使用的是spcomm的元件, WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ) 是它的用法.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-05-30 16:38:43 IP:211.22.xxx.xxx 未訂閱
不知對不對, 您試一下! 
var i: Integer;
begin
  for i := 1 to Length(s) do
    Comm1.WriteCommData(@s[i], 1);
end;
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-05-30 16:53:47 IP:202.39.xxx.xxx 未訂閱
引言: 不知對不對, 您試一下!
var i: Integer;
begin
  for i := 1 to Length(s) do
    Comm1.WriteCommData(@s[i], 1);
end;
我將程式寫給您看看 var f: TextFile; s: string; i:integer; begin AssignFile(f, 'd:\temp\ttt.txt'); Reset(f); while not Eof(f) do begin Readln(f, s); if Pos(' ', s)<>0 then Break; end; for i := 1 to Length(s) do Comm1.WriteCommData(@s[i], 1); end; 結果只得到檔案內最後一行的值'k3k',請問 一下,所得的值是不是一次就捉出來的啊?? 能不能一次只傳一個位元.謝謝...
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-05-30 17:06:48 IP:211.22.xxx.xxx 未訂閱
1.因為每次 ReadLn(f, s) 後, s 的值都是最新的值 所以才會有 s 都是最後一行 'k3k' 的情形 2.上面這樣不是一次只傳一個位元嗎? 不然延長時間看看, 更改如下:    
var
  f: TextFile;
  s, sContent: string;
  i: integer;
begin
  AssignFile(f, 'd:\temp\ttt.txt');
  Reset(f);
  sContent := ''
  while not Eof(f) do begin
    Readln(f, s);
    sContent := sContent   s;
    if Pos(' ', s) <> 0 then
      Break;
  end;
  for i := 1 to Length(sContent) do begin
    Comm1.WriteCommData(@sContent[i], 1);
    Application.ProcessMessages;
    Sleep(1000);
  end;
end;
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-05-30 17:12:33 IP:202.39.xxx.xxx 未訂閱
引言: 1.因為每次 ReadLn(f, s) 後, s 的值都是最新的值 所以才會有 s 都是最後一行 'k3k' 的情形 2.上面這樣不是一次只傳一個位元嗎? 不然延長時間看看, 更改如下:
var
  f: TextFile;
  s, sContent: string;
  i: integer;
begin
  AssignFile(f, 'd:\temp\ttt.txt');
  Reset(f);
  sContent := ''
  while not Eof(f) do begin
    Readln(f, s);
    sContent := sContent   s;
    if Pos(' ', s) <> 0 then
      Break;
  end;
  for i := 1 to Length(sContent) do begin
    Comm1.WriteCommData(@sContent[i], 1);
    Application.ProcessMessages;
    Sleep(1000);
  end;
end;
哇~~~~真是太感激您了..... 謝謝......
系統時間:2024-04-25 21:36:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!