Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bei external-Deklaration, konstantenausdruck erwartet (https://www.delphipraxis.net/20021-bei-external-deklaration-konstantenausdruck-erwartet.html)

MrKnogge 12. Apr 2004 17:08


Bei external-Deklaration, konstantenausdruck erwartet
 
Hallo !

Ich habe in meinem Programmordner ein Verzeichniss namens "PlugIns",
dort befinden sich mehrere PlugIn's, soweit keine Probleme (sakura's Tutoral sei :thuimb: ),
aber nun muss ich aus einer DLL auf eine funktion aus der Anwenung zugreifen,
also hab ich mir ne function geschrieben, die mir den übergeordneten Ordner liefert,
aber nun verlangt er bei der Deklaration den vollständigen Pfad als konstante !

Könnt ihr mir weiterhelfen ?

Christian Seehase 12. Apr 2004 17:15

Re: Bei external-Deklaration, konstantenausdruck erwartet
 
Moin MrKnogge,

wie wär's denn mit ein klein wenig Sourcecode? ;-)

MrKnogge 12. Apr 2004 17:32

Re: Bei external-Deklaration, konstantenausdruck erwartet
 
Zitat:

Zitat von Christian Seehase
Moin MrKnogge,

wie wär's denn mit ein klein wenig Sourcecode? ;-)

Aber sicher doch:

Anwenung:
Delphi-Quellcode:
...

function GetZahl: PInteger;
begin
  result := @Zahl;
end;

exports
  GetZahlUser,
DLL:
Delphi-Quellcode:
...

function GetITDirectory(): string;
var
  path: string;
begin
  path := ExtractFilePath(ParamStr(0));
  path := Copy(path,0,length(path)-1);
  while path[length(path)] <> '\' do
    path := Copy(path,0,length(path)-1);
end;

function GetZahl: PInteger; external GetITDirectory + MeinProgramm.exe;

...
Mit GetITDirectory möchte ich das übergeordnete Verzeichniss herrausbekommen, beispiel:
Diese Datei:
C:\Programme\MeinProgramm\PlugIns\MeinPlugIn.dll
braucht diese:
C:\Programme\MeinProgramm\MeinProgramm.exe

Chewie 12. Apr 2004 18:21

Re: Bei external-Deklaration, konstantenausdruck erwartet
 
external ist eine Direktive, die zur Kompilierzeit ausgewertet wird. Und dort wird der Code noch nicht ausgeführt. Deshalb können nur konstante Namen für die statische Bindung verwendet werden.

Für dich kommt wohl das [dp="DLL dynamisch"]dynamische Einbinden[/dp] in Frage.

MrKnogge 12. Apr 2004 18:25

Re: Bei external-Deklaration, konstantenausdruck erwartet
 
hm, schade.

Wenn es andersherum gewesen wäre, hätte ich ja beispielsweise 'PlugIns\Plugin.dll' schreiben können, und ich dachte zu sowas gibts auch n gegenteil, aber '..\MeinProgramm.exe' funzt nicht.

Danke für den Tip, dann binde ich's eben Dynamisch ein. Sollte jemand noch ne andere Idee haben, immer her damit :-D


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