Modifier une expression

Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007 - 16 mai 2007 à 08:32
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007 - 16 mai 2007 à 10:47
Bonjours a tous,

J'aimerais savoir si il etait possible de modifier de facon "dynamique" une expression par quelque moyen que se soit.
Je m'explique, actiellemetn j'ai un fichier INI jusque là pas de probleme enffef je disposse de plusieur [Section] ayant tous la meme syntaxe,   Biblio_Option.Decodage_Rapport.Colonne1(Index)
               Biblio_Option.Decodage_Rapport.Colonne2(Index)
               Biblio_Option.Decodage_Rapport.Colonne3(Index) Cela jusqu'a 8

J'aimerais donc créer une boucle du type:
dim a as integer
a=0
Do
    Biblio_Option.Decodage_Rapport.Colonne"a"(Index)
    ACTIONS
Loop While a<8

je precise juste que dans mon Cas a peut prendre prendre plusieur valeur max et donc variable et poru evité de créer une succession je voudrais réalisé cette petite bidouille

j'ai essayer en passant par un string masi aprés je ne peut plsu utilisé l'expression qui est de type string et donc ne me renvoi pas la valeur mais juste le text.
Help merci a vous tous

23 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 08:39
Salut,
Je ne comprends pas tout.
En plus du code que tu as mi il serait bin de mettre quelques ACTIONS. et de nous mettre ton fichier INI.

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 08:42
Bonjour,

Si tu n'en as que 8, pourquoi ne pas utiliser tout simplement
on a gosub toto0, toto1, toto2, toto3, toto4; toto5, toto6, toto7
toto0 :
.........
toto1:
 .....
.
.
toto7:
........
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 08:48
Rajout :
Si tu es adroit, tu mets celà dans une routine et tu utilises Return (bien sur)
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 08:54
Ben justement je pensé avori expliqué le mieu possible dsl

enffait je decode des rapport en .txt

suivant le type du rapport Type 1 ou Type2 j'aurrai un nombre changeant de Colonne a lire soit 8 en type 1 et 12 en type 2

Ainsi je voudrais faire

une lecture mid comme cela

If mid(ligne de rapport , Biblio_Option.Decodage_Rapport.Colonne3(Index) ) ="1632" then
   Vanne3=1632
End If

et donc remplacer le "3" de colonne et vanne de facon automatique sans devoir créer 12 fois la meme suite de test pour simplifier la lecture du code
 le Ini est du style (en racourcci)

;Options Decodage D'un Rapport
;-------------------------------------------------
;       
;
[Type]
Type1 = ALTOP
Type2 = ASIType3 Type4

;


[Numéro1]
Numero1 = 2,2
Numero2 = 2,3Numero3 Numero4
;


[Numéro2]
Numero1 = 5,2
Numero2 = 7,3Numero3 Numero4

;


[colonne]
colonne1 = 8
colonne2 = 12colonne3 colonne4
;


[colonne1]
colonne1 = 21,8
colonne2 = 21,8colonne3 colonne4
;


[colonne2]
colonne1 = 31,8
colonne2 = 31,8colonne3 colonne4

;


[colonne3]
colonne1 = 41,8
colonne2 = 41,8colonne3 colonne4
;


[colonne4]
colonne1 = 51,8
colonne2 = 51,8colonne3 colonne4

;


[colonne5]
colonne1 = 61,8
colonne2 = 61,8colonne3 colonne4

;


[colonne6]
colonne1 = 71,8
colonne2 = 71,8colonne3 colonne4
;


[colonne7]
colonne1 = 81,8
colonne2 = 81,8colonne3 colonne4
;


[colonne8]
colonne1 = 91,8
colonne2 = 91,8colonne3 colonne4

;


[colonne9]colonne1 colonne2 101,8colonne3 colonne4
;


[colonne10]colonne1 colonne2 111,8colonne3 colonne4

;


[colonne11]colonne1 colonne2 121,8colonne3 colonne4
;
Voila et comme vous le remarqué  les chiffre sont inseré dans l'execution Mid( ligne , chiffre) chiffre = exemple 121,8 et op le tour et jouer
0

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

Posez votre question
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 08:55
oui mais je susi pas trés "Adroit" j'ai commencer VB que depuis 3 semaine donc je susi un peut limité dsl
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 08:59
J'avais bien compris !
Mais VB ne comprendra ni toto"a" ni toto & "a" pour se reférer à totoa !!

Tu as la solution du On a gosub (que je t'ai signalée) ou d'autres astuces (à voir) telles l'utilisation de collections, de tableaux, etc...
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 08:59
re,
je suis désolé mais j'ai toujours du mal à bien saisir.
Qu'est ce que Biblio_Option.Decodage_Rapport.Colonne1(index)
- Un controle?
- Une classe?

Juste pour dire,
Tu peux acceder à un contrôle par une chaine de caractere en passant par la collection Control de l'objet Form.
Tu pourrais utiliser un tableau de String pour Vanne
car si Vanne3 est une chaine de caractere, tu ne pourras pas t'y référerer pour y pointer à l'aider d'une autre chaine.
Bref encore plus de précision et un exemple simple serait le bienvenu.
(peu être que c'est par ce que c'est le dernier jour de taf, mais vraiment je ne comprends pas très bien)

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 09:02
"oui mais je susi pas trés "Adroit" j'ai commencer VB que depuis 3 semaine donc je susi un peut limité dsl "


L'es-tu suffisamment (adroit) pour ouvrir ton aide en ligne et voir (accompagnés d'exemples clairs) On... Gosub ... et Return ?
J'espère que oui... (c'est très facile : un click sur l'onglet "?", "Aide", "Help" ou "MSDN" , selon ta version de VB)
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 09:12
Tu sais etre plus calé qu'une personne ne te permet en aucun cas de la prendre poru un inbecile et si je fait appel a vous c'est que j'ai rien trouvé dans les termes de recherche sur l'aide en ligne a present j'ai une piste avec le gosub masi je doute que cela me sauve

cela dit merci de m'aidé a cherché et a trouvé une solution a mon probleme
Biblio_Option.Decodage_Rapport.Colonne1(index) est enffait issu d'une autre fonction que j'utilise, elle me racourcci la récupération des donné de mon .INI elle inclue Getprivatesetting etc et je la resume ainsi

donc pour le moment il m'est impossible de modifier comment oké toto"a" peut pas faire totoa donc soit je doit répété le nombre de fois utile a toute mes colonne soit j'utilise une collection je vais voir comme réalisé sa
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 09:16
Salut,
Pour le Vanne3 tu peux très bien faire un

Public Vanne(1 To 5) As String 'Par exempleVanne(3) "Blabla" 'remplacera alors Vanne3 "Blabla", ----
[code.aspx?ID=41455 By Renfield]
J'ai toujours du mal avec Biblio_Option.Decodage_Rapport.Colonne1(index)

Je pense que tu ferais mieux de nous donner la procédure qui utilise GetPrivateProfileString ca pourrais nous aider
@+: =89254 Ju£i?n
Pensez: Réponse acceptée
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 09:23
Alors :
'On lance une boucle DO...Loop pour recuperer tous les Type
Index = 0
Do  'on définit la section Type du fichier ini
    Section = "Colonne"
    'On definiet la clé
    Key = "Colonne" & (Index + 1)
    'Appel de la fonction de récupération INI
    Biblio_Option.Decodage_Rapport.Colonne(Index) = GetPrivateSetting(Chemin, Section, Key, Defaut)
    'Incrémentation de Index
    Index = Index + 1
Loop While Index <= 9 'Recommencer Tant que Index inférieur ou égal a 9

Cela utilise:
Function GetPrivateSetting(ByVal szFileName As String, ByVal szSection As String, ByVal szKey As String, ByVal szDefault As String) As String
'---------------------------------------------------
' Charger une donnée d'un fichier ini
'---------------------------------------------------
'---------------------------------------------------
Dim lResult  As Long
Dim szResult As String
Dim lpResult As String * 1024
Dim lSize    As Long


On Error GoTo Erreur


lSize = Len(lpResult) - 1
lResult = GetPrivateProfileString(szSection, szKey, szDefault, lpResult, lSize, szFileName)


'If lResult &gt;= 0 Then
If lResult >= 0 Then
    szResult = Left(lpResult, lResult)
Else
    szResult = szDefault
End If
   
'Valeur de retour
GetPrivateSetting = szResult
Exit Function


Erreur:
GetPrivateSetting = szDefault
End Function

et donc moi j'utilise direct  Biblio_Option.Decodage_Rapport.Colonne1(index)  qui est etable et déclaré comme suit:

Public Type Type_Option_Decodage_Rapport
    Type_Vanne(9) As String
    Numero1(9) As String
    Numero2(9) As String
    Colonne(9) As String
    Colonne1(9) As String
    Colonne2(9) As String
    Colonne3(9) As String
    Colonne4(9) As String
    Colonne5(9) As String
    Colonne6(9) As String
    Colonne7(9) As String
    Colonne8(9) As String
    Colonne9(9) As String
    Colonne10(9) As String
    Colonne11(9) As String
End Type

je croit avori rien oublier du cheminement 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 09:25
Je regrette, Syxfull , que tu interprêtes l'exposé d'une méthode (et l'invite à ouvrir ton aide en ligne pour y voir des exemples d'utilisation) comme la marque de ce que l'on te prend pour un imbécile ...
J'y voyais plutôt, au conbtraire, la marque de ce que je pensais que tu serais capable de celà... et de comprendre..

Je n'interviens donc plus sur ce sujet.
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 09:26
pour le public vanne(1to5)

vanne(3)="Ploplop" je peut donc remplacer

vanne(a)="ploplop" avec a=3 donc

deja un petit pas d'accompli donc
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 09:29
se que je veut dire jmfmarques c'est que je ne serait pas sur se forum si j'avais trouvé la solution dans l'aide que je consulte par ailleur beaucoup car comme je le rappel j'ai decouvers VB il y a 3 semaines dans le cadre d'un stage et je susi débarqué directement sur un sujet a 50% entammé j'ai donc du tous comprendre décrypter et utilisé pour continuer se projet et avec aucune expérience  ben croit moi c'est pas facile  les premiere ligne directement en connection de BDD datagrid etc
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 09:40
Re,
ALors est ce que j'ai bien compris,
Tu veux charger en mémoire le contenu de ton fichier INI? c'est ca?
NOTE: Si tu ne sais pas de quelle type c'est il vaut dévlarer pour 12 que pour 8

@+: Ju£i?n
Pensez: Réponse acceptée
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 09:41
si je trouve pas de reponse je pense donc utilisé un Switch case et donc atribuer poru chaque valeur de ma boucle une commande Biblio_Option.Decodage_Rapport.Colonne1(index) 

comme donc

Do
   Select Case colonne
        Case 1
            a=Biblio_Option.Decodage_Rapport.Colonne1(index)
        Case 2
            a=Biblio_Option.Decodage_Rapport.Colonne2(index)
        Case 3
            a=Biblio_Option.Decodage_Rapport.Colonne3(index)
        Case 4
            a=Biblio_Option.Decodage_Rapport.Colonne4(index)
        Case 5
            a=Biblio_Option.Decodage_Rapport.Colonne5(index)
    End Select

   If Mid(ligne,a) = " truc" then
      Mon action
   End If
Loop While Colonne < ma limite

qu'en pensez vous?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 09:45
Salut,
Au vu du Type que tu utilises, je peux te conseiller d'utiliser un Tableau a 2 dimension, la premiere dimension représente l'indice de la colonne, le second la valeur associée

@+: Ju£i?n
Pensez: Réponse acceptée
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 09:47
le charmemetn en memoir est fait et fonctionne niquel et donc losque j'utilise
Biblio_Option.Decodage_Rapport.Colonne1(index) je visualise se qui est contenu dans la Section Colonne1 a la ligne Index

si on regarde mon ini donc : Biblio_Option.Decodage_Rapport.Colonne1(0)=21,8 voila
Ce 21,8 est utilisé dans mid(ligne,21,8) pour lire du 21ieme carractére jusqu'au 28ieme
 tous sa marche je cherché juste une solution pour rendre la déclaration des Biblio_Option.Decodage_Rapport.Colonne1(index) dépendant du numéro de la boucle en cour boucle 2 Biblio_Option.Decodage_Rapport.Colonne"2"(index) voila tous
0
Syxfull Messages postés 19 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 12 juin 2007
16 mai 2007 à 09:49
faire un tableau, mouais je perdrais l'avantage du fichier ini est c'est pas le but ou sinon j'ai pas compris
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 10:03
Salut,
Bah non tu ne perds pas l'avantage du fichier INI. c'est juste le remplissage qui va changer. ton fichir INI lui sert toujours à la meme chose.
Mias le traitement sera différent.

@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous