Funktion zur Prüfung ob eine Variable existiert

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
klammerauf
UDF-Programmierer
UDF-Programmierer
Beiträge: 69
Registriert: Do, 08. Feb 2007 14:16
Wohnort: Karlsruhe
Hat sich bedankt: 3 Mal

Funktion zur Prüfung ob eine Variable existiert

Beitrag von klammerauf »

Gibt es eine Möglichkeit zu prüfen, ob eine Variable existiert, ohne über BEGIN SEQUENCE zu gehen?

Also eine Funktion z.B. VarExists("xVar") liefert TRUE/FALSE
Exzessiver Codeblock Programmierer
--
Grüße
Sebastian
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Funktion zur Prüfung ob eine Variable existiert

Beitrag von Tom »

Type("cVarName") ermittelt, ob eine Variable <cVarName> als PUBLIC oder PRIVATE existiert. Wenn Type("cMeinDatum") als Antwort "U" liefert, existiert die Variable "cMeinDatum" als PRIVATE oder PUBLIC nicht. Mit ValType(cMeinDatum) (Achtung: ohne Anführungszeichen) bestimmst Du den Typ einer STATIC oder LOCAL, aber das scheitert, wenn es "cMeinDatum" überhaupt nicht gibt. Das kannst Du umgehen, indem Du "IF cMeinDatum == NIL" abfragst. Wenn das .T., liefert, existiert die Variable entweder nicht oder sie ist tatsächlich NIL, wobei dann keine Rolle spielte, ob als PRIVATE, PUBLIC oder LOCAL (aber es könnte dann sein, dass Du sie als LOCAL definiert hast, ohne sie zu typisieren bzw. ihr einen Initialwert zuzuordnen). Mit der Funktion SymbolInfo() kannst Du Dir eine Liste aller PRIVATEs und PUBLICs holen.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Funktion zur Prüfung ob eine Variable existiert

Beitrag von brandelh »

diese Funktion würde einen Quellcode Namen der Variable benötigen, diesen gibt es für MEMVARS,
nicht aber für LOCAL oder STATIC da sind das nur noch Speicheradressen (ohne Debugging Code).

Aus diesem Grunde muss man sich wohl sowas basteln.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Funktion zur Prüfung ob eine Variable existiert

Beitrag von Jan »

PUBLICs und PRIVATEs checke ich per isMemvar(). Was aber nur prüft ob die existiert, nicht ob die auch einen Wert hat.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Funktion zur Prüfung ob eine Variable existiert

Beitrag von Tom »

Es gibt zig Wege.

Ob aber eine LOCAL deklariert wurde, ohne dass eine Initialisierung vorgenommen wurde, lässt sich nur in einer SEQUENCE feststellen.
Herzlich,
Tom
Antworten