![]() |
Stream und Datei
Hallo,
ich möchte eine Datei in einen Stream laden (1) und die Mitte der Datei bis zu seinem Ende in einen anderen Stream kopieren (2). Dann den neuen Stream in eine neue Datei speichern(3). (1)
Delphi-Quellcode:
(2) ?
var
aStream: TMemoryStream; bStream: TMemoryStream; begin aStream := TMemoryStream.Create; bStream := TMemoryStream.Create; aStream.LoadFromFile(Dateipfad); (3)
Delphi-Quellcode:
Wie lautet der Befehl für (2) oder hat jemand einen Ansatz?
bStream.SaveToFile(neuer_dateipfad);
aStream.Free; bStream.Free; Mit
Delphi-Quellcode:
wird der gesamte Stream kopiert und mit
Stream.CopyFrom(..)
![]() |
Re: Stream und Datei
Delphi-Quellcode:
Vorsichtig! Nicht getestet!
var stm1,
stm2 : TStream; ... stm1 := TFileStream.Create('datei1', fmOpenRead); stm2 := TFileStream.Create('datei2', fmCreate); stm1.Seek(stm1.Size div 2, soFromBeginning); stm2.CopyFrom(stm1); stm1.Free; stm2.Free; |
Re: Stream und Datei
Moin!
Seek musst du nicht nehmen, du kannst auch einfach die Eigenschaft Position setzen... Dann muss du bei CopyFrom als 2. Parameter die Anzahl der Bytes angeben, ansonsten nimmt er 0 an und das bedeutet dann alles kopieren von dem anderen Stream - und das wollen wir nicht. Bei der Angabe von 0 seek'ed er sogar zum Anfang des anderen Streams und geht nicht von der aktuellen Position aus.
Delphi-Quellcode:
MfG
var stm1,
stm2 : TStream; ... stm1 := TFileStream.Create('datei1', fmOpenRead); stm2 := TFileStream.Create('datei2', fmCreate); stm1.Position := stm1.Size div 2; stm2.CopyFrom(stm1, stm1.Size - stm1.Position); stm1.Free; stm2.Free; Muetze1 |
Re: Stream und Datei
Übrigens ob du Seek oder Position verwendest, ist eigentlich egal. Denn Position führt auf Seek zurück.
|
Re: Stream und Datei
Moin!
Zitat:
2. Habe nie was anderes behauptet. /EDIT: Sorry, dann habe ich das falsch verstanden... MfG Muetze1 |
Re: Stream und Datei
Zitat:
|
Re: Stream und Datei
Vielen Dank! Jetzt habe ich es endlich verstanden :-D
:dp: :dp: :dp: |
DP-Maintenance
Dieses Thema wurde von "Luckie" von "Windows API" nach "Object-Pascal / Delphi-Language" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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 by Thomas Breitkreuz