hallo,
funktioniert doch nicht wie ichs mir gedacht hab.
mir ist ein Fehler im Code von H4ndy aufgefallen:
Delphi-Quellcode:
begin
Entzipper.Read(Groese, sizeof(Groese));
MemStream := TMemoryStream.Create;
[color=#ff001f]MemStream.LoadFromStream(EntZipper, Groese);[/color]
MemStream.Position := 0;
Bitmap.LoadFromStream(MemStream);
es gibt kein LoadFromStream, bei dem ein weiterer Größenparameter angegeben werden kann
ich hab das Bild in einen MemoryStream geladen, dann die Größe des Streams mit MemStream.Size ermittelt und in den Zipper geschrieben und danach mit MemStream.SaveToStream(Zipper) das "Bild" gespeichert.
Delphi-Quellcode:
...
MemStream := TMemoryStream.Create;
...
Bild.SaveToStream(MemStream);
TempI64 := MemStream.Size;
Zipper.Write(TempI64, SizeOf(TempI64);
MemStream.SaveToStream(Zipper);
...
FreeAndNil(MemStream);
Das funktioniert auch, nur ob es wirklich richtig ist, bezweifle ich da ich beim Auslesen die Fehlermeldung "invalid Bitmap..." erhalte.
Beim Lesen ermittle ich erstmal die Größe des MemStreams. Dann Lade ich den Stream. Allerdings weis ich nicht, welche die richtigere Methode zum Laden wäre:
Delphi-Quellcode:
...
MemStream := TMemoryStream.Create;
...
EntZipper.Read(TempI64, SizeOf(TempI64));
//welche Methode ist die richtige?
MemStream.LoadFromStream(EntZipper); // Dann bräuchte ich aber die Größenangabe nicht, oder muss
// ich erst mit SetSize die Größe bestimmen???
MemStream.CopyFrom(EntZipper, TempI64);
...
Bild.LoadFromStream(MemStream);
...
FreeAndNil(MemStream);
geht es nicht doch irgendwie das ganze auch ohne den umständlichen MemoryStream-Weg zu lösen. Bei einem TFileStream funktioniert das ganze - erst bei der Verwendung von der ZLibEx /
Zlib tritt der Fehler auf!!
danke für hilfe,
heiopei