#pragma abfragen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

#pragma abfragen

Beitrag von Jan »

Hallo,

im Moment teste ich mit einer neuen externen Bibliothek, die wir zur Zeit noch in der Vorversion nutzen. Und je nachdem welche der beiden Versionen in per #pragma library einbinde müssen verschiedene andere Werte gesetzt werden.

Jetzt könnte ich mir natürlich eine Variable setzen, die beides parallel setzt. Aber gibt es nicht vielleicht die Möglichkeit abzufragen, welche der beiden dll ich eingebunden habe?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Tom »

Du könntest parallel eine Konstante setzen, die im Code vorkommt:

Code: Alles auswählen

#pragma library("meinelib_version31.lib")
#define MEINELIB 31
oder

Code: Alles auswählen

#pragma library("meinelib_version33.lib")
#define MEINELIB 33
Im Code:

Code: Alles auswählen

IF MEINELIB = 31 // das wäre dann nach dem PP "IF 31 = 33" oder "IF 33 = 33"
Eine wirklich gute 3rd-Party-Lib enthält aber eine Versionsfunktion, das macht dann alles einfacher.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Jan »

Hallo Tom,

etwas anders als ich das mit der Abfrage gedacht hatte. Aber auch nicht das was ich suche. Ich dachte da eher an etwas wie: "Ist die meinedll12.dll oder die meinedll13.dll eingebunden?":

Das ist natürlich nur eine rein akademische Frage. Es gibt mindestens drei Wege, das anders zu regeln - einen davon hast Du ja aufgezeigt. Würde mich aber einfach mal interessieren ob so was nicht doch geht.

Das mit der Versionsabfrage mache ich übrigens an anderer Stelle auch. Bei der Abfrage ob es Updates gibt. Aber da gehe ich dann halt wirklich auf die interne Version der dll. Hier aber geht es um komplett andere Dateinamen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Marcus Herz »

auch eine Möglichkeit, vor allem wenn es neue Funktionen gibt:
#IF MENIEVARIALBE = 23
#ELSE
#IF MENIEVARIALBE = 25

#ENDIF
#ENDIF
oder im project einen Compilerschalter setzen
COMPILE_FLAGS = /w /wi /wl /wu /b /q /dMEINEVARIABLE=25
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Jan »

Marcus,

das wäre Variante 2. Die ich im Kopf hatte.

Aber wie gesagt: Ich würde einfach nur gerne wissen, ob man über den Dateinamen abfragen kann, ob diese dll eingebunden worden ist.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Marcus Herz »

aDll := dllInfo(, DLL_INFO_LIST)
gibt alle geladenen DLL zurück
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Marcus Herz »

was war denn Variante 3?
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Jan »

Marcus,

Variante 3 wäre, das ich per IF File() nach dem Dateinamen frage.

Aber es gibt bestimmt auch noch Varianten 4 und 5 und ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Tom »

@Marcus:
aDll := dllInfo(, DLL_INFO_LIST)
gibt alle geladenen DLL zurück
Ja, aber nur die Handles, keine Dateinamen. Man muss dann für jeden Eintrag aus dieser Liste mit

Code: Alles auswählen

DllInfo(<nHandle>,DLL_INFO_NAME)
den Namen abfragen.
Zuletzt geändert von Tom am Mi, 07. Okt 2020 16:37, insgesamt 1-mal geändert.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Tom »

Code: Alles auswählen

FUNCTION IsDllLoadedByName(c)
LOCAL aList := DllInfo(,DLL_INFO_LIST), nCtr := Len(aList), n
FOR n := 1 TO nCtr
  IF Upper(DllInfo(aList[n],DLL_INFO_NAME)) == Upper(c)
    RETURN .T.
  ENDIF
NEXT
RETURN .F.

Usage: ? IsDllLoadedByName('meinedll31.dll')
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Jan »

Hallo Tom,

Danke für die Mühe, das Sample zusammen zu stellen. Macht genau das was ich gedacht hatte. Ich hatte nur gehofft daß das mit einer mir nicht in den Sinn kommenden Xbase++-Funktion direkt klappen könnte.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Tom »

Gerne. Aber Marcus hatte den Impuls gegeben.
Herzlich,
Tom
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: #pragma abfragen

Beitrag von Marcus Herz »

Ich wollte Jan auch noch ein bisschen was zum Denken überlassen :-)
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten