AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Globale Konstanten

Ein Thema von Amicello · begonnen am 13. Sep 2016 · letzter Beitrag vom 13. Sep 2016
Antwort Antwort
Seite 1 von 2  1 2      
Amicello

Registriert seit: 12. Sep 2016
13 Beiträge
 
#1

Globale Konstanten

  Alt 13. Sep 2016, 17:52
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?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Globale Konstanten

  Alt 13. Sep 2016, 17:54
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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#3

AW: Globale Konstanten

  Alt 13. Sep 2016, 17:55
Ich mache das immer so:

Delphi-Quellcode:
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.
Ich finde das mit dem Record besser, da so ein Kontext besteht und man so weiß, wo die Variable hingehört.
Dafür das Record natürlich entsprechend benennen.

Geändert von dGeek (13. Sep 2016 um 18:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: Globale Konstanten

  Alt 13. Sep 2016, 18:00
Hallöle...

Dann mußt die Konstanten Unit in der USES im interface deiner Unit deklarieren. Dann kannst du die Konstante über den Namen verwenden.
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#5

AW: Globale Konstanten

  Alt 13. Sep 2016, 18:03
... im Uses einer ANDEREN Unit.
In einer Unit, wo die Variablen/Konstanten verwendet werden sollen.

*Klugscheiß*
  Mit Zitat antworten Zitat
Amicello

Registriert seit: 12. Sep 2016
13 Beiträge
 
#6

AW: Globale Konstanten

  Alt 13. Sep 2016, 18:27
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.
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#7

AW: Globale Konstanten

  Alt 13. Sep 2016, 18:28
Denke mal über die Implementierung mit dem Record nach. Das erspart dir später viel Ärger beim Suchen von Variablen und Zusammenhängen.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Globale Konstanten

  Alt 13. Sep 2016, 18:30
Das erspart dir später viel Ärger beim Suchen von Variablen und Zusammenhängen.
Wenn Du alle Konstanten in ein gemeinsames Record setzt, hast Du wenigstens die Gewissheit, dass es gar keinen Zusammenhang gibt. Du hast Dir damit eine Art Namensraum definiert - ich bevorzuge weiterhin individuelle Konstanten im jeweiligen Kontext.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#9

AW: Globale Konstanten

  Alt 13. Sep 2016, 18:33
Zitat:
Wenn Du alle Konstanten in ein gemeinsames Record setzt,
So war das doch nicht gemeint

Ich habe einige, thematisch geordnete Records.
  Mit Zitat antworten Zitat
Amicello

Registriert seit: 12. Sep 2016
13 Beiträge
 
#10

AW: Globale Konstanten

  Alt 13. Sep 2016, 18:48
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz