Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Auf den Wert einer Proc./Funkt. einer anderen Unit zugreifen (https://www.delphipraxis.net/51122-auf-den-wert-einer-proc-funkt-einer-anderen-unit-zugreifen.html)

Aike 6. Aug 2005 11:52


Auf den Wert einer Proc./Funkt. einer anderen Unit zugreifen
 
Hallöchen,

ich kenne mich mit dem Zugriff auf andere Units nur sehr mangelhaft aus, deshalb hab ich auch nur spartanisch in diesem Forum suchen können.

Es geht mir ganz einfach darum, dass ich aus meiner Haupt-Unit auf eine andere zugreifen möchte, dort einen Wert ermittle und den an die Haupt-Unit zurückgeben will. Das gegenseitige Einbinden in die uses-Klausel geht ja leider nicht. Ich hab das immer irgendwie umgangen, aber das geht mir jetzt auf den Keks.

Ich hab's mal so probiert:
Haupt-Unit; will Wert aus zweiter Unit benutzen:
Delphi-Quellcode:
public
  function SetWert:boolean; virtual; abstract;

procedure Form2.Button1OnClick(Sender: TObject);
begin
  if SetWert then
    showmessage('');
end;
Zweite Unit, in der der Code ausgeführt werden soll:
Delphi-Quellcode:
public
  function SetWert:boolean; virtual; //Ja, ich hab mit den drei Begriffen um mich geschmissen ;-)

function Form1.SetWert:boolean;
begin
  result:=True; //Nur so zum Testen
end;
Leider kommt dann in der Haupt-Unit beim Button-Klick die Fehlermeldung "Abstakter Fehler". Daraus schließe ich, dass was mit der Deklaration nicht stimmt, aber ich komme nicht drauf, was ich da anders schreiben muss :-/ Vielleicht muss auch 'ne get-Methode her, aber ... :?:

Ich hoffe, ihr könnt mir da mal wieder weiterhelfen! :gruebel:

Liebe Grüße
Aike

bttb930 6. Aug 2005 11:55

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
in der zeweiten unit muß statt virtual override stehen.

Aike 6. Aug 2005 11:59

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
Dann gibt mir der Compiler die Fehlermeldung:
"setWert nicht in Basisklasse gefunden."

Phistev 6. Aug 2005 12:07

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
Das Schlüsselwort Delphi-Referenz durchsuchenabstract besagt, dass eine Funktion nur deklariert wird, aber nicht definiert. Du definierst die Funktion aber. Weg damit. Um auf Sachen in einer anderen Unit zugreifen zu können, musst du die Unit in die uses-Klausel aufnehmen:
Delphi-Quellcode:
uses ..., uForm1; {oder wie die Unit auch heißt}
und dann (am besten) über
Delphi-Quellcode:
uForm1.form1.setwert
aufrufen.

Aike 6. Aug 2005 12:16

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
Oh, das ist aber hübsch! Funktioniert, danke :hi:

Oxmyx 6. Aug 2005 12:16

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
Wenn du von deiner Hauptunit eine Funktion in einer anderen Unit ausführen willst, bindest du die andere Unit einfach per uses-Klausel ein und damit hat sich's. Dazu brauchst du keine virtuellen Methoden.

Aike 6. Aug 2005 13:33

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
Und wenn ich von einer Neben-Unit auf die Haupt-Unit zugreifen will und das mit der Uses-Klausel nicht mehr geht? :-)

Oxmyx 6. Aug 2005 13:41

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
Dann schreibst du die uses-Klausel in den implementation-Abschnitt.

CLRS530 6. Aug 2005 15:04

Re: Auf den Wert einer Proc./Funkt. einer anderen Unit zugre
 
das vergiss mal lieber gleich, mach deinen code so, das du von keiner anderen Unit auf deine Main zugreifen musst, das ist eigendlich immer möglich, denn das schlimmste ist, wenn du kreuzenden Verkehr hast, also die Main wo anders einbindest und die andere in die main.


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