AGB  ·  Datenschutz  ·  Impressum  







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

Zugriff auf unitübergreifende Variablen

Ein Thema von Delphi-Laie · begonnen am 17. Dez 2015 · letzter Beitrag vom 17. Dez 2015
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Zugriff auf unitübergreifende Variablen

  Alt 17. Dez 2015, 12:29
Delphi-Version: 5
Hallo Delphifreunde!

Über die Kahale-Diskussion gelangte ich zur Aufgabenstellung der FH Wedel und von dort blieb mein Interesse am Programmierstil Pascal und Programmierstil Delphi hängen. Folgendes war mir - mehr oder weniger - neu:

Für Pascal:

Die Verwendung globaler Variablen ist zu vermeiden.
Der größte erlaubte Sichtbarkeitsbereich ist der Implementation-Teil einer Unit.


Ersteres ist klar, auch wenn es (mir) nicht immer ganz gelingt. Aber ist eine für eine Unit (ab Implementation) definierte Variable nicht global? Global ist für mich alles, was außerhalb von Routinen definiert wird.

Sollte ein größerer Sichtbarkeitsbereich benötigt werden, so finden Zugriffsfunktionen Verwendung.

Konsistent wird das dann auch für Delphi erweitert:

Keine Prozedur/Funktion greift direkt auf Komponenten (oder Variablen) in einem anderen Formular zu. Stattdessen wird eine Funktion des anderen Formulars nach einem Wert gefragt oder eine Prozedur aufgerufen, die die Änderungen einträgt.

Das soll erstmal genügen.

Lange Rede, kurzer Sinn: Sind diese Programmieranforderungen eine persönliche Eigenliebe der Frau Dipl.-Ing. (FH) Gerit Kaleck (oder des Inhabers des Lehrstuhles, an dem sie wirkt), oder sind sie Allgemeingut, und gehört die Beachtung dieser Regeln demnach zum guten Programmierton?

Geändert von Delphi-Laie (17. Dez 2015 um 22:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zugriff auf unitübergreifende Variablen

  Alt 17. Dez 2015, 12:48
Dann unterscheide nicht nur Global und Lokal.
Es ist halt so seine Sache und sollte weiter differenziert werden.

Application-Global > Interface und Public-Var/Public-Class-Var
Unit-Global > Implementation und Private/Protected, sowie Public-Var/Public-Class-Var von Klassen-Definitionen in der Implementation.
Klassen-Global > Private Strict-Private und Protected Protected-Private
Prozedur-Global > in Prozedur (inkl. Parametern), aber vor Nested-Prozeduren
Lokal > in Prozedur, direkt vor dem ersten BEGIN


Alles Öffentliche von Klassen sollte immer als Property rausgegeben werden, auch wenn erstmal diret auf die Variable, also ohne Getter und Setter.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Dez 2015 um 12:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Zugriff auf unitübergreifende Variablen

  Alt 17. Dez 2015, 13:00
Wenn du wirklich etwas Globales benötigst, dann verwende eine statische Klasse mit Eigenschaften.

statt
Delphi-Quellcode:
unit uGlobal;

interface

var
  foo : Integer;

inmplementation

end.
das hier
Delphi-Quellcode:
unit uGlobal;

interface

type
  Globals = class abstract
  private
    class var _Foo: Integer;
    class function GetFoo; static;
    class procedure SetFoo( const Value: Integer ); static;
  public
    class property Foo : Integer read GetFoo write Setfoo;
  end;

implementation

class function Globals.GetFoo: Integer;
begin
  Result := _Foo;
end;

class procedure SetFoo( const Value: Integer );
begin
  _Foo := Value;
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zugriff auf unitübergreifende Variablen

  Alt 17. Dez 2015, 13:10
Das dürfte unter Delphi 5 aber schwierig werden
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Zugriff auf unitübergreifende Variablen

  Alt 17. Dez 2015, 13:16
Leute, besten Dank, das muß ich erstmal wieder sacken lassen....
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:45 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