Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#41

AW: Warum ist Delphi/(Pascal) bei uns so beliebt? (und wie erklären wir das den Neu

  Alt 3. Sep 2016, 00:14
Warum muss eine procedure immer über der liegen (bzw. global deklariert werden) von der sie aufgerufen wird.
Müssen sie nicht

Wenn du die Funktionen als Methoden ordentlich in Klassen kapselst, dann ist die Reihenfolge egal.
Und man kann auch Forward-Deklarationen deklarieren. (implizit oder explizit)

Delphi-Quellcode:
// so wäre es eigentlich
type
  TMyRecord = record
    ...
  end;
  PMyRecord = ^TMyRecord;
Delphi-Quellcode:
// das geht auch, da hier Delphi implizit das als Forward anerkennt, da es weiß, dass der Pointer immer genau 4/8 Bytes groß ist
type
  PMyRecord = ^TMyRecord;
  TMyRecord = record
    ...
    FFriend: PMyRecord;
    ...
  end;
Delphi-Quellcode:
type
  TMyClass = class; // hier auch ... ein Pinter ist immer 4/8 Byte, drum kann man diesen Typ vorher in einer anderen Klasse, oder in der Klasse selber verwenden
  ...
  TMyClass = class
    ...
  end;
Delphi-Quellcode:
interface

procedure MyProc; // implizit / bei Klassen+Methoden das Selbe

implementation

procedure MyProc;
begin
  ...
end;
Delphi-Quellcode:
implementation

procedure MyProc; forward; // explizit

...

procedure MyProc;
begin
  ...
end;
[add] https://en.wikipedia.org/wiki/One-pa...Pascal_Example

Ich hätte lieber das man proceduren und functionen auch recursive in den Units finden könnte.
Geht auch, aber bevor man seine Units kreuzverlinkt, sollte man sich besser überlegen, ob man da nicht ein Designproblem hat.

Sollte doch eigentlich egal sein ob drüber oder drunter solange wie sich diese in der gleichen Unit befindet.
Weil der Compiler/Parser zu dem Zeitpunkt noch nicht weiß was und ob es das später mal gibt und wie es deklariert ist, wenn dessen Deklaration erst später kommt?

Single-Pass-Compiler / One-Pass-Compiler gegen Multi-Pass-Compiler

Delphi ist war deswegen so ein schneller Compiler, weil es nur einmal über den Code läuft und nicht versucht in mehreren Durchgängen alles zu vermanschen und gegenzuprüfen.
Seit LLVM ist das ein "war einmal".
$2B or not $2B

Geändert von himitsu ( 3. Sep 2016 um 00:38 Uhr)
  Mit Zitat antworten Zitat