Seite 1 von 1

Tools3 Token() von hinten

Verfasst: Di, 29. Aug 2017 10:52
von Manfred
mit der Funktion Token() aus den Tools3 kann man sich von links nach rechts die Token geben lassen nach einem bestimmten Trennzeichen. Ich müßte das aber andersherum haben, also von rechts nach links durchsucht. Hat jemand eine Idee, wie man das lösen kann?

Re: Tools3 Token() von hinten

Verfasst: Di, 29. Aug 2017 10:56
von Tom
Du hast doch eXpress++, oder? Roger hat eine Funktion "DC_TokenArray()" geschrieben, die erzeugt ein Array mit allen Tokens. Das letzte (Len(a)) wäre dann das, das Du suchst.

Re: Tools3 Token() von hinten

Verfasst: Di, 29. Aug 2017 11:13
von Manfred
Ah, DAnke Tom. Wußte ich nicht.

Re: Tools3 Token() von hinten

Verfasst: Di, 29. Aug 2017 11:49
von Tom
Gerne. Übrigens auch eine lässige Funktion, um Text-Importdaten weiterzuverarbeiten.

Re: Tools3 Token() von hinten

Verfasst: Di, 29. Aug 2017 21:24
von DelUser01
"String to Array" mit Tools3:

Code: Alles auswählen

cText := "bla1;bla2;bla3"
aErg := GsStringToArrToken( @cText , ";" , .F. ,0 , .T. )
? Var2CHar( aErg )    // => {"bla1","bla2","bla3"}

Function StringToArrToken( crText , cToken , lUpper , nArrLen , lSIngle )

Local aBegriffe := {}
Local cWord
Local lArrLen   := .F.

If lSingle == NIL
   lSingle := .F.
EndIf

If nArrLen == NIL
   nArrLen := 0
ElseIf nArrLen >= 1
   lArrLen := .T.
EndIf

If lUpper
   crText := Upper( crText )
   cToken := Upper( cToken )
EndIf

TokenInit( @crText , cToken )

Do While ! TokenEnd()
   cWord := TokenNext( @crText )
   cWord := AllTrim( cWord )
   If ! Empty( cWord )
      If lSingle
         AAdd( aBegriffe , cWord )
      Else
         AAdd( aBegriffe , { cWord , .F. } )
      EndIf
   EndIf
EndDo

If lArrLen
   Do While Len( aBegriffe ) < nArrLen
      If lSingle
         AAdd( aBegriffe , "" )
      Else
         AAdd( aBegriffe , { "" , .F. } )
      EndIf
   EndDo
EndIf

Return( aBegriffe )