![]() |
Globale Konstanten
Bin ganz neu bei Delphi - und wie ich das von gewohnt bin, möchte ich auch gern mein Delphi Projekt sinnvoll aufteilen - ganz einfach um für mich den Quelltext noch halbwegs übersichtlich zu gestalten.
Dazu möchte ich mehrere Units mit entsprechenden Funktionen und Klassen für ihre jeweiligen Bereiche erstellen. Zusätlzich habe ich eine Liste konstanter Addressen und Offsets, die ich global über alle Unterunits im gesamten Programm nutze. Die Pflege der Adressen / Offsets soll wieder zentral in einer einzigen Datei möglich sein. Leider scheitert es gerade bei mir daran, dass ich zu dämlich bin zu googlen, wie ich globale Konstanten in einer Unterdatei definiere. Es steht zwar vieles darüber dass man als Programmierer den Sichtbarkeitsbereich einer Konstante festlegen kann, aber nicht wie. In konkreten Beispielen geht es immer nur um globale Variablen. Hat da mal jemand ein Beispiel zur Hand? |
AW: Globale Konstanten
Variablen/Konstanten sind global, wenn du sie im interface Bereich einer Unit definierst.
Musst diese Unit dann halt überall da einbinden wo du Zugriff drauf brauchst:
Delphi-Quellcode:
unit GlobaleVariablen;
interface var Variable: Integer = 5; const Konstante = 'Hallo'; implementation end. |
AW: Globale Konstanten
Ich mache das immer so:
Delphi-Quellcode:
Ich finde das mit dem Record besser, da so ein Kontext besteht und man so weiß, wo die Variable hingehört.
unit _global_vars;
interface // uses ... ; type TGlobalVars = packed record // alles mögliche an Variablen z.B. iInteger: Integer; sString: String; // und / oder const z.B: const iConstInteger: Integer = 123; sConstString: String = 'Fester String'; end; // ... var aGlobalVars: TGlobalVars; // Variablen und Konstanten können nun über "aGlobalVars.sMeineVariable" aufgerufen werden. implementation // hier notfalls irgendwelchen Funktionen und Proceduren, wenn nötig end. Dafür das Record natürlich entsprechend benennen. |
AW: Globale Konstanten
Hallöle...:P
Dann mußt die Konstanten Unit in der USES im interface deiner Unit deklarieren. Dann kannst du die Konstante über den Namen verwenden. :zwinker: |
AW: Globale Konstanten
... im Uses einer ANDEREN Unit.
In einer Unit, wo die Variablen/Konstanten verwendet werden sollen. *Klugscheiß* |
AW: Globale Konstanten
Danke... nachdem ich den Uses-Block in der Konstantendefinition entfernt habe funktioniert es prima!
Irgendwas war da faul. Ich denke jetzt bin ich auf einem guten Weg. Problem 2 von 254.935 (total) gelöst. Unit xxx Interface Const (...) Implementation End. |
AW: Globale Konstanten
Denke mal über die Implementierung mit dem Record nach. Das erspart dir später viel Ärger beim Suchen von Variablen und Zusammenhängen.
|
AW: Globale Konstanten
Zitat:
|
AW: Globale Konstanten
Zitat:
Ich habe einige, thematisch geordnete Records. |
AW: Globale Konstanten
Viele Funktionen und Werte werde ich sowieso dem Kontext nach in entsprechende Klassen einbetten.
Die Möglichkeit hatte ich mit AutoIt bisher nicht. Gut, dafür hat man mit AutoIt 5 Seiten nackten Code blind und aus der La-Meng drauf-los-getippt, incl. WriteProcessMemory und DLL Structs - drückt dann einmal auf Ausführen und ... ach du Sch...ande, es funktioniert ja im ersten Anlauf! Bei Delphi stolper ich noch über jeden Grashalm. Bei der gleichen Menge Code klemmts noch mindestens 20 mal an fehlenden oder zuvielgesetzten Semikolons oder unpassenden Typencastings. Andererseits gibts dafür aber auch mehr Möglichkeiten. Ist bei PHP aber auch nicht grossartig anders, aber Delphi ist schon eine kleine pingelige Diva wie ich festgestellt hab. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz