Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi external const:'Name der DLL' (https://www.delphipraxis.net/11323-external-const-name-der-dll.html)

Tonic1024 4. Nov 2003 10:47


external const:'Name der DLL'
 
Moin...

ich habe einige Funktionen die einen Teil-Datensatz formatieren. Wegen der besseren Übersicht und weil man ja nie ausschließen kann, dass User mal etwas anders haben wollen als man das selbst für richtig hält, habe ich diese Funktionen in eine DLL verfrachtet.

Delphi-Quellcode:
...
function FahrerFormat(gotten: string; referenz: TDatenArray):string;
  external 'Formate.dll';
...
Jetzt habe ich aber 'zig mal den String "Formate.dll" stehen. Ich habe natürlich versucht ihn durch eine Konstante zu ersetzen, jedoch ohne Erfolg.

Gibt es eine Möglichkeit, den String an einer Stelle zentral zu hinterlegen? Es soll ja garnicht variabel - wie auch? - sein...

bios denne...

Luckie 4. Nov 2003 10:53

Re: external const:'Name der DLL'
 
Und was hat dabei nicht geklappt? :roll:

Tonic1024 4. Nov 2003 11:35

Re: external const:'Name der DLL'
 
quasi so:

Delphi-Quellcode:
function FahrerFormat(gotten: string; referenz: TDatenArray):string;

implementation

const sowiso: string = 'Formate.dll';
 
function FahrerFormat(gotten: string; referenz: TDatenArray):string;
  external sowiso;
Resultat war:

Zitat:

Zitat von compiler
[Fehler] HauptModul.pas(192): Konstantenausdruck erwartet

Hab mir gedacht, dass der Compiler vielleich zuerst die Funktionen bzw. Dll's nachsieht, und dann erst die Konstanten abfragt...

Gibts da keine Möglichkeit.

choose 4. Nov 2003 11:45

Re: external const:'Name der DLL'
 
schreibe nur
Delphi-Quellcode:
const sowiso = 'Formate.dll';

Tonic1024 4. Nov 2003 12:18

Re: external const:'Name der DLL'
 
Moin...

cool, kannte ich noch nicht... geht das auch mit ner Sammlung von Konstanten?

Bislang habe ich alle Dateien, die ich statisch brauche, in einem Record stehen...

choose 4. Nov 2003 12:37

Re: external const:'Name der DLL'
 
Was genau meinst Du mit einer
Zitat:

Sammlung von Konstanten
?

Du kannst mehrere Constanten definieren, sie müssen nur von einander verschiedene Namen besitzen. Sobald Du jedoch komplette "Konstantensätze" austauschen willst, also von
Delphi-Quellcode:
const1 = '...1';
const2 = '...2';
zu
Delphi-Quellcode:
const1 = '***1';
const2 = '***2';
kommst Du mit dieser Technik nicht weit.

Hier kannst Du dann ggf. Compilerbedingungen einsetzen oder, wenn Du ohnehin irgendwann vorhast, die Dateinamen zur Laufzeit aus einer Konfigurationsdati oä zu laden, die Referenzen mit LoadLibrary und GetProcAddress dynamsisch ermitteln.

Tonic1024 4. Nov 2003 15:46

Re: external const:'Name der DLL'
 
Ja, nee... ist schon klar...
Alles was zusammengehört habe ich halt gern zusammen.

etwa so:
Delphi-Quellcode:
type
 TProgramFiles = record
    INI: string;
    DBConLib: string;
    ...
  end;

const
  ProgramFiles : TProgrammFiles =
    (
      INI      : 'Programm.ini';
      DBConLib : 'DBCnx.dll';
      ...
    );
Das meinte ich...

Ist aber wohl Geschmackssache

Robert Marquardt 4. Nov 2003 16:26

Re: external const:'Name der DLL'
 
Das Problem mit typisierten Konstanten in Delphi ist das sie als Variablen implementiert sind.
Deshalb die Fehlermeldung.
Erschwerend kommt hinzu das string voll dynamisch ist und daher eine heimliche initialization und finalization section zum Programm hinzugefuegt werden in der die globalen String-Variablen alloziiert bzw freigegeben werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz