AGB  ·  Datenschutz  ·  Impressum  







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

Auf riesige .txt dateien zugreifen

Ein Thema von o0o · begonnen am 2. Feb 2008 · letzter Beitrag vom 2. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von o0o
o0o

Registriert seit: 20. Jul 2007
Ort: am...,da wo die sonne nicht scheint!
166 Beiträge
 
Delphi 2007 Enterprise
 
#1

Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 02:56
hi leutz, ich bin auf der suche nach einer moeglichkeit auf riesige .txt-dateien zugreifen zu koennen ohne dass das ewig mit dem laden dauert^^

also ich habe zum test jetzt 20mb txt dateien verwendet und bin zum entschluss gekommen dass wenn ein memo nicht bei zb 2gb die ich brauchen werde geeignet ist^^

weiss da jemand ne loesung?

also ich will die txt-dateien nicht bearbeiten,...also nur nach strings durchsuchen^^

da o0o
(_/marabu-fan inside\_)
[-\_______________/-]
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#2

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 03:23
Du kannst doch in Chunks arbeiten. Also immer einen Teil einlesen, durchsuchen und wieder freigeben, dann den nächsten Teil der Datei laden.
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 03:24
dabei aber immer 2 Chunks im Speicher halten um den Suchstring auch dann zu finden, wenn er innerhalb der grenzen der Blöcke ist
  Mit Zitat antworten Zitat
Benutzerbild von o0o
o0o

Registriert seit: 20. Jul 2007
Ort: am...,da wo die sonne nicht scheint!
166 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 05:33
ehm thx fuer die antwort^^

aber was ist ein chunk? ich hab ebn mal geschwind die sufu benutzt und dabei verwertbares nix gefunden.
koenntet ihr mal kurz erklaeren was das ist oder hab ihr ein tutorial dazu?

thx im vorraus...da o0o
(_/marabu-fan inside\_)
[-\_______________/-]
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 07:52
Chunk = Bissen.

Nehmen wir an, du wilst einen String der Länge 100 suchen
Du lädst 1000 Zeichen ein und fängst an zu suchen. Wenn Du beim 901.Zeichen angelangt bist, schmeißt Du die ersten 900 Zeichen weg und lädst die nächsten 1000 Zeichen ans Ende des nun etwas reduzierten 'Chunks'. Nun hast Du 1100 Zeichen im Speicher und kannst weiter suchen. Immer wenn Du kurz vor dem Ende des 'Chunks' bist (also wenn deine Position < Länge - Suchtextlänge) ist, dann lädst Du den nächsten Bissen in den Speicher.

Wenn Du nach Wildcards suchst, geht das nicht so. Ich würde mir eine Funktion 'AdvanceFilePos' schreiben, die die Position eines virtuellen Zeigers in deiner Datei erhöht. Dabei prüft er jedes Mal, ob die Daten an dieser Position überhaupt geladen ist, lädt ggf. nach und verwirft die Teile, die bereits durchsucht wurden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#6

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 08:13
wenn du sie nicht bearbeiten willst, weshalb willste sie denn in ein memo laden? mal davon abgesehen, welcher anwender interessiert sich wirklich für 2GB text und kann hier noch den überblick behalten???

wie wär es, die datei zeilenweise einzulesen und während du diese zeilenweise abarbeitest gleichzeitig zu durchsuchen und deine ergebnisobjekte für die weiterverarbeitung gleich wegstellst? hier sollten die schlüsselwörter assign, reset, readln weiterhelfen.

grüsse und noch einen schönen samstag
GG
  Mit Zitat antworten Zitat
christian_u

Registriert seit: 13. Nov 2006
126 Beiträge
 
#7

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 08:50
Nimm einfach die pascal Standartfunktionen dazu, das ist effizient und einfach.

var
f : TextFile;
tmp : string;

Assignfile(f,'meinedatei.txt');
reset(f);
while not eof(f) do
begin
readln(f,tmp);
end;
closefile(f);
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 09:24
Hallo,

geht es hier um die Programmierung einer effizienten Textsuche als Selbstzweck oder eher um das Durchsuchen großer Textmengen? Im letzteren Fall würde ich einfach ein existierendes Textwerkzeug wie GREP verwenden. Auch der Suchtypus spielt eine Rolle. Wird nur das erste Auftreten eines Strings gesucht oder alle? Soll der String vollständig gefunden werden oder wird ein komplexeres Suchmuster benötigt?

Freundliche Grüße
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 09:43
@christian_u: Wenn der Suchtext mehrere Zeilen umfasst, dann klappt das nicht.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von o0o
o0o

Registriert seit: 20. Jul 2007
Ort: am...,da wo die sonne nicht scheint!
166 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Auf riesige .txt dateien zugreifen

  Alt 2. Feb 2008, 11:02
Zitat von marabu:
Hallo,

geht es hier um die Programmierung einer effizienten Textsuche als Selbstzweck oder eher um das Durchsuchen großer Textmengen? Im letzteren Fall würde ich einfach ein existierendes Textwerkzeug wie GREP verwenden. Auch der Suchtypus spielt eine Rolle. Wird nur das erste Auftreten eines Strings gesucht oder alle? Soll der String vollständig gefunden werden oder wird ein komplexeres Suchmuster benötigt?

Freundliche Grüße
also es geht um eine oder mehrere grosse log-dateien im txt format(ca2gb,...oder auch ein paar gb mehr^^)

also in dieser textdatei werden nur logcodes drinstehen und ein name dazu, also ungefaehr so:

Zitat:
dew87yweiuwe7dfw Peter
buy86d6h0gujh Martin
dazwischen wird nur eine leertaste sein, mehr nicht.
also in der logdatei muss dann nur noch nach exakt einem logcode gesuch werden und der name dazu ausgegeben werden. doppelte eintraege bestehen nicht.

da o0o
(_/marabu-fan inside\_)
[-\_______________/-]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:05 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