Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prozedur durch Unit "weiterreichen" (https://www.delphipraxis.net/191367-prozedur-durch-unit-weiterreichen.html)

pengels 7. Jan 2017 14:53

Prozedur durch Unit "weiterreichen"
 
Hallo zusammen,

ich suche nach einer eleganten Lösung für folgendes Problem:

Unit uA enthält eine Prozedur A.
Unit uB benutzt uA und stellt zusätzlich die Prozedur B bereit.
Unit UC benutzt uB greift B zu und möchte auch auf A aus uA zugreifen.

Die Trennung in drei Units ist logisch bedingt und so gewollt. Lösungen fallen mir gleich drei ein, aber keine gefällt mir wirklich:

1) uC benutzt uA und uB
2) uB bekommt eine Prozedur callA, die dann A aufruft
3) uB enthält eine Prozedur-Variable A, der man bei der Initialisierung uA.A zuweist.

Ich dachte an so etwas wie:

unit uB;

interface

uses uA;

procedure A in uA;
procedure B;

Weiß jemand ob und wie das ggfs. geht?

MfG Peter

Darlo 7. Jan 2017 14:59

AW: Prozedur durch Unit "weiterreichen"
 
Wenn c was aus b aufruft, und das aufgerufene was aus a aufruft, dann muss c nur b kennen, und b nur a.
Oder hab ich deine Frage nicht richtig verstanden?

pengels 7. Jan 2017 15:06

AW: Prozedur durch Unit "weiterreichen"
 
Hallo Philip,

Prozedur B ruft vielleicht A auf, muss aber nicht. uC verwendet B und benötigt an anderer Stelle aber auch A. Kommentiere ich in uB die Prozedurvariable A aus, kann uC nicht mehr compiliert werden, weil A nicht bekannt ist.

MfG Peter

DeddyH 7. Jan 2017 15:11

AW: Prozedur durch Unit "weiterreichen"
 
Redeklariere doch A in uB und ruf innerhalb derer dann uA.A auf.
Delphi-Quellcode:
unit uB;

interface

uses uA;

procedure A;

implementation

procedure A;
begin
  uA.A;
end;

pengels 7. Jan 2017 15:29

AW: Prozedur durch Unit "weiterreichen"
 
Hallo Detlef,

klar, das geht. Jetzt haben wir aber zwei calls, d.h. einen Umweg über eine zweite Prozedur. Finde ich nicht so elegant... So etwas wie external oder in uA fände ich besser. Scheint es aber nicht zu geben...

MfG Peter

HolgerX 7. Jan 2017 15:47

AW: Prozedur durch Unit "weiterreichen"
 
Hmm.

Oder Du gehst über Classen..

Unit A
-> Classe A mit Procedure A

Unit B
-> Classe B, von Classe A abgeleitet mit zusätzlich Procedure B

Unit C
-> Unses nur Unit B
-> Ruft 'Classe B'.'Procedure A' von Classe B auf...

Alle Proceduren als CLASS und Du brauchst auch keine Object-Instanz.


Das würde doch dem entsprechen, was Du möchtest. Oder liege ich falsch? ;)

pengels 7. Jan 2017 16:05

AW: Prozedur durch Unit "weiterreichen"
 
Hallo Holger,

Klassen wären auch eine Möglichkeit, passen aber logisch auch nicht wirklich zum Problem. Außerdem wird der Overhead noch größer sein, als bei einem verschachtelten Aufruf.

MfG Peter

p80286 7. Jan 2017 16:10

AW: Prozedur durch Unit "weiterreichen"
 
Ich verstehe Dein Problem nicht.
wenn C Bestandteile aus B und A benötigt, dann
Delphi-Quellcode:
 uses B,A;
und gut ist.

Gruß
K-H

pengels 7. Jan 2017 16:13

AW: Prozedur durch Unit "weiterreichen"
 
Hallo K-H,

ich habe kein "echtes" Problem, die vorgeschlagenen Lösungswege habe ich bis auf die Klassen alle selbst schon genannt. Ich frage mich aber eben, ob es nicht eine elegantere Möglichkeit ohne diese Krücken gibt.

MfG Peter

Uwe Raabe 7. Jan 2017 16:36

AW: Prozedur durch Unit "weiterreichen"
 
Zitat:

Zitat von pengels (Beitrag 1358338)
Ich frage mich aber eben, ob es nicht eine elegantere Möglichkeit ohne diese Krücken gibt.

Delphi-Quellcode:
uses A, B;
ist die kleinste, eleganteste und performanteste Lösung - und in keiner Weise eine Krücke, sondern genau so ist es gedacht.


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