バイナリデータの書き込み

解決


Kenny  2006-08-20 00:45:20  No: 22935

バイナリエディタで開いた時に
000000  0101010101010101-0101010101010101
000010  0101010101010101-0101010101010101
という風に見えるデータファイルを作りたいのですが、

var
  TempStream : TMemoryStream;
  a:string;
begin
  a:='0101';
  TempStream := TMemoryStream.Create;
  TempStream.WriteBuffer(Pointer(a)^,Length(a));
  TempStream.SaveToFile('C:\test\test.dat');
  TempStream.Free;
end

とすると、当然ASCII文字としての'0101'が書き込まれ、バイナリ表示を
すると'30313031の4バイトが書き込まれています。
希望のようにバイナリコードを書き込むにはどうしたらいいのでしょうか。


ビンビン  2006-08-20 02:27:40  No: 22936

例えば

var
  TempStream : TMemoryStream;
  a: array [0..31] of Byte;
begin
  FillChar(a, SizeOf(a), 1);
  TempStream := TMemoryStream.Create;
  TempStream.WriteBuffer(a, SizeOf(a));
  TempStream.SaveToFile('C:\test\test.dat');
  TempStream.Free;
end;


Kenny  2006-08-20 05:24:44  No: 22937

ビンビンさん、有り難うございます。Byte配列を使うのですね。実は0101と
書いたのは単なる例で任意の数値を扱うのですが、つまずいていたのは
バイナリコードの扱いでしたので、これで解決しました。

しかし、今度は「上書き」「挿入」でつまずきそうです…。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加