AGB  ·  Datenschutz  ·  Impressum  







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

Stream und Datei

Ein Thema von Imagination · begonnen am 14. Jun 2004 · letzter Beitrag vom 15. Jun 2004
Antwort Antwort
Imagination

Registriert seit: 19. Mär 2003
14 Beiträge
 
#1

Stream und Datei

  Alt 14. Jun 2004, 00:13
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 Stream.CopyFrom(..) wird der gesamte Stream kopiert und mit Hier im Forum suchenStream.Seek usw hab ich den Befehl nicht verstanden
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Stream und Datei

  Alt 14. Jun 2004, 00:59
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!
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Stream und Datei

  Alt 14. Jun 2004, 01:22
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Stream und Datei

  Alt 14. Jun 2004, 08:58
Übrigens ob du Seek oder Position verwendest, ist eigentlich egal. Denn Position führt auf Seek zurück.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Stream und Datei

  Alt 14. Jun 2004, 09:31
Moin!

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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

Re: Stream und Datei

  Alt 14. Jun 2004, 12:03
Zitat von Muetze1:
Moin!

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.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Imagination

Registriert seit: 19. Mär 2003
14 Beiträge
 
#7

Re: Stream und Datei

  Alt 14. Jun 2004, 21:35
Vielen Dank! Jetzt habe ich es endlich verstanden

  Mit Zitat antworten Zitat
15. Jun 2004, 01:01
Dieses Thema wurde von "Luckie" von "Windows API" nach "Object-Pascal / Delphi-Language" verschoben.
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 00: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