先頭2バイトを弄ったファイルを読み込むには

解決


マプー  2008-12-18 14:07:58  No: 32926  IP: 192.*.*.*

procedure TForm1.Crypt;
var
  ms : TMemoryStream;
  c  : array[1..2] of Char;
begin
  ms := TMemoryStream.Create;
  ms.LoadFromFile('aaa.bmp');
  c := 'DA';
  ms.Write(c,sizeof(c));
  ms.SaveToFile('bbb.bom');
  ms.Free;

end;

procedure TForm1.Load;
var
  ms : TMemoryStream;
  c  : array[1..2] of Char;
begin
  ms := TMemoryStream.Create;
  ms.LoadFromFile('bbb.bom');
  c := 'BM';
  ms.Write(c,sizeof(c));
  //Image1.Picture.Bitmap.LoadFromStream(ms);  ←これがエラー吐く
  ms.SaveToFile('ccc.bmp');
  Image1.Picture.Bitmap.LoadFromFile('ccc.bmp');
  DeleteFile('ccc.bmp');
  ms.Free;
end;

現在ゲームを作っていて、ファイルを見られるのを防ぐために、
Cryptでビットマップファイルの先頭2バイトを弄り(BM→DA)、
Loadでそれを読み込もうとしているのですが・・・
読み込んでファイルの先頭を修正したあと、
TMemoryStreamから直接TBitmapに読み込ませるとエラーを吐きます。
しかし、SaveToFileでファイルを作るとWindowsではちゃんとビットマップとして読み込めるし
そのファイルをTBitmapで読み込むことができます。
一旦ファイルを作成せずに読み込ませる事はできないでしょうか?

編集 削除
monaa  2008-12-18 14:10:35  No: 32927  IP: 192.*.*.*

読み込み後に
ms.position:=0 がネース。

編集 削除
マプー  2008-12-18 14:13:31  No: 32928  IP: 192.*.*.*

なるほど。
ms.Write(c,sizeof(c));
のあとでms.positionが2になってしまうからエラー吐くのね。
monaaさんありがとうございました!

編集 削除