abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Zeichenketten 3

andreaszeike
Newcomer
kann man so auch Buchstaben in Numerische Werte konvertieren? (so, wie man zB mit excel ein datum als Zahlenfolge darstellen kann...)

Mit dem SPLIT-Befehl wird ein Buchstabe im String zu 0 -- oder habe ich da was falsch verstanden?
6 ANTWORTEN 6
kurb70
Participant
SPLIT versucht ein Muster zu erkennen. Aus diesem Muster extrahiert es dann die Zahlen.

Beispiel-String: "xxx 1.11 yyy -2.222 zzzz"
In diesem Fall ist das Muster folgendes: "xxx %n yyy %n zzzz" (die Leerzeichen sind auch wichtig!)

Mit dem SPLIT Befehl kannst du dir die Werte 1.11 und 2.222 besorgen. Du musst aber das Muster kennen um es zerlegen zu lassen.

Der Syntax ist mehr oder weniger (in diesem Fall mehr) verständlich im GDL Handbuch erklärt. Siehe Seite 181
(kuba)
Nicht anwendbar
Aaaaalso:
Ein Datum zu konvertieren sollte mit SPLIT am besten zu lösen sein, wenn, wie vorher schon gesagt, das Muster bekannt ist.
Wie man dann (aus 3 Zahl-Parametern) eine Datumszahl generiert, kann man sich ja dann selbst überlegen (z.B. jj*400+mm*31+tt), oder im Netz mal nach den Formeln anderer suchen. Da gibt es bestimmt irgendwo jemanden, der das interne Mac-Zahlenformat (das auf irgendwann 1956 zurückgeht) oder das Exelformat analysiert hat. 😉

Zur Umwandlung von Text in Zahlen á la CHR() oder ASC() - Befehlen, bekannt aus anderen Programmiersprachen, muß man sich eines Kniffs bedienen. Im intern. GDL-Talk hat da neulich jemand einen Tip gegeben. Mal sehen, ob ich es halbwegs zusammenbekomme:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">TeX="N"

s=strstr(TeX,"ABCEDEFGHIJKLMNOPQRSTUVWXYZ")
if s then
asc=64+s
print "Der ASCII-Wert von '"+TeX+"' ist",asc
else
print "'"+TeX+"' kann ich leider nicht einem ASCII-Format zuordnen."
endifAus der Hüfte, ohne es getestet zu haben.
Der Punkt ist, sich seine eigene ASCII-Wertetabelle zu erstellen. Achtung bei dem Versuch sich einen kompletten 256-Byte-langen String zu erzeugen. ArchiCAD hat irgendwann ab 225 Zeichen ein Problem und bringt Fehler.
Andersherum funktioniert das natürlich auch mit STRSUB("ABC....XYZ",asc-64,1).

Frank
andreaszeike
Newcomer
hi frank!

das klingt genial... wird gleich mal ausprobiert!! wenns funzt, ist Dir ein Autorenplatz im nächsten Tipps + Tricks sicher 😉

Gruß, az
Nicht anwendbar
Bevor Du mich erwähnst, gib nochmal Bescheid, da suche ich den Ursprungsautor raus.
andreaszeike
Newcomer
mach das... Ehre wem Ehre gebührt... aber Du wirst auch erwähnt!!
Nicht anwendbar
Hier das Originalposting von Oleg Shmidt (Russia), das noch etwas detaillierter ist:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif">...
use SPLIT for converting text to numbers:
dummy=SPLIT(strval,"%n",numval) ! strval to numval

for CHR emulation, try this workaround (english and printable only)

ascii=' !"'+"#$%&'()*+,-./0123456789:;<=>?@"
ascii=ascii+"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
ascii=ascii+"abcdefghijklmnopqrstuvwxyz{|}~"

ascN=strstr(ascii,STRSUB(char,1,1))+31 ! first character of 'char' to ascN

Best regards, Oleg Shmidt , Russia

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen