|
やっぱり私の勘違いなのですね。我ながら進歩しないもんです。
> > writebin $filepath, $bindata;
> は何をする命令のつもりで書かれたのでしょうか?
文字列 $bindata で表される(バイナリ)データを中身とする、パスが、
$filepath で表されるファイルを作る、つーつもり書きました。
#既存のファイルなら上書き。
文字列 $filepath で表されるパスを持つファイルの中身を
文字列変数 $bindata に読み込む(つもりで書いた)
> $bindata = getbin($filepath);
の逆のつもり。つまり、ひろさんの、
> getreghex $parameter, $file;
と同じことするなら
$temp = getregbin($parameter);
writebin $file, $temp;
と書かなきゃならんわけです。
> 私には元々その意図はありませんが、
話の流れの中で、ある程度基調をなす話題と理解したまでです。
#しかし、その理解自体が正しいかどうかが危うい。
> 実現するとしたら、レジストリ系と一般のファイル系で
> 別々のコマンドが必要になるでしょう。
の前に、「レジストリおよびファイルに対してのバイナリデータの
読み書きを」とつけるべきだったのでしょうね、私が。
> > これだと確かに一時的に設定を保存する場合に便利ですね。
> と書いていますが、一般の binary data を扱うことは、私の念頭にありま
> せん。(利用方法が想い浮かばないため)
> 文字列変数の上
> 限に引っかかってしまう場合があるので、一時的に data を保存するfile
> name を第 2 引数 $file で表しているのです。
これでやっと理解できました、多分。<あんまし自信ない。
ひろさんの頭の中では
レジストリからのバイナリデータの読み取りとファイルへの書き出し、
ファイルからのバイナリデータの読み込みとレジストリへの書き込み、
が「それぞれ」対応している(つーか、くっついている)のですね。
レジストリから読み取ったデータを変数に格納せずに直接ファイルに
書き出し、またその逆に、レジストリに書き込む際に、変数からではなく、
(バイナリ)ファイルから直接流し込む、マクロの中ではデータの内容を
読んだり、改変したりってな野蛮なことはしない。
ということなんですね。
アルビレオさんもおそらく同じことをおっしゃってるんでしょうか?
私は(勝手に)
レジストリから文字列変数にバイナリデータを読み出せるように
ファイルからも文字列変数にバイナリデータを読み込める。
また、文字列変数の中身をバイナリデータと解釈してレジストリに
書き込めるように、同じものがファイルにも書き出せる。
という話だと思っていました。
念のため、「美しい」云々は、変数相手にやりとりするという前提なら
#n = getregnum($key1);
$str = getregstr($key2);
$bin = getregbin($key3); //確かに"hex"の方が分かりやすいですね。
writeregnum $key1, #n;
writeregstr $key2, $str;
writeregbin $key3, $bin;
と既存の関数やコマンドとそろえるんだろうね、
っていう非常にレベルの低い話でした。
最後に蛇足ながら
> //他の文との表記から、#result = getreghex($parameter, $file) の方が better?
TKinfo.dllならともかく、秀丸マクロでは、コマンドの実効結果(=成否)は
勝手に result に入っている、というのが一般的ですね。
さて、素人はもう余計な口出ししませんので、本題に戻って
建設的な話を進めてくださいませ。お騒がせしました。
|
|