HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0909
矢野「bsave」「bload」命令で配列変数は保存、読み込みはできるのか。3解決


矢野

リンク

2007/9/9(Sun) 01:33:43|NO.10980

配列変数をファイルにセーブする時、
2.61用では「bsave」命令でセーブできていたのですが、
3.1用ではセーブできませんでした。

新しく配列変数用の「arraysave」命令が用意されましたが、
この命令は、文字列型の1次元配列変数を複数行文字列に変換した上で、
指定したファイル名で書き出す命令なので、この命令を実行すると、
もとの配列と異なる配列になってしまいます。
当然「arrayload」命令でファイルに読み込んでも正常な読み込みができません。

解決法を教えてください。
配列変数は、sdim Wameilst,6400,200 で作成した文字列型の配列変数です。



この記事に返信する


クリミア

リンク

2007/9/9(Sun) 01:53:25|NO.10982

vsave 命令ではどうでしょうか。



Drip

リンク

2007/9/9(Sun) 02:10:01|NO.10983

Dripです。

 矢野さん、こんにちは。
HSP3からは配列文字列型変数をbsaveひとつでは保存できなくなりました。
ちょっと不便になったような気はしますが、これにより無駄なNullデータを
保存するソフトが減りそうでちょっと嬉しかったりもします。

 さて本題ですが、ではどのように文字列型配列変数の内容を保存するのでしょうか。
典型的な方法で次のような方法があります。

●配列の数を数値型でbsaveにて保存し、その回数だけ
 文字の長さを数値にてbsaveで保存→文字列の内容をbsaveで保存 を繰り返す

 読み込み時は保存された配列の数を読み込んだところで文字列型配列変数を定義し、
読み込みループを行います。この手法は二次元配列でも三次元配列でも少しアルゴリズムを
変えるだけで流用可能です。

 またこの方法は一例に過ぎず、状況によっていくらでもスマートなアルゴリズムを
考案する事ができます。プログラムにあわせて方法を考えてみてください。



矢野

リンク

2007/9/9(Sun) 02:57:18|NO.10984

クリミアさん、Dripさん。

素早い回答ありがとうございました。
成功です。

クリミアさんに教えていただいた「vload」系の命令で解決しました。
「vsave_start」「vsave_put」「vsave_end」「vload_start」「vload_get」「vload_end」
の一連の命令で、きれいに保存と読み込みができました。

また、Dripさんの説明でbsave命令の変更とその対応について知識が深まりました。
ほんとに、感謝感激です。



ONION software Copyright 1997-2023(c) All rights reserved.