String finden in Text

Fehlerberichte, Hilfe und Anregungen zu BasicMaker 2016 für Windows

Moderator: SoftMaker Team

Antworten
ThoWas
Beiträge: 2
Registriert: 06.07.2015 21:57:20

String finden in Text

Beitrag von ThoWas » 06.07.2015 22:06:10

Ich habe lange Zeit LibreOffice verwendet und mir einige recht komplexe Makros geschrieben. Eigentlich möchte ich gerne auf SoftMaker umsteigen, aber das geht nur, wenn ich die erforderlichen Makros umschreiben kann.

Es geht darum, dass ich eine Datenbank über eine externe Datei mit einem Text koppeln muss. Im Text stehen Merker einer bestimmten Form. Sie beginnen mit einem Tag und haben eine feste Zeichenbreite (also (<not xxxx>), wobei immer '(<not ' am Anfang steht, die nächsten 4 Zeichen in die Datei geschrieben werden und das schließende '>)' genauso gelöscht wird wie das führende '(<not ').

Aktuell hänge ich an folgendem Problem: Wie kann ich in einem Text einen bestimmten String suchen? Also im konkreten Fall '(<not '?

Dewes
SoftMaker Volunteers
SoftMaker Volunteers
Beiträge: 1859
Registriert: 06.02.2007 14:01:47

Re: String finden in Text

Beitrag von Dewes » 07.07.2015 22:24:29

Empfehlenswert ist immer im Forum zu suchen z.B. nach FIND.

Da findest du u.a.

viewtopic.php?f=176&t=17331&p=85961&hilit=find#p85961

rollovanoyten
Beiträge: 35
Registriert: 06.12.2014 09:14:51

Re: String finden in Text

Beitrag von rollovanoyten » 07.07.2015 22:47:11

Hi,
wenn es - wie ich es verstanden habe - darum geht, mit Hilfe eines BasicMaker Scripts einen bestimmten String in einem Datensatz zu finden, gibt es die Funktion InStr. Die ist in der Hilfe sauber beschrieben. Ansonsten folgendes Beispiel:

' 1 oder mehrere Zeichenfolgen in einem Datensatz suchen
Satz = "ablkjalök<notKuli>ldfs -öolmdssdaf <not4612>ztfaslkö knjaslk"
StartPos = 1
do
' found nennt die Position des '<' im Satz
found = instr(StartPos, Satz, "<not")
if found > 0 then
SuchWert = mid(Satz, found + 4, 4)
print found; " "; SuchWert
' im Satz weitersuchen...
StartPos = found + 4
end if
loop while found > 0
end

MfG / RolloVanOyten

ThoWas
Beiträge: 2
Registriert: 06.07.2015 21:57:20

Re: String finden in Text

Beitrag von ThoWas » 10.07.2015 11:22:12

Danke für die Antworten, ich habe offensichtlich 'vergessen', die Suche zu nutzen. Aber, ehrlich gesagt, ich wusste nicht, wonach, und das ging mir auch schon in der PDF-Datei zu BasicMaker so. Kann sein, dass mein Problem so idiosynkratisch ist, dass es niemanden interessiert ...

Nur zur Veranschaulichung, wie das in LibreOffice funktioniert:

Code: Alles auswählen

Sub Datei_not_winkel_schreiben
' *** extrahiert Marker <not xxxx> in f:\literatur\ausgabe\not.txt

  DIM ausgabe   As INTEGER
' Nummer für Handle

  Dim oErsatz   As Object
' Deskriptor für Suche

  Dim Doc       As Object
  Dim oGefunden As Object
  
  Doc     = thisComponent
' Zugriff auf Dokument  
  oErsatz = Doc.createReplaceDescriptor
' Cursor für gefundene Strings

  oErsatz.SearchRegularExpression = TRUE
' Suche nach regulären Ausdrücken aktivieren  
  ausgabe                         = FreeFile
' File zuweisen
  
  Open "f:\literatur\ausgabe\not.txt" For OutPut As ausgabe

' File zum Schreiben öffnen

   oErsatz.SearchString = "<not.....>"
' Suche nach Literatur   

   Found = Doc.findFirst (oErsatz)
' erster gefundener Eintrag
   
   While not IsNull(Found)
' Solange Einträge gefunden werden
     oGefunden = Found.Text.createTextCursorByRange(Found)
     print     #ausgabe, oGefunden.String
' Cursor auf gefunden, gefundenen String in Datei schreiben

     Found = Doc.findNext( Found.End, oErsatz)
   wend
   MsgBox ( "Fertig" )

  Close #ausgabe

 End Sub 
Die Routine arbeitet zuverlässig, auch wenn eine dreistellige Anzahl an Einträgen in Texten mit vielen Seiten gefunden wird.

Das hätte ich gerne in SoftMaker ...

Antworten

Zurück zu „BasicMaker 2016 für Windows“