Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi private, public und der Rest (https://www.delphipraxis.net/62385-private-public-und-der-rest.html)

_SolidSnake_ 6. Feb 2006 09:50

Re: private, public und der Rest
 
Hallo.

Erstmal vielen Dank für die schnellen Antworten :)

Wenn ich das richtig verstehe, dann ist es erstmal egal wo ich "_myCon" deklariere (am besten aber in private) solange ich die Verbindung nur in dieser Unit aufbaue. Wenn ich aber die z.B. "_myCon" in Form1 deklariere und die Verbindung dort aufbaue aber eine SQL-Abfrage in Form2 starte wuzu ich dort ja auch "myCon" benötige dann muss ich diese unter var deklarieren, richtig ?
Form2 ist eine zweite Unit die ich über ein Menü in Form1 öffnen kann.

Tut mir leid wenn ich da noch nicht so richtig hinter steige, aber ich hab bis vor kurzem mit PHP gearbeitet und da war alles etwas einfacher was die Variablen anging.

Gruß
Micha

xaromz 6. Feb 2006 10:07

Re: private, public und der Rest
 
Hallo,
Zitat:

Zitat von _SolidSnake_
...(am besten aber in private) solange ich die Verbindung nur in dieser Unit aufbaue.

Genau. Die Regel lautet: Nur soviel Sichtbarkeit, wie unbedingt nötig. Wenn Du die Variable nur in Form1 brauchst, dann ist private richtig.
Zitat:

Zitat von _SolidSnake_
Wenn ich aber die z.B. "_myCon" in Form1 deklariere und die Verbindung dort aufbaue aber eine SQL-Abfrage in Form2 starte wuzu ich dort ja auch "myCon" benötige dann muss ich diese unter var deklarieren, richtig ?

Nicht ganz. In Diesem Fall solltest Du die Variable unter public definieren, dann kannst Du mittels Form1.Variablenname darauf zugreifen. Eleganter wäre aber folgendes:
Delphi-Quellcode:
TForm1 = class(TForm)
private
  FmyCon: PMySQL;
  function GetmyCon: PmySQL; // Der Getter
public
  property myCon: PmySQL read GetmyCon; // Lesen mit Getter
end;

function TForm1.GetmyCon: PmySQL;
begin
  Result := FmyCon;
end;
Damit erlaubst Du es, dass die Variable öffentlich zugänglich ist (per Delphi-Referenz durchsuchenProperty), aber nur gelesen werden kann. So kann jeder die Variable benutzen, aber den Wert nicht ändern.
Wenn Du den Wert ändern willst, kannst Du das auch so machen:
Delphi-Quellcode:
TForm1 = class(TForm)
private
  FmyCon: PMySQL;
  FStatus: Integer;
  function GetmyCon: PmySQL; // Der Getter
  procedure SetmyCon(const Value: PmySQL); // Der Setter
public
  property myCon: PmySQL read GetmyCon write SetmyCon; // Lesen und Setzen mit Getter und Setter
  property Status: Integer read FStatus; // Direktes Lesen der Variablen
end;

function TForm1.GetmyCon: PmySQL;
begin
  Result := FmyCon;
end;

procedure TForm1.SetmyCon(const Value: PmySQL);
begin
  ShowMessage('Die Variable ändert sich!');
  FmyCon := Value;
end;
Da kannst Du beim Setzen der Variable z. B. noch Überprüfungen durchführen.
Das Ganze nennt sich Kapselung. Es ist immer besser, Properties zu verwenden und die Variable in private zu verstecken. Wenn Du Dir die VCL-Quellen anschaust, siehst Du, dass Borland das nie anders macht.
Zitat:

Zitat von _SolidSnake_
aber ich hab bis vor kurzem mit PHP gearbeitet und da war alles etwas einfacher was die Variablen anging.

Wenn man in PHP mit Klassen arbeitet, dann funktioniert das (fast) genauso. Es gibt z. B. auch private und public :zwinker: .

Gruß
xaromz

_SolidSnake_ 6. Feb 2006 10:17

Re: private, public und der Rest
 
Hallo xaromz :)

Das hilft mir weiter. Vielen Dank :-D

Gruß
Micha


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz