Textfeld in Array umwandeln?!

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Textfeld in Array umwandeln?!

Beitrag von Christof »

Hallo,

ich bin mir sicher, dass ich eine solche Funktion schon mal gesehen habe. Aber wo?

Ich möchte z.B. den String "23,514,99915,Schmitz" in ein Array {23,514,99915,"Schmitz"} umwandeln? Mir wäre auch schon weiter geholfen, wenn man im Ergebnis nur Zahlen oder nur Strings im Array hätte.

Bitte, bitte Hilfe. Ich möcht's nicht selbst schreiben...

Merci, danke und thank you

Christof
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Christof,
Du musst erstmal Deinen String richtig aufbauen - und zwar folgendermassen:

Code: Alles auswählen

cArray := "23,514,99915,Schmitz"
cArray := "{" + cArray + "}"
cArray := strtran( cArray, ",", "," + chr( 34 ), 3 )
cArray := strtran( cArray, "}", chr( 34 ) + "}" )
aArray := &cArray
Sollte gehen - zumindest für eine Zeile. Bei mehreren musst Du halt entsprechend zeilenweise vorgehen.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Beitrag von Lewi »

Hi,
nachfolgend eine Funktion, die einen übergebenen String in ein Array umwandel:


Code: Alles auswählen

/************************************
* Str2Array( <cStr>, [cDelim] )
Beispiel: Str2Array( cStr, ";" )
************************************/
FUNCTION  Str2Array(cString, cDelim )
	LOCAL aRet    := {}
	Local nX	 := 1
	Local nPos	:= 0
	LOCAL nLen
	LOCAL cRet

   cDelim := IIF( cDlim == NIL, ";", cDelim)
	if Valtype( cString) <> "C"
		RETURN aRet
	endif

	nLen := LEN( cString )
	cRet := SPACE(nLen)


	WHILE ( .T. )
		nPos := AT(cDelim, cString, nX)

		IF nPos > 0
			cRet 	:= SubStr(cString, nX, nPos-nX)
			AADD(aRet, cRet)
			nX 	:= ++nPos

		ELSEIF nX <= nLen
			cRet 	:= SubStr(cString, nX)
			aadd(aRet, cRet)
			exit

		ELSEIF nX > nLen
			aadd(aRet, "")
			exit
		ELSE
			exit
		ENDIF
	ENDDO

RETURN ( aRet )

Gruß, Olaf
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Christof »

Hab' beides getestet. Funktioniert. DANKE.

Habe mich jetzt für die etwas aufwendigere Methode, dafür steuerbare Methode von Olaf entschieden.


Gruß

Christof
Antworten