ファイルの読み込み

解決


ケルベロ  2004-09-01 09:01:04  No: 116066  IP: [192.*.*.*]

ファイルの読み込みのしかたについて質問があります。
Do while Not Eof(FileNo)
という記述をよく見るのでが下記方法は目にしません。
Do until Eof(fno)では、なにか問題があるのでしょうか?
記述も後者の方が短いので楽なような気がするのですが、あまり見ないので
なんか使わない意味があるのかな?なんて思いました。

編集 削除
ケルベロ  2004-09-01 09:03:48  No: 116067  IP: [192.*.*.*]

すいません記述ミスです。
FnoはFileNoです。
Do while Not Eof(FileNo)
Do Unitil Eof(FileNo)
です。

編集 削除
フォレスト  2004-09-01 09:29:30  No: 116068  IP: [192.*.*.*]

どちらを使用しても構いません。

どちらも同じ意味です。
EOFはご存知かと思いますが、End Of Fileで、ファイルの最後という意味です。

Do While Not EOF(FileNo)
これは、ファイルの最後でない(Not EOF)間(While)繰り返す(Do Loop)。

Do Until EOF(FileNo)
これは、ファイルの最後(EOF)まで(Until)繰り返す(Do Loop)という意味です。
(^^)/

VB以外の言語ではDo UntilよりDo Whileが多用されていますので、
(他の言語ってDo Untilってあるのかな?)
Whileの記述の方が多いのだと思います。
(汎用性を上げるためだと思われます)

編集 削除
魔界の仮面弁士  2004-09-01 11:24:05  No: 116069  IP: [192.*.*.*]

> Do until Eof(fno)では、なにか問題があるのでしょうか?

フォレストさんも書かれていますが、どちらでもOKです。
あるいは、While Not Eof(FileNo) 〜 Wend の構文を使うこともできます。

ちなみに私は、Do Until派です。(^^;)

Do While Not すなわち「〜の条件を満たしていない間」よりも、
Do Until すなわち「〜の条件を満たすまで」とした方が、
(英語としての)意味が素直な気がしているので。


> (他の言語ってDo Untilってあるのかな?)
例えば、パスカル系言語(Turbo Pascal や Delphi など)も
『Until』相当の構文を持っていますよ。

  repeat
    WriteLn('N=', n); 
    n:=n+1;
  until n>500;

あとは、MySQL
  SET @x = 0;
  REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
とか、BASH
  COUNTER=20
  until [  $COUNTER -lt 10 ]; do
     echo COUNTER $COUNTER
     let COUNTER-=1
  done
のような物があるようです。

編集 削除
ケルベロ  2004-09-01 15:18:52  No: 116070  IP: [192.*.*.*]

フォレストさん魔界の仮面弁士さん疑問に答えて頂きありがとうございました。
またくだらない質問をするかも知れませんが、その時もよろしくお願いします。

編集 削除
ケルベロ  2004-09-01 15:19:18  No: 116071  IP: [192.*.*.*]

解決ボタンをわすれた・・・

編集 削除