AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Teil eines TFilestreams in einen anderen Stream kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Teil eines TFilestreams in einen anderen Stream kopieren

Ein Thema von johannes · begonnen am 19. Feb 2003 · letzter Beitrag vom 20. Feb 2003
Antwort Antwort
johannes

Registriert seit: 18. Dez 2002
24 Beiträge
 
Delphi 6 Personal
 
#1

Teil eines TFilestreams in einen anderen Stream kopieren

  Alt 19. Feb 2003, 16:19
Ich möchte ein Teil eines TFilestream gin einen anderen Stream kopieren bei kleineren Streams hab ich das einfach so gemacht, das ich ein Memorystream genomen hab aber bei 21MB Daten ist das nicht gerade anzuraten.... Ich hab mir auch überlegt einen zweiten temporären filestream anzulegen und dann die daten darein zu schreiben aber das braucht erstens viel Platz und zweitens muss ich dann erst den kompletten stream auslesen und dann neue schreben muss nur um ihn dann wieder durch eine andere funktion auslesen zu lassen....
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 19. Feb 2003, 17:41
Wenn du nur lesend auf die Datei zugreifst, dann könntest du mit Datei in den Addressraum mappen. (-> Memory Mapped Files). Dadurch kannst du mit einem Array auf die Datei zugreifen.
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3
  Alt 19. Feb 2003, 19:54
Hallo, wenn Du die Methode CoypFrom verwendest, dann zeigt mir ein Blick auf den Quelltext, daß Du nur den Parameter Count setzen mußt. In diesem Fall wird nämlich auch die aktuelle Position im Quellstream nicht angetastet (bei Count 0 wird Position auf 0 gesetzt).
Lutz
  Mit Zitat antworten Zitat
johannes

Registriert seit: 18. Dez 2002
24 Beiträge
 
Delphi 6 Personal
 
#4
  Alt 20. Feb 2003, 15:27
ich benutze schon copyfrom um in ein anderes stream zu kopieren da liegt das problem nicht. Da hab ich mich unklar ausgedrückt....
Das geht bei kleinen Daten Problemlos. Aber bei größeren Daten wie den angesprochenen 21MB dauert das recht lange und verbraucht unmemengen RAM.
So mach ich das in sehr vereinfachter Form bis jetzt:
Delphi-Quellcode:
Result:=TMemoryStream.create;
FileStream.posisition:=Offset;
Result.CopyFrom(FileStream,Length);
FileStream ist ein TFilestream.
Das große Problem ist das ich die 21MB daten auch noch in meinem Programm weitere verarbeiten muss, so dass dan also Zeitweise 42MB Daten im RAM sind was auch bei 256MB Ram nicht gerade wenig ist, da das Programm auch noch etwa 2MB andere Daten im Ram hat....
DAs mit den Memory Mapped Files klngt schn mal gut ich schau mal was sich da so finden lässt , da ich nur esend zugreife..
  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 13:17 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