icon

Support Forum

[Frage] VARTYPE fehlerhaft? Gibt immer -1 zurück [Gelöst]


Guten Morgen.

Ich verzweifele gerade an der Funktion VARTYPE.
Egal welche Variablen ich als Argument angebe, VARTYPE gibt immer -1 zurück, unabhängig davon, ob die Variablen direkt zugewiesen werden, aus Parametern kommen, aus INPUT oder SPLIT Resultaten, sogar LET habe ich ausprobiert.

Hier ein kleines Beispiel-Script:

n = SPLIT ( "15.25 kg" , "%n %s" , zahl , einheit ) 

zahlType = VARTYPE(zahl)
einheitType = VARTYPE(einheit)

TEXT2 0,0.5,zahlType 
TEXT2 0,0,einheitType

Ist das ein bekannter Bug oder mache ich irgendetwas falsch?
(Getestet in Allplan 2023 und 2026)

lg,
Stefan

GEA Arquitectos S.L.P.
Av. San Francisco Javier 24 | 41018 Sevilla | Spain

Lösung anzeigen Lösung verbergen

OK, meine Antwort oben ist nicht richtig, zumindest nicht für die Funktion VARTYPE
Das oben geschriebene gilt für PARAMTYPE

Die von Dir verwendete Syntax von VARTYPE ist allerdings falsch:
Der zu untersuchende Variablen-Name muss in Anführungszeichen stehen!
Damit wird verhindert, dass der Inhalt "ausgewertet" wird, und der Wert der Variablen in die Funktion reingereicht wird!

zahlType = VARTYPE("zahl")

(s. vartype.png)

Anhänge (1)

Typ: image/png
22-mal heruntergeladen
Größe: 54,42 KiB

VARTYPE funktioniert nur mit PARAMETERN, nicht mit VARIABLEN!
"zahl" und "einheit" sind offensichtlich keine Parameter.

Variablen haben keinen expliziten Typ! Variablen erhalten ihre "Typ" erst bei der Zuweisung,
und können diesen auch durch eine neuen Zuweisung im Script ändern!
Folgendes funktioniert:
zahl = "eins" !zahl ist danach string
zahl = 1.0 !zahl ist danach numerisch (double)

Parametern hingegen wird in der Parameterliste ein fester Typ zugeordnet, der nicht
im Script geändert werden kann! Dieser festgelegte Typ des Parameters wird von VARTYPE zurückgegeben.

Vielen Dank für die schnelle Erklärung.

Die Online-Hilfe zu VARTYPE ist dann aber schon etwas irreführend:

VARTYPE returns the type (string or numerical) of a variable. Returns 1 if the variable has a numerical value, 2 if it is a string. This command can be useful to check the type of variables after splitting up a text with SPLIT.

GEA Arquitectos S.L.P.
Av. San Francisco Javier 24 | 41018 Sevilla | Spain

OK, meine Antwort oben ist nicht richtig, zumindest nicht für die Funktion VARTYPE
Das oben geschriebene gilt für PARAMTYPE

Die von Dir verwendete Syntax von VARTYPE ist allerdings falsch:
Der zu untersuchende Variablen-Name muss in Anführungszeichen stehen!
Damit wird verhindert, dass der Inhalt "ausgewertet" wird, und der Wert der Variablen in die Funktion reingereicht wird!

zahlType = VARTYPE("zahl")

(s. vartype.png)

Anhänge (1)

Typ: image/png
22-mal heruntergeladen
Größe: 54,42 KiB

Super - jetzt klappt alles wie erwartet!

Vielen Dank nochmal und wünsche ein schönes Wochenende!

GEA Arquitectos S.L.P.
Av. San Francisco Javier 24 | 41018 Sevilla | Spain