AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Abbrevia mit streams

Ein Thema von b01 · begonnen am 28. Jul 2006 · letzter Beitrag vom 30. Jan 2008
Antwort Antwort
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#1

Re: Abbrevia mit streams

  Alt 28. Jul 2006, 10:01
Hi,
du gibst recht wenig Code für dieses Beispiel an. An sich gibt es mehrere Gründe, warum deine EAccessViolation auftritt. Ist denn dein zip auch irgendwann mit Create angelegt wurden? Oder ist es automatisch von Delphi erzeugt (zur Designzeit auf dem Formular platziert)?
Dann fehlt natürlich der obligatorische Ressourcenschutzblock
Delphi-Quellcode:
ts := TMemoryStream.Create;
try
  CDStest.SaveToStream(ts,dfXMLUTF8);
  zip.AddFromStream('neuername',ts);
finally
  ts.Free;
end;
Und zu guter Letzt, wie oft hast du denn schon mit Streams gearbeitet? Die Dinger sind sehr sehr einfach aufgebaut. Sehr vereinfacht hast du einfach ein Unendliches Feld (nur durch den verfügbaren Speicher begrenzt), die verwendetet Größe und einen Zeiger auf die aktuelle Position.
Legst du ein neuen Stream an, zeigt der Zeiger auf die erste freie Zelle (also den Anfang des Feldes). Schreibst du x Bytes, so wandert der Zeiger mit und zeigt auf die jetzt aktuelle erste freie Zelle (also x+1). Wenn du jetzt AddFromStream aufrufst, hast du das Problem, dass der Zeiger schon auf das Ende des Feldes zeigt. Hier kannst du kein einziges Byte mehr lesen.
Du solltest also erst den Zeiger schön auf den Anfang setzen und dann lesen:
Delphi-Quellcode:
ts := TMemoryStream.Create;
try
  CDStest.SaveToStream(ts,dfXMLUTF8);
  // <- hier ist ts.Position = dfXMLUTF8
  ts.Position := 0; // <- jetzt wieder auf den Anfang gesetzt
  zip.AddFromStream('neuername',ts);
finally
  ts.Free;
end;
Gruß Der Unwissende
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz