Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi string kommt in datei vor? (https://www.delphipraxis.net/14292-string-kommt-datei-vor.html)

Pseudemys Nelsoni 7. Jan 2004 03:04

Re: string kommt in datei vor?
 
ahhh, danke. Ich habe den code in einem button eingefügt gehabt, sehe jetzt erst das man die function aufrufen muss :oops:

Rainer_Unger 7. Jan 2004 05:47

Re: string kommt in datei vor?
 
Hallo Luckie,

was ist wenn die Datei 20 30 oder 50MB gross ist? Da sucht sich dein Prog den Wolf.
Bei uns gibts Zeichnungen, bei denen Text ersetzt werden muss, die sind zum Teil noch viel grösser ( nur um dem Kommentar 'so grosse dateien gibts nicht' vorzubeugen ).
Ich halte viel davon möglichst grosse Stücke ins Ram zu holen.
Was ist mit doppelt vorkommenden Zeichenketten?
Ich hab in deiner Routine nicht genau nachgesehen, aber was ist mit Nullen in der Datei?
Sobald du irgendwo Null-terminierte Strings benutzt und Nullen in deiner Datei vorkommen ist es Essig mit deiner Suchroutine.

Damits nicht heisst der kann nur meckern stelle ich demnächst meine eigene Routine vor.

Sorry für die Kritik ( bin aber selber reingefallen )
Rainer

Jens Schumann 7. Jan 2004 07:01

Re: string kommt in datei vor?
 
Hallo Rainer,
der Source ist aus meinem Beispiel. Es ist mit klar das der Algorithmus
für sehr große Dateien nicht zu gebrauchen ist. Deshalb hae ich auch folgendes geschrieben:
Zitat:

Quick and Dirty SuchAlgo für Zeichenketten in einer binären Datei

Der Suchalgorithmus ist natürlich lausig (funktioniert aber). Hier kannst Du dann
noch einiges optimieren
Getestet habe ich den Algorithmus mit einer DLL von 61 kByte. Um festzustellen das der gesuchte
Text nicht in der DLL vorkommt benötigt der Algorithmus auf einem P4 / 3GHz ca 1 sek.
Das ist verdammt lange. Wenn es meine Aufgabe wäre, würde ich jetzt versuchen mit dem Boyer/Moore
Ansatz weiterzukommen.

Sinn und Zweck des Beispiels ist es zu zeigen, dass für solch eine Aufgabe Streams verwenden werden sollten.

Null terminierte Strings sind kein Problem.

Sehr große Dateien würde ich auch blockorientiert verarbeiten.

Jens Schumann 7. Jan 2004 11:09

Re: string kommt in datei vor?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ist Problem hat mich jetzt doch interessiert.
Ich habe ein altes Projekt gefunden, in dem in den Boyer/Moore Algorithmus verwendet
habe. (Quelle: Robert Sedgewick Algorithmen Addison Wesley 2. Auflage) Super Buch.
Ich habe das Programm entsprechend erweitert. Die procedure SearchStr realisiert den
Suchalgorithmus. SearchStr findet alle Vorkommen des gesuchten Textes. SearchStr
ist erheblich schneller als SearchForStringInDLL. Rechts neben Ticks steht die Anzahl
der Windows-Ticks (GetTickCount) die der jeweilge Algorithmus benötigt hat. Ich hoffe, dass ich den Source ausreichend kommentiert habe. Zu Thema Boyer/Moore habe ich noch eine Powerpoint-Datei angehängt.

Ach ja, in der Datei Test.txt kann z.B. nach DELPHI gesucht werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz