Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   globale Variablen? (https://www.delphipraxis.net/107364-globale-variablen.html)

RavenIV 29. Jan 2008 08:29

Re: globale Variablen?
 
Zitat:

Zitat von xX0815Xx
Ich könnte doch aber auch mit weiteren public-Variablen prüfen ob die anderen Bedingungen erfüllt sind und dann die Variable ändern, oder?

Nein.

Wenn Du machst:
Delphi-Quellcode:
Form1: TForm...
...
public
  fAbfrageStarten: Boolen;
...
...
Dann in Form2:
Delphi-Quellcode:
Form1.fAbfrageStarten := True;
dann ist AbfrageStarten bereits geändert.

Du könntest natürlich in Form2 machen:
Delphi-Quellcode:
...
if Form1.VerbindungGeoeffnet and Form1.WerteAbgefragt and Form1.DarfGestartetWerden then
begin
  Form1.fAbfrageStarten := True;
end
else
begin
  Form1.fAbfrageStarten := False;
end;
Das müsstest Du dann aber immer machen, wenn Du Form1.AbfrageStarten ändern möchtest.
Also kannst Du es auch gleich im Setter für AbfrageStarten in Form1 erledigen:
Delphi-Quellcode:
Form1: TForm...
...
private
  fAbfrageStarten: Boolean;
  procedure SetAbfrageStarten(...);
...
published
...
  property AbfrageStarten: Boolean write SetAbfrageStarten;
...
end;
...
...

procedure Form1.SetAbfrageStarten(...);
begin
  if ... and ... and ... then
  begin
    ...
    fAbfrageStarten := True;
  end
  else
  begin
    ...
    fAbfrageStarten := False;
  end;
end;

Aurelius 29. Jan 2008 08:34

Re: globale Variablen?
 
So meinte ich das ja (das untere)

Corpsman 29. Jan 2008 08:40

Re: globale Variablen?
 
Das problem an der "unteren" variante ist,

Wenn du deine Unit Veröffentlichst und ein anderer nutzt die Variablen, blickt der niemals das er diese Kointrollen selbst machen mus.

Mittels Get und Set Methoden Sorgst du Unter Garantie dafür das diese Prüfungen gemacht werden.

Zusätzlich hast du ja noch die Möglichkeit bei Properties nur Lesen, oder nur schreiben zu zu lassen.

Also auf das Beispiel mit dem Auto bezogen, kannst du die Gesamtgeschwindigkeit nur Lesen, nicht aber schreiben.

Machst du das mittels einer Public Variable hast du die Möglichkeit des Schreibschutzes nicht.

DeddyH 29. Jan 2008 08:41

Re: globale Variablen?
 
Zitat:

Zitat von xX0815Xx
So meinte ich das ja (das untere)

Da ist es aber doch einfacher und wartbarer, die Überprüfung gleich im Setter vorzunehmen.
Delphi-Quellcode:
TBlubb = class
...
private
  FWert: TWert;
  function GetWert: TWert;
  procedure SetWert(value: TWert);
...
public
  property Wert: TWert read GetWert write SetWert;
...
end;

...

function TBlubb.GetWert: TWert;
begin
  Result := FWert;
end;

procedure TBlubb.SetWert(value: TWert);
begin
  if value <> Quatsch then
    FWert := value;
end;
So ist gewährleistet, dass Du immer plausible Werte verwendest.

Aurelius 29. Jan 2008 08:43

Re: globale Variablen?
 
Aha jetzt habe ich es auch verstanden. Scheint wirklich komfortabler zu sein...

RavenIV 29. Jan 2008 08:44

Re: globale Variablen?
 
Habt Ihr eigentlich meinen Beitrag #11 gesehen?
Der Beitrag mir dem vielen Quellcode...

DeddyH 29. Jan 2008 08:50

Re: globale Variablen?
 
Zitat:

Zitat von RavenIV
Habt Ihr eigentlich meinen Beitrag #11 gesehen?
Der Beitrag mir dem vielen Quellcode...

Jepp, allerdings bevor Du ihn editiert hast ;)

RavenIV 29. Jan 2008 08:53

Re: globale Variablen?
 
Zitat:

Zitat von DeddyH
Jepp, allerdings bevor Du ihn editiert hast ;)

Ich bin da dummerweise auf den Absenden-Button gekommen, bevor ich fertig war. :oops: :roll:

Khabarakh 29. Jan 2008 11:55

Re: globale Variablen?
 
Man sollte noch erwähnen, dass dann konsequenterweise jeglicher "FormX."-Code ebenfalls "pfui" ist ;) .

RavenIV 29. Jan 2008 12:19

Re: globale Variablen?
 
Zitat:

Zitat von Khabarakh
Man sollte noch erwähnen, dass dann konsequenterweise jeglicher "FormX."-Code ebenfalls "pfui" ist ;) .

Häähh?
Ich kann Dir nicht folgen. :? :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 Uhr.
Seite 2 von 3     12 3      

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