ich möchte in beliebigen Dateien nach Zeichenketten suchen.
Bisher mache ich das so:
Code: Alles auswählen
Text$=""
If ReadFile(1,datei$)
While Not Eof(1)
Text$+ReadString(1)
Wend
CloseFile(1)
EndIf
Code: Alles auswählen
gefunden=FindString(text$,such$)
Aber es hat den Nachteil, dass das String-weise Auslesen und Wieder-Zusammensetzen ziemlich lange dauert.
Bei Dateien von mehreren hundert kB wartet man pro Datei schon eine kleine Ewigkeit.
Die Alternative, mit einem Speicherbereich zu arbeiten, hab ich hier im Forum gefunden
http://forums.purebasic.com/german/view ... 0205b1f1e9
matbal hatte hier in einem Programm diesen Vorschlag für das Einlesen:
Code: Alles auswählen
If ReadFile(0, datei$)
l = Lof(0)
If l
*mem = AllocateMemory(l + 2)
If *mem
fmt = ReadStringFormat(0)
ReadData(0, *mem, l)
Text$ = PeekS(*mem, -1,fmt)
FreeMemory(*mem)
EndIf
EndIf
CloseFile(0)
EndIf
Und solche 0-Bytes kommen oft vor.
Welche Methode gibt es noch, in einer beliebigen Datei nach Zeichenketten zu suchen, und zwar möglichst schnell?
Und noch eine zusätzliche Frage hab ich. Wie kann man in Word- und pdf-Dateien von einem PB-Programm aus nach Zeichenketten suchen? Sieht man sich die Zeichen einer solchen Datei in Rohform an, dann scheinen diese überhaupt nichts mit den Zeichen gemeinsam zu haben, die tatsächlich in den Dokumenten vorhanden sind.
Vielen Dank erst mal fürs Lesen.
Gruß
OlderCoder