Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prototypen wie in C (https://www.delphipraxis.net/2246-prototypen-wie-c.html)

70UR157 14. Jan 2003 16:36


Prototypen wie in C
 
man betrache folgenden code:
Delphi-Quellcode:
procedure a;
begin
  b;
end;

procedure b;
begin
  c;
end;

procedure c;
begin
  a;
end;

begin
  a;
end.
...okok es würde nix gemacht werden (bis auf einen stack overflow :wink:), aber darum geht es nicht. das problem ist dass sich nur prozeduren(/funktionen) aufrufen lassen die vor ihrem aufruf bereits im quelltext geschrieben sind. in dem obigen fall ist es jedoch unmöglich eine solche reihenfolge zu finden! in c würde man einfach prototypen schreiben, aber was macht man da in object-pascal :?:

thx

Chewie 14. Jan 2003 16:48

Jede Unit besteht u.a. aus einen interface und einem implementation-Teil. Im Interface-Teil können Programmroutinen vor der Definition deklariert werden.
Bei dir sähe das dann so aus:
Delphi-Quellcode:
unit Unit1;

interface

procedure a;
procedure b;
procedure c;

implementation

//...deine Prozeduren und die Hauptprozedur


end.

jbg 14. Jan 2003 17:11

Eine andere Möglichkeit:
Delphi-Quellcode:
procedure a; forward;
procedure b; forward;
procedure c; forward;

procedure a;
begin
  b;
end;
...

svehei 21. Mär 2003 13:28

und wie wuerde das beispielsweise bei klassen aussehen?

wenn ich also eine unit habe mit x klassen, alle sind in irgendweiser von einander abhaengig (z.B. eigene klassen mit eigenen klassenlisten). wenn ich jetzt im nachhinein eine neue klassen einbaue, muss ich immer verdammt aufpassen von ich die klassen deklariere.

gibt es vielleicht ne moeglichkeit, dass ich alle Klassen im vorfeld deklariere (prototyp)

sakura 21. Mär 2003 13:31

Ebenfalls entsprechend einfach.
Delphi-Quellcode:
type
  TClass2 = class;
  TClass3 = class;

  TClass1 = class(TObject)
    FClass2: TClass2;
  end;

  TClass2 = class(TComponent)
    FClass3: TClass3;
  end;

  TClass3 = class(TControl)
    FClass1: TClass1;
  end;


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