Evaluer une variable string contenant le nom d'une constante
louBF
Messages postés2Date d'inscriptionjeudi 13 août 2009StatutMembreDernière intervention14 août 2009
-
13 août 2009 à 19:04
AbaqueInside
Messages postés16Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention14 novembre 2009
-
1 oct. 2009 à 18:00
Bonjour,
je débute avec Foxpro. Je développe une petite application qui génère une feuille excel. L'application doit être disponible en anglais et en français, j'ai mis les labels dans un fichier .h
Je voulais inclure un fichier def_FR.h ou def_EN.h selon une variable de langue mais VFP semble charger les deux.
J'ai donc créé un seul fichier def.h avec des labels FRLB_monlabel et ENLB_monlabel. J'ai fait une petite procédure qui avec en entrée LB_monlabel et la langue renvoie FRLB_monlabel ou ENLB_monlabel (selon la langue). Mon problème c'est que je n'arrive pas à utiliser la valeur de ma constante de cette façon.
J'explique tout ça parce que ma méthode n'est peut être pas très ingénieuse.
Merci pour vos réponses
A voir également:
Evaluer une variable string contenant le nom d'une constante
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 14 août 2009 à 16:13
Bonjour,
à première vue ton approche est correcte (1 fichier h de localisation), c'est celle qui est d'ailleurs utilisée le plus souvent.
Les labels dont tu parles, ce sont des labels sur des forms? et leur caption est défini en plusieurs langues dans le fichier h?
Si tu veux qu'on t'aide, il fut nous donner des exemples précis. Donne-nous donc ici un exemple d'un label, ta procédure, la façon dont tu l'appelles.
Une 1ère piste de travail: tous les objets sont définis AVANT l'init de leur conteneur. Ce qui veut dire que quand tu arrives à l'init du form, tous les labels ont été créés, et que tu peux affecter à leurs propriétés les valeurs de ton choix. Et comme l'init du form est joué avant le show, tout celà est invisible pour l'utilisateur.
louBF
Messages postés2Date d'inscriptionjeudi 13 août 2009StatutMembreDernière intervention14 août 2009 14 août 2009 à 19:15
Bonsoir,
merci de votre réponse je vais essayer d'être plus précise.
Dans mon fichier EDMDEF.h on trouve par exemple
#DEFINE FRLB_SAVINGS Epargne
#DEFINE ENLB_SAVINGS Savings
Dans mon programme GenerateExcelReport, je souhaite utiliser ces labels selon une constante REPORT_LANG (1 français 0 anglais)
J'ai créé une procédure LangLabel
PROCEDURE LangLabel(LabelToFind,LangToUse)
IF LangToUse = 1
RetVal = "FR"+ALLTRIM(LabelToFind)
ELSE
RetVal = "EN"+ALLTRIM(LabelToFind)
ENDIF
RETURN TRANSFORM(RetVal)
ENDPROC
que je voudrais utiliser comme suit:
oSheet.Cells(lnRow,lnColT).Value = ALLTRIM(LangLabel('LB_SAVINGS',[REPORT_LANG]))
J'espère que c'est assez précis comme ça. Encore une fois la méthode n'est peut être pas bonne, si il y a une façon de faire plus élégante, je suis preneuse ;)
D'avance merci
Alice
mike_vk
Messages postés30Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention13 septembre 2013 16 août 2009 à 13:32
J'ai déjà passé pas mal de temps à chercher ça aussi, exactement le titre du sujet de la discussion.
Même si cette fonction calcul le bon nom de constante, on ne peut pas écrire RETURN &cRetVal, car Foxpro ne recherchera que les variables. Je pense que c'est logique car les constantes sont évaluées à la compil et non à l'exéc.
A mon avis il faut parvenir à inclure le bon fichier h, et fournir dans les deux fichiers les bons noms de constantes. Cela ne devrait pas être compliqué normalement !?
Vous n’avez pas trouvé la réponse que vous recherchez ?