Kurzschreibweis von MEMVAR?

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

Moderator: Moderatoren

Antworten
Benutzeravatar
noat
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 42
Registriert: Mo, 25. Jul 2022 12:57
Hat sich bedankt: 17 Mal
Danksagung erhalten: 1 Mal

Kurzschreibweis von MEMVAR?

Beitrag von noat »

Hallo zusammen,

ist M->variablenname eine Kurzschreibweise für den Zugriff auf eine MEMVAR?

Besten Dank im Voraus!

noat
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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?

Beitrag von Tom »

ist M->variablenname eine Kurzschreibweise für den Zugriff auf eine 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.
Herzlich,
Tom
Benutzeravatar
noat
Cut&Paste-Entwickler
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?

Beitrag von noat »

Wenn ich in einer GUI-Applikation Folgendes mache, ohne vorherige Deklaration an irgendeiner Stelle:

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?
Gruß
noat
georg
Der Entwickler von "Deep Thought"
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?

Beitrag von georg »

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:

Code: Alles auswählen

PUBLIC cStringVariable
M->cStringVariable := "so isset"
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:

Code: Alles auswählen

FUNCTION RootWindow(oRoot)
STATIC oRootVar

IF ValType(oRoot) = "O"
  oRootVar := oRoot
ENDIF

RETURN(oRootVar)
Wie geschrieben, mein Stil, mein Denken - und es gilt auch hier: "jede Jeck is anders"
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten

Zurück zu „Programmierung allgemein“