GetWordCount/GetWordNum => Xbase

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

GetWordCount/GetWordNum => Xbase

Beitrag 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?
--
Hans-Peter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: GetWordCount/GetWordNum => Xbase

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: GetWordCount/GetWordNum => Xbase

Beitrag 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 :)
--
Hans-Peter
Antworten