Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stream und Datei (https://www.delphipraxis.net/24008-stream-und-datei.html)

Imagination 13. Jun 2004 23:13


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:
var
  aStream: TMemoryStream;
  bStream: TMemoryStream;
begin

  aStream := TMemoryStream.Create;
  bStream := TMemoryStream.Create;
  aStream.LoadFromFile(Dateipfad);
(2) ?

(3)
Delphi-Quellcode:
  bStream.SaveToFile(neuer_dateipfad);
  aStream.Free;
  bStream.Free;
Wie lautet der Befehl für (2) oder hat jemand einen Ansatz?

Mit
Delphi-Quellcode:
Stream.CopyFrom(..)
wird der gesamte Stream kopiert und mit Hier im Forum suchenStream.Seek usw hab ich den Befehl nicht verstanden :roll:

neolithos 13. Jun 2004 23:59

Re: Stream und Datei
 
Delphi-Quellcode:
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;
Vorsichtig! Nicht getestet!

Muetze1 14. Jun 2004 00:22

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:
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;
MfG
Muetze1

neolithos 14. Jun 2004 07:58

Re: Stream und Datei
 
Übrigens ob du Seek oder Position verwendest, ist eigentlich egal. Denn Position führt auf Seek zurück.

Muetze1 14. Jun 2004 08:31

Re: Stream und Datei
 
Moin!

Zitat:

Zitat von neolithos
Übrigens ob du Seek oder Position verwendest, ist eigentlich egal. Denn Position führt auf Seek zurück.

1. Das weiss ich.
2. Habe nie was anderes behauptet.

/EDIT: Sorry, dann habe ich das falsch verstanden...

MfG
Muetze1

neolithos 14. Jun 2004 11:03

Re: Stream und Datei
 
Zitat:

Zitat von Muetze1
Moin!

Zitat:

Zitat von neolithos
Übrigens ob du Seek oder Position verwendest, ist eigentlich egal. Denn Position führt auf Seek zurück.

1. Das weiss ich.
2. Habe nie was anderes behauptet.

MfG
Muetze1

Das war auch nicht an dich gerichtet! Sondern nur als Ergänzung gedacht.

Imagination 14. Jun 2004 20:35

Re: Stream und Datei
 
Vielen Dank! Jetzt habe ich es endlich verstanden :-D

:dp: :dp: :dp:

DP-Maintenance 15. Jun 2004 00:01

DP-Maintenance
 
Dieses Thema wurde von "Luckie" von "Windows API" nach "Object-Pascal / Delphi-Language" verschoben.


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