HSP命令講座 <memset命令>

Last Update : 2007/04/xx

PR プログラミング関連の書籍本

memset命令 (メモリブロックの変更)

 メモリブロックのクリア、指定した1バイト値でメモリ領域を一括変更する命令です。命令名の由来は、「memory set」から。

 memset バッファ変数, 変更する1バイト値, 変更するバイトサイズ, メモリオフセット

 HSP3では、1バイト書き込みにpoke関数、2バイト書き込みにwpoke関数、4バイト書き込みにlpoke関数が用意されてますが、この命令はそれ以上のサイズの書き込みが可能です。具体的にサンプルで解説しましょう。

↑TOP↑

サンプルソース

 半角1バイトの記号「!」(エクスクラメーションマーク、0x21)を64バイト(64個)分書き出したテキストファイルを出力してみます。sdim命令で書き換え対象となる変数領域を確保しておきましょう。

//	必ず領域を確保(ここでは64バイト分)
	sdim buf

;	64バイト分書き出し
	memset buf, '!', 64

	bsave "hogege.txt", buf

 次に「!」の32バイト分と、その後半部分に「?」(クエッションマーク、0x3F)を32バイト分書き出したテキストファイルです。

	sdim buf

;	前半の32バイト分
	memset buf, '!', 32

;	第4パラメータでオフセット値指定して後半の32バイト目から
	memset buf, '?'. 32, 32

	bsave "hogege.txt", buf

 memset命令の第2パラメータは1バイトの半角文字(半角カタカナOK)を指定しなければなりません。たとえば、2バイト文字の日本語はダメです。(ここらへんはHSP付属のドキュメント『HSP3文字列のひみつ(中級者向け) (hsp3str.htm)』をチェック!

//	○
	memset buf, 'ア', 64
//	×ダメダメ (コンパイルエラー)
	memset buf, "あ", 64

//	×ダメダメ (エラーにはならないが文字化け)
	memset buf, 'あ', 64

↑TOP↑

復元を防ぐファイルの削除

 HSPにはファイルを削除する命令にdelete命令が用意されてます。実際に削除すると、「ごみ箱」を経由しないで消去された形になります。ただ、ハードディスク上にはデータは残っており、条件が整えばファイルを復旧・復元させることができます。フリーのファイル復元ツールがVectorで公開されてます。

 ここでmemset命令を使えは、このようなツールで復元できないファイルの削除が可能です。ファイルを読み込み(notesel命令+noteload命令、bload命令)、その変数バッファの内容を一気に書き換え(memset命令)て、ファイルをそのまま上書き保存(notesave命令、bsave命令)し、そのファイルを削除(delete命令)する流れです。

 こうすることで、仮にファイル自体は復元できても、肝心の中身がスッカラカンになってるわけです。

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.