Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Interface Deklaration von Klassen
baphumet - Mi 07.10.09 20:18
Titel: Interface Deklaration von Klassen
Hallo, wenn man in einer Unit Methoden hat und eine die andere aufrufen möchte, aber Sie hinter der ersten steht, so folgt die Meldung Undeclared Identifier. Deswegen werden die Methoden im Interface-Teil aufgeführt, das ist mir soweit bekannt und ich verstehe dies auch, bei C ist das zwar nicht notwendig und er compilierts.
Jetzt meine Frage, ist dies auch mit Klassen möglich, habe nichts dazu in der Hilfe
gefunden?
FinnO - Mi 07.10.09 20:53
meinst du soetwas?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| type TFoo=class public bar : TBar end;
type TBar=class public foo : TFoo end; |
Tryer - Mi 07.10.09 21:01
Normalerweise deklariere ich alles im interface-Abschnitt, dann stellt sich die Frage kaum.
Geht es Dir um zirkuläre Bezüge unter Klassen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| type TMyClass = class; TMyOtherClass = class private FMyField: TMyClass; .. end; TMyClass = class private FMyOtherField: TMyOtherClass; |
Grüsse, Dirk
baphumet - Mi 07.10.09 21:05
Ihr habt mich missverstanden glaub ich, ich wollte fragen ob dies möglich ist
Delphi-Quelltext
1: 2: 3: 4:
| interface procedure abc; function a1():string; |
Denn in meiner Unit befinden sich 4 Klassen, 3 von diesen sind von der ersteren abgeleitet um dort speziell Ihre Tätigkeiten auszuführen, doch die Ausagbemethoden möchte ich in der ersten Klasse haben. Ich leg mal mein Code bei.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| unit KOMPLEX; interface uses Sysutils,math; type TKlasse=class public ... function Ausgabe1(z1: TKlasse1):String; function Ausgabe2(z1: TKlasse2):String; function Ausgabe3(z1: TKlasse3):String; end; TKlasse1=class(TKlasse) private a,b: EXTENDED; public constructor Create(a1,b1: EXTENDED); ... end; TKlasse2=class(TKlasse) private r,alpha: EXTENDED; public constructor Create(r1,alpha1: EXTENDED); ... end; TKlasse3=class(TKlasse) private r,phi: EXTENDED; public constructor Create(r1,phi1: EXTENDED); ... end; implementation |
FinnO - Mi 07.10.09 21:09
jop
baphumet - Mi 07.10.09 21:18
FinnO hat folgendes geschrieben : |
| jop |
Heißt das jetzt ja das wir uns missverstanden haben oder ja da dies möglich ist?
Tryer - Mi 07.10.09 21:21
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| interface
uses Windows, ...;
type TMyClass = class(TWasWeisIch) private FFoo : Integer; protected public property Foo: Integer read FFoo write FFoo; end;
TMyArray = array of TMyClass;
procedure abc; function a1():string;
var GlobaleVar: TWollenWirEigentlichNicht;
const UnitVersion = '1.0.0';
implementation .. |
Es ist meistens sinnvoll Typen vor Prozeduren/Funktionen zu deklarieren, da man die Typen da ja meistens benutzt.
FinnO - Mi 07.10.09 21:30
jop meinte so viel wie "ja, das geht"
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!