Hallo,
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 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
Property), 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 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
.
Gruß
xaromz