ページ 11

Open命令を使ってのファイルの読み込み

Posted: 2006年5月16日(火) 22:08
by 雷電
以前のトピックにGTRさんが質問されていましたが、そのような機能がほしいのですが
どういうコードを組んでいいか分かりません。BackSerchABなんかも見てるんですが、なかなかうまくできません。
今思ったのですが、Openで

コード: 全て選択

Open Mid$(buffer,hTop,hEnd-hTop) For Input As #1
とファイルを開き

コード: 全て選択

Input #1,File
で読み込んでも、一行しか表示することができません。
それを動かす関数、命令があると思うのですが、分かりません。
ご指導、よろしくお願いします。

Posted: 2006年5月16日(火) 23:35
by konisi
確かInput#文は使ったらファイルポインタが自動で動いてくれるから、そのまま連続してEof(1)がTRUEになるまで読み込み続ければいいのではないかと。

Posted: 2006年5月17日(水) 18:25
by 雷電
ということは、Ifで分岐すればいいのですね?
なんか、へたくそですがコードを書いてみましたが、TRUEじゃなかったときの操作はどうやれば良いでしょう?

コード: 全て選択

If Eof(1)=TRUE Then
       Close #1
Else
       'ここの操作が分かりません
End If
という感じですか?

Posted: 2006年5月17日(水) 21:47
by konisi
このようにすればいいのではないのでしょうか?(と言うより僕はいつもこういう方法でやってます。)

コード: 全て選択


Open FileName$ For Input As #1
Do
    Input #1,File
    Print File           '表示・出力系の処理
    If Eof(1) then Exit Do'TRUEの時 と言う場合には=TRUEは省略できる
Loop
Close #1
健闘を祈ります。

Posted: 2006年5月17日(水) 22:04
by 雷電
Print命令は、コマンドプロンプトの場合ですよね。

コード: 全て選択

Open FileName$ For Input As #1 
Do 
    Input #1,File 
    Print File           '表示・出力系の処理 
    If Eof(1) then Exit Do'TRUEの時 と言う場合には=TRUEは省略できる 
Loop 
Close #1
こうしても、出力されないので、自分なりにアレンジしてみました。
FileName$はDim命令で前に定義しないといけませんね。

コード: 全て選択

Open Mid$(buffer,hTop,hEnd-hTop) As #1
    Do
        Input #1,File
        If Eof(1) then Exit Do
        SetDlgItemText(hMainWnd,EditBox1,File)
    Loop
    Close 1
というよりも、FileName$の定義の仕方が分からないので、前のままでやってみました。しかし、うまくいきません。
全ての文字列は取得されず、ランダムにどこかの一列を取得して出力しているようです。なぜでしょうか?

Posted: 2006年5月18日(木) 21:07
by konisi

コード: 全て選択

'宣言部
Dim Dat As String
Dim Enter As String
Enter=Ex"\r\n"

'本体
Open Mid$(buffer,hTop,hEnd-hTop) As #1 
    Do 
        Input #1,File 
        If Eof(1) then Exit Do 
        Dat=Dat+File+Enter
    Loop
Close 1
SetDlgItemText(hMainWnd,EditBox1,Dat) 
としてみてはどうでしょうか?

Posted: 2006年5月19日(金) 18:26
by 雷電
konishiさんありがとうございました。
全ての文字列、取得と表示ができました。
感謝いたします。

Posted: 2006年5月19日(金) 20:15
by 雷電
すいません。
hはいりませんでした。
失礼しました。

Posted: 2006年5月19日(金) 20:59
by 雷電
コンパイルしてみてやってみたところ、あとで気がついたのですが、一番最後の行の文字列がセットされません。
何故でしょう?

Posted: 2006年5月19日(金) 21:10
by konisi
すんません、コードのミスです。

コード: 全て選択

'宣言部
Dim Dat As String
Dim Enter As String
Enter=Ex"\r\n"

'本体
Open Mid$(buffer,hTop,hEnd-hTop) As #1 
    Do 
        Input #1,File 
        Dat=Dat+File+Enter
        If Eof(1) then Exit Do 
    Loop
Close 1
SetDlgItemText(hMainWnd,EditBox1,Dat) 

Posted: 2006年5月20日(土) 21:43
by 雷電
コードの順番が間違っていたんですね。
分かりました。
今回はどうもありがとうございました。