Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Sichtbarkeit Prozduren in Prozeduren (https://www.delphipraxis.net/176735-sichtbarkeit-prozduren-prozeduren.html)

nakaramia 23. Sep 2013 16:18

Sichtbarkeit Prozduren in Prozeduren
 
Hallo,

ich habe ein Programm in Delphi 2007, in dem in einer Prozedur ein Dutzend anderer enthalten sind. Eine davon würde ich gern splitten, um keine Code-Kopien zu erzeugen. Dazu müsste die neue Prozedur aber von den inneren Prozeduren gesehen/aufgerufen werden können. Gibt es so eine Möglichkeit? Ich habe das mal als Pseudo-Code zusammengeschrieben.

Delphi-Quellcode:
procedure TMyParent.IchBinGanzOben;
procedure Kind1;
begin
  //hier soll KindN aufgerufen werden können
end;

procedure KindN;
begin
  //ausgelagerter Code
end;

begin
  //hier wird Kind1 aufgerufen
end;
Notfalls könnte ich KindN in Kind1 reinschreiben.

stahli 23. Sep 2013 16:31

AW: Sichtbarkeit Prozduren in Prozeduren
 
... einfach KindN vor Kind1 verschieben ;-)

Wenn Du gegenseitige Aufrufe brauchst müsstest Du die Prozeduren als (private oder protected) Methoden deklarieren.

DeddyH 23. Sep 2013 16:33

AW: Sichtbarkeit Prozduren in Prozeduren
 
Zitat:

Zitat von stahli (Beitrag 1229645)
Wenn Du gegenseitige Aufrufe brauchst müsstest Du die Prozeduren als (private oder protected) Methoden deklarieren.

Oder die Prozedurköpfe im interface-Abschnitt veröffentlichen.

Uwe Raabe 23. Sep 2013 16:34

AW: Sichtbarkeit Prozduren in Prozeduren
 
Zitat:

Zitat von DeddyH (Beitrag 1229646)
Oder die Prozedurköpfe im interface-Abschnitt veröffentlichen.

Bei lokalen Prozeduren?

DeddyH 23. Sep 2013 16:37

AW: Sichtbarkeit Prozduren in Prozeduren
 
Lokal und gegenseitiger Aufruf geht schlecht zusammen, oder?

Uwe Raabe 23. Sep 2013 16:40

AW: Sichtbarkeit Prozduren in Prozeduren
 
Zitat:

Zitat von DeddyH (Beitrag 1229648)
Lokal und gegenseitiger Aufruf geht schlecht zusammen, oder?

Wieso nicht?

Delphi-Quellcode:
procedure IchBinGanzOben;

  procedure KindN; forward;

  procedure Kind1;
  begin
    KindN;
  end;

  procedure KindN;
  begin
    Kind1;
  end;

begin
  //hier wird Kind1 aufgerufen
end;

DeddyH 23. Sep 2013 16:41

AW: Sichtbarkeit Prozduren in Prozeduren
 
Hast ja gewonnen.

stahli 23. Sep 2013 16:42

AW: Sichtbarkeit Prozduren in Prozeduren
 
Ahh! Wusste ich gar nicht...
Um so besser.

Bjoerk 23. Sep 2013 16:43

AW: Sichtbarkeit Prozduren in Prozeduren
 
Oder Kapselung einzuführen.

Delphi-Quellcode:
TSomeKinds = record
private
  FSomeInput: TSomeInput;
  FSomeOutput: TSomeOutput;
  procedure DoSomething;
  procedure DoSomethingElse;
public
  procedure Kind1;
  procedure Kind2;
  procedure KindN;
  property SomeInput: TSomeInput read FSomeInput write FSomeInput;
  property SomeOutput: TSomeOutput read SomeOutput write FSomeOutput;
end;

procedure TMyParent.IchBinGanzOben;
begin
  FSomeKinds.Kind1;
end;

Zacherl 23. Sep 2013 17:01

AW: Sichtbarkeit Prozduren in Prozeduren
 
Zitat:

Zitat von Bjoerk (Beitrag 1229652)
Oder Kapselung einzuführen.

Ist in diesem Kontext aber nicht sehr sinnvoll. Allerhöchstens als private dann, aber lokal und ggfls. mit forward ist dann eventuell doch noch schöner.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.
Seite 1 von 2  1 2      

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