Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Klasse in Unit verwenden (https://www.delphipraxis.net/162778-klasse-unit-verwenden.html)

hamster1989 5. Sep 2011 11:58

Klasse in Unit verwenden
 
hallo,

ich möchte folgende klasse in der unit1 verwenden:


Delphi-Quellcode:
unit geomForm;

interface
 type
TGeomForm = class

private
Fx: Integer;
Fy: Integer;
public
procedure verschieben (dx, dy: integer);
end;

implementation


procedure verschieben (dx, dy: integer);
begin
  Self.Fx:= Self.Fx + dx;
  self.Fy:= self.Fy + dy;

end;

end.

Unit1:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, geomForm;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var geomForm: TgeomForm;
begin
  geomForm := TgeomForm.Create;
  geomForm.verschieben(10,10);
  geomForm.Free;
end;

end.

dabei treten folgende Fehler auf:

undefinierter Bezeichner self

(geomForm Zeile 19-20) Operator oder Semikolon fehlt

(geomFrom Zeile 20) Anweisung erforderlich aber Ausdruck vom Typ Integer gefunden

Ungenügend Forward- oder External-Deklaration: 'TGeomForm.verschieben'

verwendete Unit kann nicht compiliert werden


ich hoffe ihr könnt mir sagen was schief läuft.

mfG

SirThornberry 5. Sep 2011 12:02

AW: Klasse in Unit verwenden
 
falsch:
Delphi-Quellcode:
procedure verschieben (dx, dy: integer);
begin
   Self.Fx:= Self.Fx + dx;
   self.Fy:= self.Fy + dy;

end;
richtig:
Delphi-Quellcode:
procedure tGeomForm.verschieben (dx, dy: integer);
begin
   Self.Fx:= Self.Fx + dx;
   self.Fy:= self.Fy + dy;

end;

DeddyH 5. Sep 2011 12:03

AW: Klasse in Unit verwenden
 
Delphi-Quellcode:
procedure verschieben (dx, dy: integer);
begin
  Self.Fx:= Self.Fx + dx; //was soll hier self sein?
  self.Fy:= self.Fy + dy;

end;
->
Delphi-Quellcode:
procedure TGeomForm.verschieben (dx, dy: integer);
begin
  Self.Fx:= Self.Fx + dx; //jetzt zeigt self auf die aktuelle Instanz von TGeomForm
  self.Fy:= self.Fy + dy;

end;
[edit] *Gnarf*, zu langsam :? [/edit]

SirThornberry 5. Sep 2011 12:15

AW: Klasse in Unit verwenden
 
du hast es aber besser erklärt! :-D

himitsu 5. Sep 2011 12:32

AW: Klasse in Unit verwenden
 
oder anders beschrieben:

Delphi-Quellcode:
procedure verschieben(dx, dy: integer); // Implementation einer Prozedur
begin
  ...
end;

procedure TGeomForm.verschieben (dx, dy: integer); // Implementation der Methode einer Klasse
begin
  ...
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 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