Hallo zusammen,
ist M->variablenname eine Kurzschreibweise für den Zugriff auf eine MEMVAR?
Besten Dank im Voraus!
noat
Kurzschreibweis von MEMVAR?
Moderator: Moderatoren
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9581
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 117 Mal
- Danksagung erhalten: 409 Mal
- Kontaktdaten:
Re: Kurzschreibweis von MEMVAR?
Ja. Du kannst als Alias für PRIVATEs oder PUBLICs "MEMVAR->" oder "M->" benutzen. Oder den Alias weglassen, wenn es keine Konflikte mit Feldern oder sonstwas gibt oder geben kann und Dir die paar Nanosekunden Performancegewinn egal sind.ist M->variablenname eine Kurzschreibweise für den Zugriff auf eine MEMVAR?
Herzlich,
Tom
Tom
- noat
- Cut&Paste-Entwickler
- Beiträge: 42
- Registriert: Mo, 25. Jul 2022 12:57
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 1 Mal
Re: Kurzschreibweis von MEMVAR?
Wenn ich in einer GUI-Applikation Folgendes mache, ohne vorherige Deklaration an irgendeiner Stelle:
noat
Code: Alles auswählen
M->cStringVariable
- Geht das ohne Deklaration? (Bringt bei mir zumindest keine Compiler-Fehler und die Zuweisung macht auch zur Laufzeit keine Probleme.)
- Wenn ja, ist die Variable dann PRIVATE oder PUBLIC?
- Wenn ich eine globale Variable haben möchte, auf die ich an jeder Stelle in der Anwendung zugreifen kann, wo/wie deklariere ich die am besten?
noat
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2855
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 121 Mal
- Danksagung erhalten: 19 Mal
Re: Kurzschreibweis von MEMVAR?
Hallo, noat -
wenn es keine "passende" Variable gibt, erzeugt der Compiler an dieser Stelle in Deinem Programm eine PRIVATE Variable.
Um auf die Variable programmweit zugreifen zu können, musst Du sie vorher explizit als PUBLIC definieren, also etwa so:
ich persönlich verwende keine PRIVATE und PUBLIC Variablen, da immer die Gefahr besteht, sie in einem falschen Kontext anzusprechen (gerade die automatische Deklaration ist da gefährlich) und man verändert in einem anderen Teil des Aufrufstacks einen Wert, den man nicht ändern will.
Die lexikalischen Variablen mit ihrer Bindung an ihre FUNCTION sind da deutlich sicherer.
Und einen programmweiten Zugriff auf eine Variable regle ich z.B. so:
Wie geschrieben, mein Stil, mein Denken - und es gilt auch hier: "jede Jeck is anders"
wenn es keine "passende" Variable gibt, erzeugt der Compiler an dieser Stelle in Deinem Programm eine PRIVATE Variable.
Um auf die Variable programmweit zugreifen zu können, musst Du sie vorher explizit als PUBLIC definieren, also etwa so:
Code: Alles auswählen
PUBLIC cStringVariable
M->cStringVariable := "so isset"
Die lexikalischen Variablen mit ihrer Bindung an ihre FUNCTION sind da deutlich sicherer.
Und einen programmweiten Zugriff auf eine Variable regle ich z.B. so:
Code: Alles auswählen
FUNCTION RootWindow(oRoot)
STATIC oRootVar
IF ValType(oRoot) = "O"
oRootVar := oRoot
ENDIF
RETURN(oRootVar)
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.