PBOSL: FastTextSearch

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

PBOSL: FastTextSearch

Beitrag von Karl »

Hallo,

ich habe die PBOSL-Library geladen und die FastFile-Funktionen genutzt, um einen Report mit enthaltenen Bankverbindungen zu überprüfen, ob die vorhandenen Bankleitzahlen existieren. Dazu habe ich in einer anderen Datei (.blz) alle aktuellen BLZ zur Überprüfung abgespeichert. Die Idee ist folgende:

Nimm aus einer Bankverbindung die Bankleitzahl aus dem Report
Schau in der BLZ-Datei nach, ob existiert
wenn nicht: anzeigen

Hier wollte ich FastTextSearch verwenden. Allerdings meldet der Debugger "Invalid memory access", obwohl die erste Bankleitzahl eindeutig im BLZ-Verzeichnis existiert.

Code: Alles auswählen

BLZDatei = OpenFileRequester("Bitte wählen Sie die BLZ-Datei:", "", "BLZ-Datei (*.blz) | *.blz", 0)
If BLZDatei
  ENr = OpenFileRequester("Bitte wählen Sie die Abrufdatei:", "", "Abrufdatei (*.txt) | *.txt", 0)
  If ENr
    BLZZeilen = FastOpenTextFile(0, BLZDatei, Chr(13) + Chr(10))
    ENrZeilen = FastOpenTextFile(1, ENr, Chr(13) + Chr(10))
    ;Zeilen von ENr einlesen
    For i = 1 To ENrZeilen
      zeile = FastReadLine(1, i)
      blztest = RemoveString(Mid(zeile, 93, 10), " ") 
      ;BLZ isolieren und unnötige Zwischenräume löschen
      If Val(blztest) >= 10000000
        Debug blztest
        ;in der BLZ-Datei nachschauen und prüfen
        finde = FastTextSearch(0, blztest, 1)
        If finde <= 0
          MessageRequester("Nicht gefunden:", Left(zeile, 5))
        Else
          check = FastReadLine(0, finde)
          If Left(check, 8) <> blztest
            ;oder weitersuchen
            MessageRequester("Nicht gefunden:", Left(zeile, 5))
          EndIf
        EndIf
      EndIf
    Next
    FastCloseFile(1)
    FastCloseFile(0)
  EndIf
EndIf
End
Vielleicht haben die PBOSLer eine Idee. Eventuell gibt es Probleme mit dem Finden von Zahlen innerhalb von Textdateien.

Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

hi Karl

Gruss nach Rostock


ich hab die lib ja nicht gemacht ..

als ersten muss man aber unterscheiden zwischen
fastopentextfile() und fastopenfile() und der Ordnung
halber mit den entsprechenden CloseBefehlen.


Es scheinbt so zu sein dass Du jedesmal vor dem Aufruf
FastTextSearch() die Datei mit FastOpenFile() öffnen
musst und nach der Suche wieder zumachen.

So in etwa

Code: Alles auswählen

BLZDatei = OpenFileRequester("Bitte wählen Sie die BLZ-Datei:", "", "BLZ-Datei (*.blz) | *.blz", 0) 
If BLZDatei 
  ENr = OpenFileRequester("Bitte wählen Sie die Abrufdatei:", "", "Abrufdatei (*.txt) | *.txt", 0) 
  If ENr 
    
    ENrZeilen = FastOpenTextFile(1, ENr, Chr(13) + Chr(10)) 
    ;Zeilen von ENr einlesen 
    For i = 1 To ENrZeilen 
      zeile = FastReadLine(1, i) 
      blztest = RemoveString(Mid(zeile, 93, 10), " ") 
      ;BLZ isolieren und unnötige Zwischenräume löschen 
      If Val(blztest) >= 10000000 
        Debug blztest 
        ;in der BLZ-Datei nachschauen und prüfen 
        BLZZeilen = FastOpenTextFile(0, BLZDatei, Chr(13) + Chr(10)) 
        finde = FastTextSearch(0, blztest, 1) 
        FastCloseTextFile(0)
        If finde <= 0 
          MessageRequester("Nicht gefunden:", Left(zeile, 5)) 
        Else 
          BLZZeilen = FastOpenTextFile(0, BLZDatei, Chr(13) + Chr(10)) 
          check = FastReadLine(0, finde) 
          FastCloseTextFile(0)
          If Left(check, 8) <> blztest 
            ;oder weitersuchen 
            MessageRequester("Nicht gefunden:", Left(zeile, 5)) 
          EndIf 
        EndIf 
      EndIf 
    Next 
    ; FastCloseFile(1)  <-- die Datei ist als FastTextFile geöffnet
    ;                                 und gehört auch so geschlossen
    FastCloseTextFile(1)
    ;FastCloseFile(0)   <-- 
  EndIf 
EndIf 
End
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Ja, du hast recht. In dieser Fassung funktioniert es.

Vielen Dank.

Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Antworten