Einzelnen Beitrag anzeigen

MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit BitMap.LoadFromStream und MemoryStream

  Alt 3. Apr 2004, 18:37
Guten Abend !

Ich möchte gerne, eine Reihe von BitMaps in einer Datei zusammenfassen:

Delphi-Quellcode:

{In diesem array Speicher ich die größen der Bilder}
TSkinSize = array[0..10] of int64;
SkinSize : TSkinSize;

{Bilder speichern}
procedure TForm1.btnSaveClick(Sender: TObject);
var
  fs : TFileStream;
  ms : TMemoryStream;
  i, SizeOld : integer;
  BitMap : TBitMap;
begin
  if SaveDialog1.Execute then
  begin
    ms := TMemoryStream.Create;
    BitMap := TBitMap.Create;
    SizeOld := 0;

    for i := 0 to 10 do
    begin
      // lvAnzeige : TListView
      BitMap.LoadFromFile(lvAnzeige.Items.Item[i].SubItems[1]);
      BitMap.SaveToStream(ms);
      SkinSize[i] := ms.Size - SizeOld;
      SizeOld := ms.Size;
    end;

    fs := TFileStream.Create(SaveDialog1.FileName, fmCreate);
    try
      fs.Write(SkinSize,SizeOf(SkinSize));
      ms.Seek(0,soFromBeginning);
      fs.CopyFrom(ms,ms.Size);
    finally
      fs.free;
    end;

   ms.Free;
   BitMap.free;
  end;
end;



  {Bilder laden}

  f := 0;
  ms := TMemoryStream.Create;
  fs := TFileStream.Create('C:\Super.skn',fmOpenRead);
  fs.Read(SkinSize,SizeOf(TSkinSize));
  for i := 0 to 7 do
    inc(f,SkinSize[i]);
  fs.Seek(SizeOf(TSkinSize) + f, sofromBeginning);
  ms.CopyFrom(fs, SkinSize[8]);

  Image1.Picture.Bitmap.LoadFromStream(ms);
Aber dummerweise bleibt das Image leer !?

Kann mir jemand sagen was ich falsch mache ?



[Edit]


Delphi-Quellcode:
vor:
  Image1.Picture.Bitmap.LoadFromStream(ms);

muss noch:
  ms.seek(0,sofromBeginning);
[/Edit]
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat