Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klassen Methoden (https://www.delphipraxis.net/15925-klassen-methoden.html)

Luckie 7. Feb 2004 14:13

Re: Klassen Methoden
 
Ähm. :oops: Also ich muss mir das noch etwas genauer ankucken, nachvollziehen und verinnerlichen. Mal sehen, ich melde mich dann wieder. ;)

stoxx 7. Feb 2004 14:19

Re: Klassen Methoden
 
Zitat:

Zitat von Luckie
Diskutiert das ruhig noch etwas weiter. Ich lese fleißig mit, in der Hoffnung, dass es irgendwan nmal klick macht. :?

Danke aber schon mal allen für ihre hilfreichen Ausführungen.



und wie wärs mit diesem Beispiel ?
das create fehlt :-)
wichtige Einschränkung natürlich, dass auf keine Felder einer Instanz (eines Objectes) zugegriffen werden darf in der Klassenmethode. DA natürlich das object noch nicht createt ist.

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  caption := Tedit.Classname;
end;

viele Grüße
stoxx

Luckie 7. Feb 2004 14:30

Re: Klassen Methoden
 
So, Bernd. Ich habe deinen Cod emal in ein funktionierendes Beispiel umgesetzt:
Delphi-Quellcode:
type
  TSomeData = record
    FData: String[255];
  end;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    Data: TSomeData;
    class function GetData (out Data : TSomeData): Boolean;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Unit2;

class function TForm1.GetData(out Data: TSomeData): Boolean;
begin
  with TForm2.Create(nil) do
  begin
    Result := ShowModal = mrOK;
    Data.FData := Edit1.Text;
    Form1.Label2.Caption := Data.FData;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetData(Data);
end;
Form2 besteht nur aus einem Edit zur Eingabe und zwei Buttons, die entweder mrOK oder mrCancel setzen.

stoxx 7. Feb 2004 14:36

Re: Klassen Methoden
 
Zitat:

Zitat von Luckie
So, Bernd. Ich habe deinen Cod emal in ein funktionierendes Beispiel umgesetzt:


ähm, Luckie, welchen Sinn hat das jetzt *g* ?? :gruebel:

Luckie 7. Feb 2004 14:39

Re: Klassen Methoden
 
Zitat:

Zitat von stoxx
ähm, Luckie, welchen Sinn hat das jetzt *g* ?? :gruebel:

Genau das ist wohl der Knackpunkt, wenn ich den habe, dann bin ich schon mal einen großen Schritt weiter. ;)

NicoDE 7. Feb 2004 14:49

Re: Klassen Methoden
 
Zitat:

Zitat von Luckie
So, Bernd. Ich habe deinen Cod emal in ein funktionierendes Beispiel umgesetzt

Eigentlich verfehlt Dein Beispiel den eigentlichen Sinn. Wozu hat TForm1 eine Klassenmethode? TForm2 sollte die Klassenmethode implementieren, damit TForm1 _nicht_ wissen muss, wie die Daten geholt werden und damit TForm1 _keine_ Instanz von TForm2 erzeugen muss um das gewünschte Result zu erhalten.

Luckie 7. Feb 2004 14:51

Re: Klassen Methoden
 
Habe ich auch gerade gemerkt, dass das nicht viel Sinn macht. Ich probiere es mal anders rum.

Äh, nee wie jetzt? Wie kommt denn Form1 an die Daten ran, die ich in Form2 eingebe?

Chewie 7. Feb 2004 14:54

Re: Klassen Methoden
 
Der Sinn ist doch ganz einfach zu erschließen.
GetData ist zwar eine autonome Funktion, ohne Aufrufe anderer Funktionen und ohne Benutzung globaler Variablen, aber sie macht doch nur Sinn, wenn sie im Zusammenhang mit TForm2 aufgerufen wird.
Durch die Klassenmethode ist GetData an TForm2 gebunden, TForm2 dient hier u.a als eine Art Container.

Bernd Ua 7. Feb 2004 14:56

Re: Klassen Methoden
 
@Luckie : Bin ja gespannt was Du in Deinem Tutorial zum Thema Abstraktion sagst :(
Ich prökel Dir mal ein Beispiel zusammen ... kommt dann gleich

Luckie 7. Feb 2004 14:59

Re: Klassen Methoden
 
Eine Beta Version kannst du dir schon hier ankucken: http://www.luckie-online.de/files/beta-area/

Aber der :( Smily läßt mich jetzt doch etwas zweifeln. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
Seite 3 von 4     123 4      

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