Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249404 (10840)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Rückwärtssuche von Textstellen
Ralf Michelberger
| Datum:12.10.01 17:06 (ralf.michelberger@gmx.net) |
Hat von euch schon jemand porgrammiert, wie man Rückwärts im Text sucht ?
Stefan Schnell
| Datum: 15.10.01 09:54 (mail@stschnell.de) |
Hallo Ralf, folgende (zwar nicht sehr effiziente) Methode kann ich Dir anbieten: '*CompilerDirektiven*********************************************************** $P+ '*VariablenDeklarationen******************************************************* Declare FileName$, File# Declare hWindow%, hEdit%, hFont% '*Hauptprogramm**************************************************************** Let FileName$ = "LIESMICH.TXT" Dim File#, @Add(@FileSize(FileName$), 2) ReadText File#, FileName$ ' Let hWindow% = @Create("Window", %HWnd, "Test", 0, 0, 800, 600) ' Let hEdit% = @Create("MultiEdit", hWindow%, "", 10, 10, 773, 555) ' Let hFont% = @Create("Font", "Courier New", 16, 0, 0, 0, 0) ' SetFont hEdit%, hFont% ' @SendMessage(hEdit%, $000C, 0, File#) '*VariablenDeklaration******************************************************* Declare i&, j% Declare Search$, Result$ '*Suchen********************************************************************* Let Search$ = "Entwicklungsumgebung" Let i& = @Sub(@FileSize(FileName$), @Len(Search$)) While GT(i&, 1) If @Equ$(@Char$(File#, i&, 1), @Mid$(Search$, 1, 1)) Let j% = 0 Clear Result$ WhileLoop @Len(Search$) Let Result$ = @Add$(Result$, @Char$(File#, @Add(i&, j%), 1)) Let j% = @Add(j%, 1) Wend If @Equ$(Search$, Result$) Print Result$;" gefunden bei ";i& WaitKey EndIf EndIf Let i& = @Sub(i&, 1) Print i& Wend WaitKey @DestroyWindow(hWindow%) DeleteObject hFont% Dispose File# '*Ende************************************************************************* End Es wird eine Datei in eine Bereichsvariable gelesen (File#). Dann wird eine simple Schleife aufgerufen, die die Position des Zeigers an das Ende der Bereichsvariablen setzt. Der Zähler (i&) wird rückwärts gezählt und es wird das Anfangszeichen verglichen. Tritt ein identisches Anfangszeichen auf, so wird der String komplett untersucht. Ist er gleich, so wird die Position ausgegeben. Ich hoffe es nützt Dir was. Tschüss Stefan Schnell

| Zurück zur Übersicht