はじめまして。
フィルを開いて、listviewにデータを表示させようと思います。
下記のプログラムを実行すると、
「ファイルにこれ以上データがありません」と
エラーが出てしまいます。
このような、場合はどうのように対処したら良いのか?
教えて頂けないでしょうか?
宜しくお願いします。
環境はVB6.0です
Private Sub mnuFileOpen_Click() '開く
Dim filename As String
Dim lv As ListItem
Dim name, yubin, addless, tel, mail As String '変数宣言
CommonDialog.Filter = "テキストファイル(*.txt)|*.txt|" & "すべてのファイル(*.*)|*.*|"
CommonDialog.ShowOpen '開くのダイアログを表示
filename = CommonDialog.filename 'ファイル名を設定
ListView1.ListItems.Clear 'ファイルをクリアー
Open filename For Input As #1 'ファイルを開く
Do While Not EOF(1)
Input #1, name, yubin, addless, tel, mail 'ファイルを順に呼び込む
Set lv = ListView1.ListItems.Add()
lv.Text = name ' 名前
lv.SubItems(1) = yubin '郵便番号
lv.SubItems(2) = addless '住所
lv.SubItems(3) = tel '電話番号
lv.SubItems(4) = mail 'メール
Loop
Close #1 'ファイルを閉じる
Henkou = False '変更なし
Err:
End Sub
最初に思いつくことは項目数が足りない行や多い行がある...でしょう。
1行はname, yubin, addless, tel, mail と5ヶのはずが
例えばtelが無い行があるとか、半角カンマが多いや少ないとか。
英語表記のaddlessなどだと半角カンマが含まれたりします。
Tokyo JAPAN と言う行と Tokyo,JAPAN と言う行が有ったりすると
ファイル全体の項目数が5の整数倍にならない事が出てきます。
oct様
早速の、助言ありがとうございます。
ご指摘して頂いたことを参考にして見たのですが、
エラーは改善されませんでした。
エラーは、Input #1, name, yubin, addless, tel, mail 'ファイルを順に呼び込むのところで出ております。
内容は、「カーソル下にある識別子が認識できません」と
出ております。
最初の質問のエラーが異なりますね?
最初:「ファイルにこれ以上データがありません」
今回:「カーソル下にある識別子が認識できません」
oct様 誤解を招く記載で申し訳あリません。
「カーソル下にある識別子が認識できません」のエラーは自己解決い たしました。
ですが、最初の「ファイルにこれ以上データがありません」が
解決しません。
試行錯誤、いろいろ試しているのですが、解決策が思いつきませ ん。
最初のエラーはまだ未解決だそうですが、
「カーソル下にある識別子が認識できません」のエラーは何が原因で
解決策は何だったのか後学の為に教えて下さい。
本当にファイルに問題は無いのでしょうか?
下記で項目数を確認して見て下さい。
コードは手打ちなのでミスは適宜修正して下さい。
Dim tmp As string
Dim dat() As string
Dim kazu As Integer '各行の項目数
Dim fp As Integer '行番号
Open filename For Input As #1
Open "kazu.txt" For Output As #2
'Ubound(dat) ==> 配列の指定された次元で使用できる添字の最大値
'実際の項目数は Ubound(dat) + 1
fp =0
Do
Line Input #1,tmp
fp = fp +1
tmp = Replace(tmp,Chr(34),"") 'これは不要かも
dat = Split(dat,",") '半角カンマ区切りの1行の項目数を取得
if Ubound(dat) <> 4 then
Print #2,fp & " : " & Ubound(dat)
end if
Loop Until Eof(1)
Close #1
Close #2
ツイート | ![]() |