Evaluer une variable string contenant le nom d'une constante

louBF Messages postés 2 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 14 août 2009 - 13 août 2009 à 19:04
AbaqueInside Messages postés 16 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 14 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

5 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
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.
0
louBF Messages postés 2 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 14 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
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
15 août 2009 à 15:26
Bonjour,

je pense que c'est un simple problème de visibilité (de portée des constantes définies dans le h).

à quel endroit as-tu inclus ton fichier h? d'où appelles-tu ce 'oSheet.Cells...'

au déboguage, quel est le résultat de ce LangLabel('LB_SAVINGS',...)?
0
mike_vk Messages postés 30 Date d'inscription dimanche 5 mars 2006 Statut Membre Dernière intervention 13 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 !?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AbaqueInside Messages postés 16 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 14 novembre 2009 1
1 oct. 2009 à 18:00
La meilleure solution est AMHA une table lexique incluse dans le projet

Communauté Francophone des Professionnels FoxPro
news://news.AtoutFox.org/AtoutFox.association
www.AtoutFox.org
0
Rejoignez-nous