どうか、どなたか、ご教示お願いします。
あるバイナリデータの任意アドレスの値を、
書き換えるプログラムを作ろうとしています。
(テキスト表示される方でなく16進数で表示される方)
バイナリファイルを読み込んで、
バイナリファイルに書き込む部分は、何とか出来ました(汗汗
しかし、任意のアドレスの値を、
別の値に変更するコードが分かりません。
今は、こんなコードです。
とりあえず、最初から2ブロック分を「1」に
書き換えることは出来、そこで行き詰まった状態です。
-------------------------
var
TempStream : TMemoryStream;
a: array [0..1] of Byte;
begin
FillChar(a, SizeOf(a), 1);
TempStream := TMemoryStream.Create;
TempStream.LoadFromFile('書換前.dat');
TempStream.WriteBuffer(a, SizeOf(a));
TempStream.SaveToFile('書換後.dat');
TempStream.Free;
end;
-------------------------
どうか、どなたか、ご教示お願いします。
TempStream.Postion := 任意の場所
TempStream.WriteBuffer(a, SizeOf(a));
orzさん、素早いアドバイス、ありがとうございました!!
希望通りの事ができました。
function HexToInt( const S: string ): Integer;
var
E: Integer;
begin
Val( '$' + S, Result, E );
end;
procedure TForm1.FormCreate(Sender: TObject);
var
TempStream : TMemoryStream;
tmpByte: Byte;
begin
TempStream := TMemoryStream.Create;
TempStream.LoadFromFile('書換前.dat');
tmpByte:= HexToInt('FF');
TempStream.Position := HexToInt('150');
TempStream.WriteBuffer(tmpByte, SizeOf(tmpByte));
TempStream.SaveToFile('書換後.dat');
TempStream.Free;
end;
ツイート | ![]() |