AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Text Dateien (500mb+) in einen String einlesen
Thema durchsuchen
Ansicht
Themen-Optionen

Text Dateien (500mb+) in einen String einlesen

Ein Thema von endeffects · begonnen am 13. Okt 2004 · letzter Beitrag vom 16. Okt 2004
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#21

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 14:41
DumpFile Die Variable war in deinem Letzten Code noch gar nicht drin

Folgendes gilt, wenn es ein String ist, was ich vermute:

DestStream.Write(DumpFile,Length(Buffer)); 1. Du solltest statt Length(Buffer) Length(DumpFile) verwenden, ich nehme an, dass die beiden unterschiedliche Größen haben wegen dem DumpFile:= FastReplace(Buffer[1],'\n', '', False); 2. Außerdem habe ich dir bereits gesagt, dass du bei Read und Write in einen String nicht den Pointer verwenden sollst, sondern die Daten, auf die er zeigt. Also nimm DumpFile[1] statt DumpFile

Dann wird daraus DestStream.Write(DumpFile[1],Length(DumpFile)); PS: Meine OH kennt FastReplace nicht. Hast du die selbst geschrieben oder gibt es die erst bei neueren Delphi-Versionen?
Felix Alter
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#22

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 19:51
mach es doch mit memory mapped files ! dann kümmert windows sich ums caching und du arbeitest mit der datei alsob du sie komplett im speicher hättest
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#23

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 20:01
nabends,

ich möchte euch nochmal für eure hilfe und gedult danken,
im großen und ganzen läuft das nun, die 500mb datei
wird innerhalb von ein paar sekunden abgearbeitet,
jetzt muss ich nur noch sicher stellen das strings
die ersetzt werden sollen nicht durch die puffer
größe zerstückelt werden, aber ich denke das bekomm
ich auch alleine hin

@FAlter die fastreplace funktion stammt aus einer unit
deren link ich am anfang gepostet hab, damit lassen sich
sehr schnell stringfunktionen abarbeiten, kann ich dir
sehr empfehlen

der aktuelle code schaut nun so aus:

Delphi-Quellcode:
const
BlockSize = 1024;
var SrcStream, DestStream: TFileStream;
    FileName, FileName2, Buffer: String;
    N, ChunkLen: Integer;
begin
  FileName:= 'dump.txt';
  FileName2:= 'dump2.txt';
  try
  SrcStream:=TFileStream.Create(FileName,fmOpenread or fmShareDenyNone);
  DestStream:=TFileStream.Create(FileName2,fmCreate);
    N:=SrcStream.Size;
    while N>0 do
      begin
        if N>BlockSize
          then ChunkLen:=BlockSize
          else ChunkLen:=N;
        SetLength(Buffer,ChunkLen);
        SrcStream.Read(Buffer[1],ChunkLen);
        Buffer:= FastReplace(Buffer,'\n', '', False);
        N:=N-ChunkLen;
        DestStream.Write(Buffer[1],Length(Buffer));
      end;
  finally
    SrcStream.Free;
    DestStream.Free;
  end;
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#24

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 20:03
@supermuckl
davon hör ich nun das erste mal, wüßte nicht das es sowas auch gibt
naja ich werds auch nochmal probieren
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#25

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 20:13
würde sich bestimmt lohnen..

man nennt es auch MMF abgekürzt..

falls du hilfe brauchst findest ein paar threads hier im forum oder frag mich.. hab da nen großes projekt under linux und windows gemacht mit MMF
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#26

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 20:19
ich hab schon ein wenig rumgesucht und folgenden thread gefunden:
http://www.delphipraxis.net/internal...&highlight=mmf

hast du den code von Christian Seehase auch genutzt?
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#27

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 20:50
naja ich hab mir ne komplette klasse selbst geschrieben ( 25kb )

ausserdem auch für linux..

das is nimmer mit einem stück code zu vergleichen

aber die grundzüge sind die richtigen
.. ist genau das worauf es aufbaut
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#28

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 16. Okt 2004, 08:53
hm
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 21:23 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