Import n'accepte pas une variable comme parametre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Import n'accepte pas une variable comme parametre

Message par falsam »

Suite à ce poste Je suis en train d'essayer de rendre un wrapper MySql crossplaform.

La fonction import utilisé dans mon wrapper mysql actuel fonctionne bien sous Windows sous cette forme..

Code : Tout sélectionner

;Import de quelques fonctions de la bibliothéque MySql
Import "libmysql.lib"
EndImport
J'ai juste ajouté les lignes ci-dessus par

Code : Tout sélectionner

Global MysqlDllFilename.s

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    MysqlDllFilename = "libmysql.dll"
  CompilerCase #PB_OS_Linux
    MysqlDllFilename = "libmysqlclient.so"
  CompilerCase #PB_OS_MacOS
    MysqlDllFilename = "libmysqlclient.so"
  CompilerCase #PB_OS_AmigaOS
    MysqlDllFilename = "mysqlclient.library"
CompilerEndSelect

;Import de quelques fonctions de la bibliothéque MySql
Import MysqlDllFilename
EndImport
Mais j'obtiens l'erreur suivant lors de la compilation
Seule des chaines de caractères constantes sont valides après un 'Import or ImportC'
Dernière modification par falsam le jeu. 01/août/2013 15:33, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Import n'accepte pas une variable comme parametre

Message par Backup »

ben fait :

Code : Tout sélectionner

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    Import "libmysql.dll"
  CompilerCase #PB_OS_Linux
    Import "libmysqlclient.so"
  CompilerCase #PB_OS_MacOS
   Import "libmysqlclient.so"
  CompilerCase #PB_OS_AmigaOS
  Import "mysqlclient.library"
CompilerEndSelect

 
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Import n'accepte pas une variable comme parametre

Message par falsam »

Merci Dobro. je vais procéder de cette manière mais je trouve ça étonnant.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Import n'accepte pas une variable comme parametre

Message par Backup »

pas tant que ça , Purebasic apparemment ne "pre-process" pas
il n'analyse pas le code avant compilation
donc, il lui faut des "literal" qu'il transforme a la volé ...

s'il y avait plusieurs Pass a la compilation, ce genre de truc serait possible ...
puisqu'une pass remplacerai les Variables par leur equivalents ...

je pense que Fred sera bien obligé a un moment ou un autre de faire de la compilation multipass ... :)
(mais peut etre le fait t'il deja ?)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Import n'accepte pas une variable comme parametre

Message par G-Rom »

le compilo ne fait pas qu'une passe.
Import/ImportC est une commande du précompilateur, le string n'étant pas connu à la précompilation , car la précompilation est une étape avant la compilation.
Un compilateur comme gcc/g++/mingw sortirais le même genre d'erreur.
Un compilateur se divise en 2 grandes partie , la partie avant , et la partie arrière, la partie avant passe à la moulinette le code source et sans rentré dans les détails : précompilation & transformation en code intermédiaire, ensuite la partie arrière transforme le code intermediaire en code exploitable par la cible de compilation ( win32/64, linux , mac , etc...)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Import n'accepte pas une variable comme parametre

Message par falsam »

Merci pour ces précisions G-Rom :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Re: Import n'accepte pas une variable comme parametre

Message par Fred »

La valeur d'une variable n'est connue qu'a l'execution, le compilateur ne resout pas ce genre de chose à la compilation. Pourquoi ne pas simplement utiliser une constante ?

Code : Tout sélectionner

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    #MysqlDllFilename = "libmysql.dll"
  CompilerCase #PB_OS_Linux
    #MysqlDllFilename = "libmysqlclient.so"
  CompilerCase #PB_OS_MacOS
    #MysqlDllFilename = "libmysqlclient.so"
  CompilerCase #PB_OS_AmigaOS
    #MysqlDllFilename = "mysqlclient.library"
CompilerEndSelect

;Import de quelques fonctions de la bibliothéque MySql
Import #MysqlDllFilename
EndImport
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Import n'accepte pas une variable comme parametre

Message par falsam »

Fred a écrit :La valeur d'une variable n'est connue qu'a l'execution, le compilateur ne resout pas ce genre de chose à la compilation. Pourquoi ne pas simplement utiliser une constante ?
Pourquoi pas d'autant plus que cette solution est plutot élégante. Merci Fred.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre