皆さん こんにちは。
この度 60才になり退職して ボケ防止と頭の体操を兼ねて
ABを 初めて利用して件名の様な事を教えて頂きたいのです。
宜しくお願い致します。
1)text1.txtというテキスト形式のファイルを読込
(WINDOWSのOPENダイアログを表示してファイルを選択出来る様にしたい)
2)1行毎をメモリー保存
3)1行毎の左の始めての文字列(0~3文字)を判断して.
その行の空白(半角文字列)毎に区切って メモリーに保存し
その文字列や数数値を利用して 文字列を置換えたり 計算したりします
その 結果を 1行に 空白(半角文字列)で区切って 並べて改行する
この作業を繰り返して 数十行作成し
4)1行毎をメモリーに追加
5)上の追加された数十行のテキスト行をtext2.txtと言うテキスト形式で
別ファイルにて保存する。
(WINDOWSのOPENダイアログを表示して保存場所を選択出来る様にしたい)
上の様な感じの事を考えているのですが
初めてA.Basicに触るので 何をどうしてよいのやら全く解りません
もし 可能でしたらサンプルコード等を お願い致します。
また 上の遣りたい事の内容が変な事を書いてかも知れません?事を
お許しください。
皆さん 御教授の程 宜しくお願い致します。
[text1.txtの内容]---------------------------------------------------------------
hk 0
hs 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 1
hcw 2 2.5 3 4 5 6 7 8 9 10
hch 2 2.5 3 4 5 6 7 8 9 10
hcd 0 0 0.5 0.5 0.5 1 1 1 1 1
hcc 1 1 2 2 3 3 4 4 5 5
hn -18877.177508269 6292.39250275634 262.18302094818 26611.5766262404
lg0
ly0
lc2
lt1
cn5
cn"$<MS ゴシック>
# <<コメント行
-13427.8986833087 23915.5528890136 -14005.7146764299 23915.5528890136
ch 8.200000e+003 -1.180000e+004 .000000e+002 .000000e+000 "合 計
ch 2.340000e+004 -1.180000e+004 1.000000e+002 0.000000e+000 "345.67575
ci -1.011523e+004 -2.324192e+004 6.000000e+002 0.000000e+000 0.000000e+000 7.000000e-001
text1.txtの読込→1行毎判断.計算.編集→text2.txt書出
スペースで区切る作業なら
どうせスペースで区切るのなら、ファイルから読み込むときにそうしておけば楽です。
というわけでその場合に楽にするための僕が使いまわしている関数を載せます。
というわけでその場合に楽にするための僕が使いまわしている関数を載せます。
[ここをクリックすると内容が表示されます]
使い方
コード: 全て選択
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の時、ファイルの終端に来たために読み込むのをやめました。
備考:ファイルポインタは自動で移動します。
返り値:読み込んだデータ
読み込むのをやめるタイミング:スペースかタブ、あるいは復帰か改行が出現するまで。あるいはファイルの終端に到達するまで。
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
最後に編集したユーザー konisi [ 2006年4月30日(日) 18:54 ], 累計 1 回
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
追伸
WindowsのOpenダイアログなら、GetOpenFileName関数を使えば出来たような気がします。
でも使い方忘れました。
でも使い方忘れました。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。