AGB  ·  Datenschutz  ·  Impressum  







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

private, public und der Rest

Ein Thema von Hansa · begonnen am 3. Feb 2006 · letzter Beitrag vom 6. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#11

Re: private, public und der Rest

  Alt 6. Feb 2006, 09:50
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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#12

Re: private, public und der Rest

  Alt 6. Feb 2006, 10:07
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 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 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
  Mit Zitat antworten Zitat
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#13

Re: private, public und der Rest

  Alt 6. Feb 2006, 10:17
Hallo xaromz

Das hilft mir weiter. Vielen Dank

Gruß
Micha
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 10:04 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