AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi mehrere streams in eine datei speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere streams in eine datei speichern?

Ein Thema von Weazy · begonnen am 23. Aug 2006 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#1

mehrere streams in eine datei speichern?

  Alt 23. Aug 2006, 10:33
Ich habe mehrere streams die ich in eine Datei speichern und auch wieder auslesen kann. Ist das überhaupt möglich und wenn ja, wie??? danke!!!
Philippe Wechsler
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#2

Re: mehrere streams in eine datei speichern?

  Alt 23. Aug 2006, 10:46
Hallo Weazy,

ja das ist möglich.
Du solltest in dem Ziel-Stream zuerst die Größe des Quellstreams speichern.
Danach kannst du mit CopyFrom die Daten von der Quelle in das Ziel speichern.
Dieser Vorgang kann dann für mehrere Quellen wiederholt werden.

Beim Laden solltest du dann zuerst die Größe laden und danach
entsprechend der geladenen Größe die passende Anzahl an Bytes von der
Quelle in Ziel kopieren.


Delphi-Quellcode:
// Speichern
VAR Size : Int64;
BEGIN

  Size := Source.Size;
  Target.Write(Size, SizeOf(Size));
  Source.Seek(0, soFromBeginning); // Lesezeiger an den Anfang des Streams setzen!
  Target.CopyFrom(Source, Size);

END;


// Laden
VAR Size : Int64;
BEGIN

  Source.Read(Size, SizeOf(Size));
  Source.CopyFrom(Target, Size);

END;
** ungetestet **

Das sollte mit allen TStreams klappen. Du kannst dann z.B. von 10 TMemoryStream in einen TFileStream speichern.

Gruß,
pszopp
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: mehrere streams in eine datei speichern?

  Alt 24. Aug 2006, 11:22
Danke! Das mit dem speichern klappt schon mal. Nur beim laden kommt es immer zu einem "Stream-Fehler". Könnte das möglicherweise daran liegen, das ja die grösse der verschiedenen Streams unbekannt ist?
Philippe Wechsler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: mehrere streams in eine datei speichern?

  Alt 24. Aug 2006, 11:28
Du mußt dir natürlich damit es keine Datensenke ist auch ein Format überlegen wie du die einzelnen Streams voneinander abtrennst. Ein ganz einfacher Ansatz wäre ein 8-Byte großen Längenangabe vor jedem Stream zu schreiben.

pszopp-Beispiel macht ja genau das
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#5

Re: mehrere streams in eine datei speichern?

  Alt 24. Aug 2006, 11:35
Ich hatte auch noch einen Fehler beim Laden.
So sollte es besser gehen:

Delphi-Quellcode:
// Laden
VAR Size : Int64;
BEGIN

  Source.Read(Size, SizeOf(Size));
  // Source sollte für dein Beispiel ein TFileStream sein.
  // Target ist dann einer deiner Streams, die nun aus der Datei geladen werden.
  Target.CopyFrom(Source, Size);

END;
Gruß,
pszopp
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  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 02:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz