Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Inhalt eines Streams teilweise in anderen Stream kopieren (https://www.delphipraxis.net/11060-inhalt-eines-streams-teilweise-anderen-stream-kopieren.html)

Tyrael Y. 30. Okt 2003 13:19


Inhalt eines Streams teilweise in anderen Stream kopieren
 
Hi zusammen,

mittels eines TFileStreams lese ich Daten aus einer Datei.
In dieser Datei sind verschiedene Daten gespeichert.

Das Format ist etwa so ... Länge Wert Länge Wert Länge Wert ... usw.

über
Delphi-Quellcode:
  FileStream.Read(Value, SizeOf(Value))
lese ich einige Werte aus..

dann kommt innerhalb der Datei ein Blob Feld das ich gespeichert habe.

Um dieses BlobFeld zu lesen erstelle ich ein TMemoryStream
Delphi-Quellcode:
  MemStream := TMemoryStream.Create;
dann versuche ich die Daten aus dem FileStream auf das MemoryStream zu übertragen
Delphi-Quellcode:
  FileStream.ReadBuffer(MemStream, Length);
ist das überhaupt bis hierhin ok?

MemStream.CopyFrom() kann ich nicht einsetzen, da nach dem Blob Wert noch andere Werte folgen
und CopyFrom den ganzen Stream kopiert.


Grüße Tyrael

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

Tyrael Y. 30. Okt 2003 13:27

Re: Inhalt eines Streams teilweise in anderen Stream kopiere
 
Wenn jemand einen Vorschalg hat wie man einen Stream teilweise in einen anderen Kopieren kann

bitte melde dich *grins*

Grüße

Wormid 30. Okt 2003 13:40

Re: Inhalt eines Streams teilweise in anderen Stream kopiere
 
Delphi-Quellcode:
function CopyFrom(Source: TStream; Count: Int64): Int64;
CopyFrom kopiert laut meiner OH nicht den ganzen Stream... sondern nur die in Count angegeben Anzahl an Bytes...

Gruß

Wormid

Tyrael Y. 30. Okt 2003 13:43

Re: Inhalt eines Streams teilweise in anderen Stream kopiere
 
Ja hast recht.
hab mich falsch ausgedrückt.

CopyFrom fängt am Anfang des Streams an zu kopieren und kopiert angegebene Zahl an Bytes.

Der FileStream ist aber an einem bestimmtem Platz innerhalb der Datei und
ich möchte gerne das angegebene Anzahl Bytes ab dieser Position kopiert werden.


Hoffe jetzt ist es verständlicher.

sry nochmal


Gruß Tyrael

Wormid 30. Okt 2003 14:00

Re: Inhalt eines Streams teilweise in anderen Stream kopiere
 
Öhm... das ist nicht ganz korrekt...

Zitat:

Zitat von Delphi's Online Hilfe
Wenn Count 0 enthält, setzt CopyFrom vor dem Lesen die Position in Source auf 0 und kopiert dann den gesamten Inhalt von Source in den Stream. Wenn Count größer oder kleiner als 0 ist, liest CopyFrom ab der aktuellen Position in Source.


Tyrael Y. 30. Okt 2003 14:11

Re: Inhalt eines Streams teilweise in anderen Stream kopiere
 
hab gerade auch mal gelesen du hast Recht, ups :oops:

hm komisch

ich schreib nämlich den stream in eine DB (der Blob ist ein Bild)

Code:
TBlobField(aTable.FieldByName(aFieldName)).LoadFromStream(MemStream);
und wenn ich das Feld auslesen möchte, bekomme ich kein Bild als Ergebnis..

hm..komisch...muss nochmal gucken.....

...danke dir schonmal....


Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 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