Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#36

AW: Datei an Datei anhängen

  Alt 26. Sep 2010, 15:05
[...]Und es gibt viele die nicht das Rad neu erfinden: jars, Open Document, Open Office XML Dokumente verwenden alle *.zip zum komprimieren.[...]
Selbst MS nutzt das ZIP-Format für die neuen Office-Dokumente
Argh ein Verdreher, aber Office Open XML ist das neue Format von Office (docx etc.).

Und wegen der Länge: Wenn die JPG im Stream drin ist, dann ist sie ja fertig kodiert etc. das heißt man kennt schon deren Größe. Ein anderer Weg wäre die Länge hinten zu speichern. Bei Schreiben wird dann direkt hintereinander weg geschrieben, und beim lesen wird die letzte Größe gelesen, soweit nach vorne gesprungen und dann eingelesen werden:
Code:
i := Lese letzten Cardinal
Mache solange
  Springe i Bytes - Cardinalbreite * 2 zurück
  j := Lese Cardinal (= Länge von den Daten davor)
  Lese i Bytes
  Springe (i + j) Bytes - Cardinalbreite * 2 zurück
  i := j;
bis Position <= 0
Der aktuelle Weg wäre auch mit einem Pufferstream möglich. Darein kopiert man den Inhalt nimmt die Länge, schreibt sie, und kopiert dann den Inhalt des Pufferstreams in den echten Dateistream.

[redbox]Statt Image1.SaveToStram mach mal lieber Image1.Picture.SaveToStream. Das TImage zeigt nur ein TPicture an, das heißt speichern kann nur das Bild selber (und nicht der "Anzeiger").[/redbox]

[redbox #2]TImage selber geht nicht zu speichern, nur das Bild, was es geladen hat.[/redbox #2]

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat