Seite 1 von 1

GetWordCount/GetWordNum => Xbase

Verfasst: Mo, 19. Dez 2016 21:04
von HaPe
Hallo Zusammen !

In VFP gibt es für Zeichenketten die Funktionen GetWordCount und GetWordNum für den Zugriff auf Zeichenketten die mittels eine Separators getrennt sind.
GetWordCount(cString[, cDelimiters]): Zählt die Anzahl der Wörter in einer Zeichenfolge.
GetWordNum(cString, nIndex[, cDelimiters]): Gibt ein angegebenes Wort aus einer Zeichenfolge zurück.
Dies beiden Funktionen setze ich exzessiv für Messdaten in einer Textdatei ein. Die Daten (Feldnamen, Einheiten, Messwerte) sind dabei mittels TAB getrennt.
Mit cFieldNames als erste Zeile aus der Messwertdatei bestimme ich mit
GetWordCount( cFieldNames, CHR( 9 ) )
die Anzahl der Felder und mit
GetWordNum( cFieldNames, nFieldNo, CHR( 9 ) )
bestimme ich den jeweiligen Feldname.

Welche Funktion gibt es dafür in Xbase?

Re: GetWordCount/GetWordNum => Xbase

Verfasst: Mo, 19. Dez 2016 23:30
von AUGE_OHR
HaPe hat geschrieben:GetWordCount(cString[, cDelimiters]): Zählt die Anzahl der Wörter in einer Zeichenfolge.
GetWordNum(cString, nIndex[, cDelimiters]): Gibt ein angegebenes Wort aus einer Zeichenfolge zurück.
beide Functionen gibt es "so" nicht aber du kann es dir selbst zusammenbauen

Code: Alles auswählen

FUNCTION GetWordCount( cText, cDelimiters )
LOCAL nPos := 1
LOCAL nIst := 0
LOCAL aRet := {}
DEFAULT cDelimiters TO " "

   DO WHILE .T.
      nPos := AT( cDelimiters, cText )
      IF nPos > 0
         nIst ++
         AADD( aRet, SUBSTR( cText, 1, ( nPos - 1 ) ) )
         cText := SUBSTR( cText, ( nPos + 1 ), LEN( cText ) - nPos )
      ELSE
         AADD( aRet, cText )
         EXIT
      ENDIF
   ENDDO
RETURN aRet
wenn du nur die Anzahl haben will reicht "nIst"
GetWordNum(cString, nIndex[, cDelimiters])
auch dafür kann du den Code verwenden da er ja den String "zerlegt" und die einzelnen Worte in ein Array speichert und der Index wäre das Array Element.

Re: GetWordCount/GetWordNum => Xbase

Verfasst: Di, 20. Dez 2016 7:03
von HaPe
Hallo Jimmy !
beide Functionen gibt es "so" nicht aber du kann es dir selbst zusammenbauen

Code: Alles auswählen

FUNCTION GetWordCount( cText, cDelimiters )
Vielen Dank für diese Info und deinen Code :)