Wenn mein Sohn nicht das Pythonskript geschrieben hätte, wäre ich bestimmt schon arg verzweifelt. So kann ich es als sportliche Herausforderung annehmen, die Aufgabe vollständig mit BasicMaker lösen zu können. Aber so langsam hat mein Sohn nur ein mitleidiges Lächeln übrig, wenn er meine Bemühungen sieht.
Also das mit der Suche: Ein etwas umständlicher Weg, der fast zum Ziel führen könnte:
Ich benutze die Funktion
Code:
InStr(Start, String, Suchstring [, IgnoreCase])
, so wie Dewes es vorgeschlagen hat und nehme die erzeugte Variable für die Methode
Code:
SetRange Start, End
Allerdings stimmen die Zahlen weder hinten noch vorne. Für alle, die es ausprobieren wollen:
Code:
Dim tm as Object
Dim x as Object
Dim i as Integer
Dim Answer as integer
Dim A as integer
' Mit TextMaker verbinden; TextMaker starten, wenn er noch nicht läuft
Set tm = CreateObject("TextMaker.Application")
' TextMaker sichtbar machen
tm.Visible = TRUE
' TextMaker-Programmfenster maximieren
tm.WindowState = tmWindowStateMaximize
' Fokus auf TextMaker, damit SendKeys auf jeden Fall ans richtige Fenster geht
tm.Activate
Open "C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Temp\XXST" For Input As #1 ' Datei öffnen
While Not EOF(1) ' Schleife bis Dateiende
K = Input(3000, #1) ' 3000 Zeichen lesen
Wend
A = InStr(2, K, "EPPER-E$S")
Print A
Close #1 ' Datei schließen
tm.Documents.Open "C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Temp\XXST", Empty, Empty, Empty, tmFormatPlainTextDOS
tm.ActiveDocument.Selection.SetRange A, A+5
tm.ActiveDocument.saved = True
Die instr Funktion liefert einen Wert, der irgendwo daneben liegt. (TextMakers Statistikfunktion ist für die Überprüfung auch keine Hilfe, da weder Zeichen noch Anschläge eine vergleichbare Zahl liefert.) Oder er liefert den korrekten Wert, aber SetRange zählt anders. Ich habe es nochmal überprüft: SetRange zählt schon richtig. Warum in aller Welt funktioniert es nicht?