Announcement

Collapse
No announcement yet.

Variable mit Gültigkeit über Formulare hinweg

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variable mit Gültigkeit über Formulare hinweg

    Hallo,

    lassen sich in Delphi auch Variablen definieren, die in allen Forumalren einer Projektes ihre Gültigkeit haben?
    Das höchste was ich kenne, sind die globalen Variablen, die z.B. in einem kompletten Formular gelten.

    Gunter

  • #2
    Hallo,

    Unter Datei Neu kannst Du dem Project eine neue "Unit" hinfügen. Die kannst Du z.B. Globals.pas nennen. Alle Variablen, die Du im Interface-teil deklarierst sind allen anderen Units, denen unter <b>uses</b> die Unit globals bekannt gemacht ist, verfügbar.

    <pre>
    <code><font size=2 face="Courier New"><font color="#000000"><b>Unit </b>Globals;

    <b>interface

    var
    </b>MyVar: Longint;

    <b>implementation

    end</b>.

    <b>unit </b>MyForm;

    <b>interface

    uses </b>Globals;
    ....
    </font>
    </code></pre>

    Gruß Matthia

    Comment


    • #3
      hi Kollegen,

      in OO-Zeiten ist es besser, statt globaler Variablen ein Objekt einer abstrakten Klasse zu verwenden. Dazu haben wir eine Klasse wie folgt abgeleitet:

      TApp_Norm = class(TComponent)
      private
      FAbteilung : string;
      FDataBase : string; // usw. ...

      Das Teil wird im Hauptprogramm instanziiert, dann kann ich die Properties über Pointer ansprechen

      Comment


      • #4
        Hi Roland,

        ... und der Zeiger auf die Instance von TApp_Norm ist dann keine globale Variable

        Comment


        • #5
          ... OK, eine, aber die wichtigen Teile hängen da dran:

          MyApp.DataSource := 'MyODBC';

          MyApp.UserPath := 'C:\MyPath\';

          usw. Es ist doch besser, wenn ein Rad gleich am Auto montiert ist, als wenn ich es erst mal irgendwo suchen muß, bevor ich losfahren kann. :-) Das ist, was OO ausmacht - sonst kann ich doch gleich zu prozeduraler Programmierung oder Spagetticode zurück - oder nicht

          Comment


          • #6
            Ja, im Grunde haste recht. Das Unit Konzept und deren Aufbau ist aber auch wie ein Object zu betrachten. Object Forms. enthält als public Forms.Application = Member und Forms.GetParentForm = procedure.

            Object orientierte Programmierung heist NICHT ALLES in Objecte zu kapseln, das macht kein Sinn. OOP heist die Möglichkeiten die Realität genauer nachzubilden um Vererbung, Polymorphie einzuführen.

            Es macht also öfters Sinn mit globalen Variablen zu arbeiten, dafür sind sie ja auch da, und wenig Sinn zur Umwandlung eines Datums ein TDatumKonvertiertObject zu nutzen.

            So nun zur Frage: JA

            <pre>
            unit XYZ;<br>

            interface<br>

            uses Windows, ...;<br>

            type
            TFormxy ....<br>

            var
            MyInteger: Integer;
            MyInteger: Integer = 9;<br>

            const
            MyVersion = '1.0';<br>

            implementation<br>

            ..<br>

            end.<br>

            </pre>

            Alle Variablen und Konstanten wie MyInteger, MyVersion sind für alle Units sichtbar die die Unit XYZ in ihrerer Uses Klausel enthalten.

            Gruß Hage

            Comment

            Working...
            X