ページ 11

バイナリエディタ

Posted: 2006年3月14日(火) 22:55
by むっち
バイナリエディタの作り方を知っている方教えてください。

Posted: 2006年3月14日(火) 23:15
by konisi
そのままソース書いても面白くないので日本語で教えます。
最初は
1、ファイルを1バイト単位で読み込む
2、読み込んだら数値化して16進数に直し、表示する
の順番がいいかと思います。
次は
1、クリックされたら其処が変更されてもいいように待機する
2、コードが変更されたら変数の内容も変更する
ですかね。
最後に、保存するためのボタンを押されたら変数の配列を文字列化して、ファイルに出力する等の処理をすればいいと思います。

追伸
何かを作りたいと思ったら設計からはじめてはいかがでしょうか。また、バイナリエディタはstirやtsxbn等色々なものがあります。それらをよく見て、何をしているのか、を考えてみてはどうでしょうか?

もうちょっと

Posted: 2006年3月14日(火) 23:23
by むっち
もうちょっとできればソースコードをいただけませんかね?
お願いします。

Posted: 2006年3月14日(火) 23:48
by konisi
んじゃ最初の方だけ例を提示。むっちさんがどのようなスタイルの物を作ろうとしているのか分らないので、一部むっちさんにとって不要なものがあったり、必要なものがかけてたりする場合があります。

コード: 全て選択

Dim Bainaly(65535) As Byte
'Dim FileName$ As String'引数に指定しておくか、グローバル変数として宣言しておく。すぐ使うので初期値は代入しておく。
Dim Inp$ As String
Dim i As Long,i2 As Long
Dim Size As Long
Dim Pri$ As String

'ファイル入力
'ランダムアクセスモードで開く
Open FileName$ As #1
Field #1,1
'入力
i2=Lof(1)
if i2>65536 then i2=65536
Size=i2
For i=1 To i2'64キロバイトまで
	Get #1,i,Inp$
	Bainaly(i-1)=Asc(Inp$)'配列に格納
Next i
Close #1'ファイルを閉じる

'表示(一行に16バイトずつ表示する場合のコード例)
For i=1 To Int(Size/16)
	Pri$=""
	For i2=0 To 15
		Pri$=Pri$+Hex$(Bainaly(i*16+i2))+" "
	Next i2
	WriteToWindow(Pri$)'自作関数。今は省略。
Next i