Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249404 (10840)
  Suchen
 Zurück zur Übersicht
 AutorThema: Rückwärtssuche von Textstellen
Ralf Michelberger
Datum:12.10.01 17:06 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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