AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi String in 3 MB großen Dateien suchen
Thema durchsuchen
Ansicht
Themen-Optionen

String in 3 MB großen Dateien suchen

Ein Thema von Uncle Cracker · begonnen am 11. Jun 2004 · letzter Beitrag vom 13. Apr 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#11

Re: String in 3 MB großen Dateien suchen

  Alt 11. Jun 2004, 15:10
Zitat von Uncle Cracker:
Also bei meinem Test mit deiner mitgelieferten Datei stimmte das Ergebnis nicht, dass ich erhalten hatte. Lag vielleicht daran, dass die Datei 2.5 MB groß war.
Wenn Du es sagst mag es wohl stimmen. Vorstellen kann ich mir das aber nicht. Ich habe die Komponente lange getestet und schon einige Zeit im Produktiveinsatz. Bislang sind mir keine Beschwerden zu Ohren gekommen.

Es ganz bestimmt nichts mit der Größe der Datei zu tun.

Kann ich mir Deine Datei irgendwo downloaden. Ich würde sehr gerne mal probieren.
Wie oft muss denn xxx darin vorkommen?
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#12

Re: String in 3 MB großen Dateien suchen

  Alt 11. Jun 2004, 17:18
Moin Uncle Cracker,
Du hast Recht.
Es liegt aber nicht der Größe der Datei, sondern an der Häufigkeit des Wortes.

Die Datei wird über TFileStream in 4096 Byte Blöcken bearbeitet.
Bevor ein neuer Block eingelesen wird, wird am Ende der Blockverarbeitung
geguckt, ob die aktuelle Stream Position + der Textlänge kleiner ist als
Stream.Size. Ja, wird Stream.Positon von der aktuellen Position um die
Textlänge zurückgesetzt. Dadurch wird verhindert, dass das gesuchte Wort
durch eine Blockgrenze zerschnitten wird. Wenn das gesuchte Wort den Block
abschließt wird es dadurch aber zweimal gezählt. Das müsste der Fehler sein.
Arbeite gerade dran
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#13

Re: String in 3 MB großen Dateien suchen

  Alt 12. Jun 2004, 18:54
Moin Uncle Cracker,
vielen Dank für Deinen Hinweis. Ich war fest davon überzeugt, dass die Komponente
einwandfrei funktioniert. Ich habe sie nämlich gründlich getestet (Das habe ich gedacht).
Aber wohl nie mit Dateien, die den einen oder anderen Grenzfall enthielten.

Ich habe die Komponente überarbeitet und jetzt verschiedene Grenzfälle
bei den Tests berücksichtigt. Mir ist kein Fehler mehr aufgefallen.

Mit der Komponente habe ich eine 19 MB Testdatei nach der Häufigkeit der
Zeichenkette 'xxx' durchsucht. Das hat unter 1 Sekunde gedauert.
Angehängte Dateien
Dateityp: zip beispiel_506.zip (512,1 KB, 16x aufgerufen)
Dateityp: zip komponente.zip (4,7 KB, 20x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#14

Re: String in 3 MB großen Dateien suchen

  Alt 12. Jun 2004, 21:55
Danke das du dir eine solche Mühe machst, werde mal testen.

Könnte man deine Komponente vielleicht noch so ändern, dass nicht nach einem String sondern nach Hexwerten gesucht wird?
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#15

Re: String in 3 MB großen Dateien suchen

  Alt 13. Apr 2007, 08:39
Glückauf,

Ich hoffe es macht hier nichts, eine derart alte Diskussion auszugraben, aber ich habe gerade eine Anmerkung zu diesem schreibgeschütztem Thema, und das hier ist imho die letzte Erwähnung jenen Codes...

Und zwar vergleiche ich gerade diverse Pascal-Implementierungen des Boyer-Moore-Algos, bzw. deren unterschiedlichen Laufzeiten in Delphi einerseits und FreePascal andererseits, und dabei hab ich den hier aus dem Forum (TJsTextSearch aus der Code-Libary) mitverglichen.

So in der Form, wie er dort in der Code-Library steht, ist leider immer noch ein Fehler drin: der Algo funktioniert so leider nur für Wörter, in denen sich keine Buchstaben wiederholen, zuverlässig ("Delphi"). Sobald ein Buchstabe mehrfach im Suchbegriff vorkommt, gehts manchmal daneben, weil die SkipTable falsch aufgebaut wird ("Delphi Praxis" mit zwei "i"). Damit der Algo richtig funktioniert, muss die SkipTable andersrum aufgebaut werden (also for iCnt := 1 to Length(SubStr) do). Wollte ich nur mal anmerken, falls sich noch jemand anders mal wundern sollte, warum der Algo je nach Start-Offset mal etwas findet, mal nichts. Vielleicht kanns ja jemand bestätigen und dann in der Code-Library verbessert werden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01: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