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

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
雷電

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

#1 投稿記事 by 雷電 »

以前のトピックにGTRさんが質問されていましたが、そのような機能がほしいのですが
どういうコードを組んでいいか分かりません。BackSerchABなんかも見てるんですが、なかなかうまくできません。
今思ったのですが、Openで

コード: 全て選択

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

コード: 全て選択

Input #1,File
で読み込んでも、一行しか表示することができません。
それを動かす関数、命令があると思うのですが、分かりません。
ご指導、よろしくお願いします。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

確かInput#文は使ったらファイルポインタが自動で動いてくれるから、そのまま連続してEof(1)がTRUEになるまで読み込み続ければいいのではないかと。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
雷電

#3 投稿記事 by 雷電 »

ということは、Ifで分岐すればいいのですね?
なんか、へたくそですがコードを書いてみましたが、TRUEじゃなかったときの操作はどうやれば良いでしょう?

コード: 全て選択

If Eof(1)=TRUE Then
       Close #1
Else
       'ここの操作が分かりません
End If
という感じですか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#4 投稿記事 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
健闘を祈ります。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
雷電

#5 投稿記事 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$の定義の仕方が分からないので、前のままでやってみました。しかし、うまくいきません。
全ての文字列は取得されず、ランダムにどこかの一列を取得して出力しているようです。なぜでしょうか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#6 投稿記事 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) 
としてみてはどうでしょうか?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
雷電

#7 投稿記事 by 雷電 »

konishiさんありがとうございました。
全ての文字列、取得と表示ができました。
感謝いたします。
雷電

#8 投稿記事 by 雷電 »

すいません。
hはいりませんでした。
失礼しました。
雷電

#9 投稿記事 by 雷電 »

コンパイルしてみてやってみたところ、あとで気がついたのですが、一番最後の行の文字列がセットされません。
何故でしょう?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#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) 
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
雷電

#11 投稿記事 by 雷電 »

コードの順番が間違っていたんですね。
分かりました。
今回はどうもありがとうございました。
返信する