Evaluer une variable string contenant le nom d'une constante

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

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

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
Messages postés
828
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
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',...)?
Messages postés
30
Date d'inscription
dimanche 5 mars 2006
Statut
Membre
Dernière intervention
13 septembre 2013

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 !?
Messages postés
16
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
14 novembre 2009
1
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