| Autor |
Beitrag |
baphumet
      
Beiträge: 44
Windows XP
Delphi 7
|
Verfasst: Mi 07.10.09 20:18
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?
Zuletzt bearbeitet von baphumet am Mi 07.10.09 20:55, insgesamt 1-mal bearbeitet
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: 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
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: 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 
      
Beiträge: 44
Windows XP
Delphi 7
|
Verfasst: 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.
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 |
Zuletzt bearbeitet von baphumet am Mi 07.10.09 21:17, insgesamt 2-mal bearbeitet
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mi 07.10.09 21:09
|
|
baphumet 
      
Beiträge: 44
Windows XP
Delphi 7
|
Verfasst: 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
      
Beiträge: 226
Erhaltene Danke: 7
|
Verfasst: 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
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mi 07.10.09 21:30
jop meinte so viel wie "ja, das geht"
|
|