by konisi » 2006年4月30日(日) 18:46
どうせスペースで区切るのなら、ファイルから読み込むときにそうしておけば楽です。
というわけでその場合に楽にするための僕が使いまわしている関数を載せます。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
Dim NowLoad As Long
Dim GlobalError As Long
Dim LoadState As Long
Function Load() As String
LoadReturn()'空行を読み飛ばす
Dim A$ As String
Dim B$ As String
Dim I As Long
Do
A$=""
Get #1,NowLoad+I,A$
If A$=Chr$(32) or A$=Chr$(9) then'スペースかタブなら
LoadState=1
Exit Do
ElseIf A$=Chr$(13) or A$=Chr$(10) then '復帰か改行なら
NowLoad=NowLoad+1
LoadState=2
Exit Do
End If
B$=B$+A$
If Eof(1) then
GlobalError=2'読み込み中にファイル終端に到達
Exit Do
End If
I=I+1
Loop
NowLoad=NowLoad+I
Load=B$
End Function
Sub LoadReturn()
Dim A$ As String
Do
A$=""
Get #1,NowLoad,A$
If A$(0)=13 or A$(0)=10 or A$(0)=9 or A$(0)=32 then
NowLoad=NowLoad+1
Else
Exit Do
End If
If Eof(1) then
GlobalError=2'読み込み中にファイル終端に到達
Exit Do
End If
Loop
End Sub
Function OfLoad1() As String
Dim A$ As String
Get #1,NowLoad+1,A$
If Eof(1) then
GlobalError=2'読み込み中にファイル終端に到達
End If
OfLoad1=A$
End Function
Sub LineLoad()
Dim A$ As String
Do
A$=""
Get #1,NowLoad,A$
If A$(0)=13 and OfLoad1()=Chr$(10) then Exit Do
NowLoad=NowLoad+1
If Eof(1) then
GlobalError=2
Exit Do
End If
Loop
LoadReturn()
End Sub
使い方
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
Load()関数
返り値:読み込んだデータ
読み込むのをやめるタイミング:スペースかタブ、あるいは復帰か改行が出現するまで。あるいはファイルの終端に到達するまで。
LoadState=1の時、スペースかタブの出現が原因で読み込むのをやめました。
LoadState=2の時、復帰か改行の出現が原因で読み込むのをやめました。
GlobalError=2の時、ファイルの終端に来たために読み込むのをやめました。
まず、Open関数でランダムアクセスモードで、ナンバーは1で開きます。
フィールドは1バイト。
あとは返り値指定して呼ぶだけ。
備考:ファイルポインタは自動で移動します。
OfLoad1()関数
返り値:読み込んだデータ
読み込むのをやめるタイミング:1バイト読み込んだら
備考:ファイルポインタは進みません。
LoadReturn()関数
返り値:なし
読み込むのをやめるタイミング:復帰、改行、スペース、タブに遭遇しなくなるまで。空白文字列ではなくなるまで。あるいはファイルの終端に到達するまで。
GlobalError=2の時、ファイルの終端に来たために読み込むのをやめました。
備考:ファイルポインタは自動で移動します。
LineLoad()関数
返り値:なし
読み込むのをやめるタイミング:改行セットが出現したら。あるいはファイルの終端に到達するまで。
GlobalError=2の時、ファイルの終端に来たために読み込むのをやめました。
備考:ファイルポインタは自動で移動します。
サンプル
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
#console
Dim A$ As String
Dim FileName$ As String
Input "FileName...",FileName$
Open FileName$ As #1
Field #1,1
A$=Load()
If A$="hk" then
'記述
ElseIf A$="hck" then
'記述
'以下略
End If
LineLoad()
Close #1
どうせスペースで区切るのなら、ファイルから読み込むときにそうしておけば楽です。
というわけでその場合に楽にするための僕が使いまわしている関数を載せます。
[hide]
[code]
Dim NowLoad As Long
Dim GlobalError As Long
Dim LoadState As Long
Function Load() As String
LoadReturn()'空行を読み飛ばす
Dim A$ As String
Dim B$ As String
Dim I As Long
Do
A$=""
Get #1,NowLoad+I,A$
If A$=Chr$(32) or A$=Chr$(9) then'スペースかタブなら
LoadState=1
Exit Do
ElseIf A$=Chr$(13) or A$=Chr$(10) then '復帰か改行なら
NowLoad=NowLoad+1
LoadState=2
Exit Do
End If
B$=B$+A$
If Eof(1) then
GlobalError=2'読み込み中にファイル終端に到達
Exit Do
End If
I=I+1
Loop
NowLoad=NowLoad+I
Load=B$
End Function
Sub LoadReturn()
Dim A$ As String
Do
A$=""
Get #1,NowLoad,A$
If A$(0)=13 or A$(0)=10 or A$(0)=9 or A$(0)=32 then
NowLoad=NowLoad+1
Else
Exit Do
End If
If Eof(1) then
GlobalError=2'読み込み中にファイル終端に到達
Exit Do
End If
Loop
End Sub
Function OfLoad1() As String
Dim A$ As String
Get #1,NowLoad+1,A$
If Eof(1) then
GlobalError=2'読み込み中にファイル終端に到達
End If
OfLoad1=A$
End Function
Sub LineLoad()
Dim A$ As String
Do
A$=""
Get #1,NowLoad,A$
If A$(0)=13 and OfLoad1()=Chr$(10) then Exit Do
NowLoad=NowLoad+1
If Eof(1) then
GlobalError=2
Exit Do
End If
Loop
LoadReturn()
End Sub
[/code][/hide]
使い方
[hide]
Load()関数
返り値:読み込んだデータ
読み込むのをやめるタイミング:スペースかタブ、あるいは復帰か改行が出現するまで。あるいはファイルの終端に到達するまで。
LoadState=1の時、スペースかタブの出現が原因で読み込むのをやめました。
LoadState=2の時、復帰か改行の出現が原因で読み込むのをやめました。
GlobalError=2の時、ファイルの終端に来たために読み込むのをやめました。
まず、Open関数でランダムアクセスモードで、ナンバーは1で開きます。
フィールドは1バイト。
あとは返り値指定して呼ぶだけ。
備考:ファイルポインタは自動で移動します。
OfLoad1()関数
返り値:読み込んだデータ
読み込むのをやめるタイミング:1バイト読み込んだら
備考:ファイルポインタは進みません。
LoadReturn()関数
返り値:なし
読み込むのをやめるタイミング:復帰、改行、スペース、タブに遭遇しなくなるまで。空白文字列ではなくなるまで。あるいはファイルの終端に到達するまで。
GlobalError=2の時、ファイルの終端に来たために読み込むのをやめました。
備考:ファイルポインタは自動で移動します。
LineLoad()関数
返り値:なし
読み込むのをやめるタイミング:改行セットが出現したら。あるいはファイルの終端に到達するまで。
GlobalError=2の時、ファイルの終端に来たために読み込むのをやめました。
備考:ファイルポインタは自動で移動します。
[/hide]
サンプル[hide]
[code]
#console
Dim A$ As String
Dim FileName$ As String
Input "FileName...",FileName$
Open FileName$ As #1
Field #1,1
A$=Load()
If A$="hk" then
'記述
ElseIf A$="hck" then
'記述
'以下略
End If
LineLoad()
Close #1
[/code][/hide]