Mehrfachaufruf von CREATEOBJECT

19/11/2007 - 19:02 von Alexander Schmid | Report spam
Liebe FoxProler

Vielleicht eine etwas einfàltige Frage, aber trotzdem komme ich momentan
auf keine Antwort. Wenn ich den Befehl

loVar = CREATEOBJECT("myclass")

mehrfach aufrufe, wird dann jedesmal das Objekt loVar angelegt? Dies im
schlimmsten Falle solange wie es freien Hauptspeicher gibt, oder ist
FoxPro schlau (weil der Programmierer u.U. manchmal der Nachlàssigkeit
anheim fàllt) und legt nur einmal das Objekt loVar an? Wie kann ich die
Existenz von loVar abfragen?

Alex
 

Lesen sie die antworten

#1 Jürgen Wondzinski
19/11/2007 - 20:31 | Warnen spam
Hallo Alex,

na überleg mal... Was passiert, wenn du fünfmal

x = 3

machst?

Hast du dann fünf Variablen X im Speicher? Neeee. Es kann immer nur die
Variable einmal im Hauptspeicher (bzw in dem Speicher-Kontext) geben. Oder
mehr technisch: Bei jedem Zuweisen wird die alte Variable gelöscht und der
Wert neu angelegt. Wenn du das also mit deinem Objekt machst, wird immer das
alte Objekt entsorgt und ein neues Objekt erstellt.



Wie kann ich die Existenz von loVar abfragen?




Na wie mal halt Variablen abfràgt:
? TYPE("loVar")
oder
? VARTYPE(loVar)

Zwei Funktionen, die dir in beiden Fàllen ein "O" für den Typ Objekt
zurückgeben. Der Unterschied ist, dass TYPE() den Namen als Parameter
bekommt, wohingegen VARTYPE() die Variable selbst. Und dass VARTYPE bei
"kaputten" Objekten ein "X" zurückliefert, wohingegen TYPE weiterhin ein "O"
meldet...

loVar = CREA("FORM")
? TYPE("loVar") && "O"
? VARTYPE(loVar) && "O"
loVar.release()
? TYPE("loVar") && "O"
? VARTYPE(loVar) && "X"

Aus der alten TYPE() Unlogik, in beiden Fàllen ein "O" zu melden, hatte man
früher dann noch nen zweiten Schritt benötigt und ein AND NOT ISNULL(loVar)
drangehàngt. Dieser Umstandskram wurde dann spàter durch VARTYPE() entsorgt.




Jürgen Wondzinski

Microsoft Visual FoxPro Technologieberater
Microsoft Most Valuable Professional seit 1996
"*??)
?..??..*??) ?..*?)
(?..?. (?..` *
..`.Visual FoxPro: It's magic !
(?..``..*

Ähnliche fragen