My.resources et variable [Résolu]

Signaler
Messages postés
31
Date d'inscription
vendredi 6 février 2009
Statut
Membre
Dernière intervention
20 janvier 2010
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour à tous,

J'ai plusieurs ressources dans mon appli, et j'aimerais les interroger de façon dynamique.

Par exemple j'ai deux fichiers ressources :
benzene.txt
TCE.txt

Dans mon formulaire, j'ai une list box avec benzene et TCE.

Ma question, comment puis je générer automatiquement le lien vers ma ressource?

Du genre :
dim polluant as string
polluant = Select_polluant.text
msgbox(My.resources.polluant)

Mais cela ne marche pas, comme c'est bizarre =)
Merci d'avance pour votre aide !

11 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
Dim blabla as Object = My.Resources.ResourceManager.GetObject("ta_ressource_string")
Messages postés
8
Date d'inscription
dimanche 3 novembre 2002
Statut
Membre
Dernière intervention
29 mars 2010
1
TcheTche
mon cher PCPT tu as mis un terme à une nuit blanche de recherches ! je t'en remercie d'autant plus que ta première réponse date du mardi 24 novembre 2009 je ne savais pas si tu etais toujours présent!
l'erreur exacte c'était que par exemple "Test0011 n'est pas membre de Resources" alors que j'ai 600 fichiers du type Test0011.txt dans Resources et qu'ils sont tous valides.
je ne voulais pas écrire 200 lignes du type
Dim NumTest As Integer
'NumTest = CStr(ListBox1.SelectedItem)
'If NumTest 1 Then TextBox1.Text My.Resources.Test0011 : RichTextBox2.Text = My.Resources.Test0012 : TextBox2.Text = My.Resources.Test0013
que je remplace avntageusement par :
TextBox1.Text = My.Resources.ResourceManager.GetObject("Test" & CStr(ListBox1.SelectedItem) & "1").ToString
RichTextBox2.Text = My.Resources.ResourceManager.GetObject("Test" & CStr(ListBox1.SelectedItem) & "2").ToString
TextBox2.Text = My.Resources.ResourceManager.GetObject("Test" & CStr(ListBox1.SelectedItem) & "3").ToString
et ça marche ! encore merci et à 68 ans c'est une joie d''apprendre...!
ce que je ne comprends pas encore très bien c'est la dualité d'appartenance à la fois comme "String" et "membre de de resources"

j'ai 3 fichiers .txt car je ne sais pas extraire une ligne précise de mon fichier .txt .

je vais maintenant m'initier aux collections de label
, richtextbox ou de textbox

je développe un programme qui utilise du français et du grec moderne et donc en unicode.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
salut,

après compilation tu ne peux ajouter de ressource, il n'y a donc rien de dynamique :
tu proposes une liste de choix FIXE, relative aux ressources FIXES

le select case est le plus approprié

ps : si ta ressource est un fichier, il faut l'ouvrir avant de pouvoir afficher son contenu. normal que ton MSGBOX ne fonctionne pas donc


++
[hr]
Messages postés
31
Date d'inscription
vendredi 6 février 2009
Statut
Membre
Dernière intervention
20 janvier 2010

Je sais qu'après compilation je ne peux plus ajouter de ressources, je voulais dire dynamique au niveau de la génération du lien vers la ressource.

A terme, je vais avoir environ 70 polluants, et donc faire un case serait assez long... C'est pour cela que j'aurais souhaité avoir 2-3 lignes de code seulement pour cette fonction.

Ma liste de choix est fixe, et mes ressources aussi ;)

un simple code du genre :
polluant_fichier = My.resources.& variable_list_box...

Après je peux le manipuler comme je le souhaite ;) malheureusement cela ne marche pas, donc si vraiment il n'y a pas de méthode moins laborieuse pour exploiter une série de ressources je ferais avec ;)

Merci pour ta réponse
Messages postés
31
Date d'inscription
vendredi 6 février 2009
Statut
Membre
Dernière intervention
20 janvier 2010

C'est exactement ce que je voulais, merci de ton aide !
Messages postés
8
Date d'inscription
dimanche 3 novembre 2002
Statut
Membre
Dernière intervention
29 mars 2010
1
TcheΤche

Moi aussi j'ai eu du mal à trouver mais bon ....
C'est exactement ce que je voulais, merci de ton aide !

j'ai 3 fois 200 fichiers en ressources à gérer dans mon application
Merci encore
Messages postés
8
Date d'inscription
dimanche 3 novembre 2002
Statut
Membre
Dernière intervention
29 mars 2010
1
TcheTche

Eh bien non cela ne marche pas pour Test0011.txt

j'ai un message d'erreur qui me dit que le nom du fichier n'est pas déclaré.

TextBox1.Text = My.Resources.Test0011 : ça marche

Dim blabla1 As Object = My.Resources.ResourceManager.GetObject(Test0011)

TextBox1.Text = My.Resources.blabla1 : ça ne marche pas
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
salut TcheTche ,

normal que çà ne marche pas (et par la suite quand "çà marche pas" précise l'erreur stp!) : getobject renvoie la ressource non typée, pas une propriété imaginaire

et getobject, comme indiqué, utilise le nom STRING, donc à utiliser avec les quotes

si ta ressource est valide çà donne :
TextBox1.Text = My.Resources.ResourceManager.GetObject("Test0011").ToString


[hr]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
ravi d'avoir pu t'aider

600 fichiers?
petits ou non, la ressource est compilée avec l'exe

pour une telle quantité (et masse sans doute) il serait largement préférable d'utiliser le type BLOB/OLE d'une base de données (access)

simple conseil...

bonne continuation
Messages postés
8
Date d'inscription
dimanche 3 novembre 2002
Statut
Membre
Dernière intervention
29 mars 2010
1
TcheTche

Contenu fichier N°1 dans textbox1
Αυγούστου - Καθήστε - Καλό - Μπορείτε - Μπορούμε - αρχές - γράμματα - δεύτερη - είστε; - κινέζικα - μαγειρεύει - μαγειρεύω - μετά - νέα - ραντεβού -
que je place dans des labels cliquables

Contenu fichier N°2 dans richtextbox2
00.
01. Y a-t-il du courrier pour moi ? > Έχει για μένα;
02. A table ! / Le repas est servi ! > στο τραπέζι, παρακαλώ!
03. début octobre / au début du mois d’octobre > Οκτωβρίου
04. J’avais rendez-vous chez le médecin. > Είχα στο γιατρό.
05. à la mi-août / mi-août > μέσα .
06. le second / la seconde / le deuxième / la deuxième > ο δεύτερος / η / το δεύτερο
07. les dernières nouvelles > τα τελευταία .
08. Veuillez me l’indiquer sur la carte. > να μου το δείξετε στο χάρτη, παρακαλώ;
09. Elle comprend le chinois. > Καταλαβαίνει .
10. Elle cuisine bien. / Elle sait bien cuisiner. / Elle est bonne cuisinière. > καλά
11. Bon voyage ! / Bonne route ! > ταξίδι!
12. Pouvons-nous faire du feu ? > να ανάψουμε φωτιά;
13. préparer le repas > το φαγητό
14. Quel âge avez-vous ? > Πόσο χρονών .
15. avant / pendant / après les repas > πριν / κατά / το γεύμα
16.
Contenu fichier N°3 dans textbox2
1. γράμματα - 2. Καθήστε - 3. αρχές - 4. ραντεβού - 5. Αυγούστου - 6. δεύτερη - 7. νέα - 8. Μπορείτε - 9. κινέζικα - 10. μαγειρεύει - 11. Καλό - 12. Μπορούμε - 13. μαγειρεύω - 14. είστε; - 15. μετά -

et cela par 200
les ??? correspondent à des caractères grecs.!!
je me pose la question suivante
si je réunis les trois fichiers en un seul comment je vais choisir les lignes du fichier unique pour les distribuer dans chacune des "textbox"
existe t-il des instructions pou cela? pour n'avoir 200 fichiers au lieu 600 pour le fun
bien qu'au final le contenu de resources ne soit guère plus lourd
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
pas besoin de ressources alors

un simple XML avec pour chaque valeur 3 items, étant le contenu de tes fichiers en base64

exemple de structure


  
    <value name="zone1">valeur_B64</value>
    <value name="zone2">valeur_B64</value>
    <value name="zone3">valeur_B64</value>
  
  
    <value name="zone1">valeur_B64</value>
    <value name="zone2">valeur_B64</value>
    <value name="zone3">valeur_B64</value>
  
  etc


le framework gère tout çà très bien, et tu n'auras pas à t'embêter à tout lire (cf XPATH)