入力したファイルの最初の6文字を判断するには?

解決


名前:  2002-11-13 02:56:29  No: 2120

ファイルを読み込んで、最初の6文字が、「ABCDEF」であったときに、ある動作をさせたいです。
while not Eof( f ) do
    begin
        Readln( f, cc );
    end;
とすると、なぜかファイルの最後に行ってしまい、次の行には行ってくれません。初心者な質問ですが、お願いします


hatena  2002-11-13 19:07:07  No: 2121

while でループさせれば最後まで行ってしまうのは当たり前です。

Readln( f, cc );
if Copy(cc, 1, 8) = 'ABCDEF' then
...


名前:  2002-11-14 09:21:13  No: 2122

具体的には、C言語で
do{
}while(fgets(str,100,fp) != NULL);
のようなことがしたいです。テキストファイルに、たとえば、
-----------
point     12   13   14
point     15   46   32
  :
  :
-----------
とたくさん書いてあって、pointを読みこんだときに、ファイル内のx,y,zを取得したいんです。C言語の意識があるからか、readをgetcと同じ意識で使っている気がするんですが・・・


hatena  2002-11-14 09:59:44  No: 2123

C言語はよく知らないのですが、

while not Eof( f ) do
begin
  Readln( f, cc );
  if Copy(cc, 1, 5) = 'point' then
  Begin
    //やりたい処理
  End;
end;

で1行ずつ移動しながら処理できると思いますが。


名前  2002-11-14 10:23:32  No: 2124

あ、すみません!delphiの言語、どうのという以前に読み込むファイルが変な形をしていました!ご親切にお答えくださって大変恐縮します!
ちなみに、一見すると普通のファイル
---------------------
point    1   2   3
point    4   5   6
  :
  :
-------------------------
なのに、最初の一行を読み込んだだけでEof(f)がTrueを返すという奇妙なファイルです。これを非常にシンプルに処理する方法がございましたら、お教えいただけないでしょうか?ファイルの形が奇妙だ、と気づいたので処理の仕方は予測がつきますが、より簡易な方法がありましたら、で結構ですので。


名前  2002-11-14 10:56:49  No: 2125

あ、嘘です。違います。混乱してすみません、上の発言はなかったことに・・・。もう少し整理してから、またたぶん質問をすると思います。とりあえず、解決で。


名前  2002-11-14 10:57:56  No: 2126

解決!


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加