「武器を身につけよう」へ戻る

3.保存したデータを読み込む

単純に 「2.座標データを保存しておく」 の反対のことをやります。2で作ったファイルのデータを使います。

考え方としては、FSOオブジェクトを使ってデータを変数に代入するだけです。但し保存した時と同じ順番で呼び出すのを忘れずに。

早速 「保存したデータを読み込む」 スクリプト作成に取り掛かりましょう。
それではいつもの通りFSOのインスタンスを作りましょう。

Topへ
dim fso
Set fso=CreateObject("Scripting.FileSystemObject")

あとで読み込むfileのPathを用意しておきましょう。(ここでは2で保存したファイルのPathになります。)

参考までに右図が「2.座標データを保存しておく」のスクリプト例で保存したデータです。
(描いた線形状によりデータの値は違っているはずです)

dim strPath
strPath="c:\posData.txt"
Topへ

今回もOpenTextFileでTextStreamオブジェクトを取得します。
読み込みだけです。fileがない時は作成しません。
(Fileが無いということは2でファイルを作らなかった、パスが間違っている、削除された、のいずれかです)

dim objStream
Set objStream=fso.OpenTextFile(strPath,1,false)

引数の説明はもういいですね。

データを保存した時WriteLineを使ったのでそれに対応する一行読み込み用のメソッドReadLineを使います。
受け取り用の変数も宣言して用意します。(ここでは開くデータの数が3つのポイントで3次元ということが既知という前提です)

dim AnchorPt(2,2)

for i=0 to 2
 for j=0 to 2
  AnchorPt(i,j)=objStream.Readline()
 next
next
Topへ

変数にファイルのデータを確保したのでファイルを閉じます。

objStream.close()

ついでに必要なくなったインスタンスを開放しておきましょう。

Set fso=nothing
Set objStream=nothing

最後に,ついでなのでデータから閉じた線形状を作ってしまいましょう。

XShade.StartPolygon(true)
 for i=0 to 2
  XShade.AppendPoint AnchorPt(i,0),AnchorPt(i,1),AnchorPt(i,2)
 next
XShade.FinishPolygon()

以上です。
右図は実行した結果です。

前項「2.座標データを保存しておく」 の例で保存した線形状が復元された事がわかります。

まとめてみましょう

dim AnchorPt(2,2)
dim strPath
dim fso,objStream
dim i,j

strPath="c:\posData.txt"
Set fso=CreateObject("Scripting.FileSystemObject")
Set objStream=fso.OpenTextFile(strPath,1,false)
for i=0 to 2
 for j=0 to 2
  AnchorPt(i,j)=objStream.Readline()
 next
next
objStream.close()
Set fso=nothing
Set objStream=nothing

XShade.StartPolygon(true)
 for i=0 to 2
   XShade.AppendPoint AnchorPt(i,0),AnchorPt(i,1),AnchorPt(i,2)
 next
XShade.FinishPolygon()


実用性を考慮した場合の留意点は前項 例2と同じです。(ファイルがないとエラーが出ます。)

「武器を身につけよう」へ戻る Topへ