mr100kv
Messages postés14Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention19 septembre 2011
-
24 avril 2011 à 19:22
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024
-
25 avril 2011 à 14:44
Bonjour,
je bute sur une recherche dans un tableau.
***************************************************************************
Mon code :
'on lit le fichier
Dim v_Monfichier As StreamReader
Dim v_Contenu As String
v_Monfichier = New StreamReader("Storage Card\2577\ConfigInstall.ini")
' on met tout le contenu du fichier dans une variable
v_Contenu = v_Monfichier.ReadToEnd().ToString
' On le met dans un tableau avec en parametre le séparateur de mot ","
Dim v_Tableau() As String = v_Contenu.Split(",", vbCr)
' on recherche un élément dans le tableau
Dim v_AChercher As String = "Parametres de connexion"
For v_CptA = 1 To v_Tableau.GetUpperBound(0)
MsgBox(v_Tableau(v_CptA))
If v_Tableau(v_CptA) = v_AChercher Then
Exit For
End If
Next
***************************************************************************
mon fichier ini :
Applications
Microsoft .NET CF 3.5 FR-String Resource,01_NETCFv35.Messages.FR.wm.cab,0
Microsoft SQL Mobile 2005,05_sqlce.ppc.wce5.armv4i.CAB,1
PARAMETRES
Parametres de connexion,DisabledAPN.xml
Fin de section
***************************************************************************
ma problématique :
si ma recherche s'effectue sur le premier élément qui fait suite au VbCr (ex : Microsoft .NET CF 3.5 FR-String Resource, PARAMETRES,..), la recherche échoue
si ma recherche s'effectue sur un autre élément (01_NETCFv35.Messages.FR.wm.cab,DisabledAPN.xml,..) pas de pb
tous mes éléments sont de type STring.
Moi y en a rien comprendre...
Merci de votre aide,
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 24 avril 2011 à 22:11
Bonjour,
Le but du pas à pas que je te conseil est de vérifier élément par élément pour voir si l'élément recherché apparait, si ce n'est pas le cas, comprendre pourquoi.
Essayes avec ton code d'origine pour voir.
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 24 avril 2011 à 23:48
Bonjour,
Jenpense que ça vient du séparateur de ligne, VbCrLf, comme tu ne retire que le Cr, il reste le Lf.
Il y a une surcharges dans le Split (voir si présent dans le CF) qui te permet de lui passer une chaine de caractères et il fais le découpage à chacun de ces caractères. Sinon, utilises un tableau de char pour voir si ça passe.
mr100kv
Messages postés14Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention19 septembre 2011 25 avril 2011 à 14:24
Salut,
on tient le bon bout !
En fait, il y a 2 caractères indésirables : VbCr & VbLf
j'en ai donc renommé un en "," et supprimé l'autre
le code fonctionne avec ceci :
v_Contenu = v_Contenu.Replace(vbCr, "").Trim(vbLf)
Dim v_Tableau() As String = v_Contenu.Split(",", vbLf)
mr100kv
Messages postés14Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention19 septembre 2011 24 avril 2011 à 20:44
Bonjour NHenry,
Merci pour ta réactivité.
Pour le bilan :
1 - j'ai testé le mode pas à pas qui n'a rien donné car pas d'erreur, je n'ai pas la remontée de l'information c'est tout.
2 - j'ai testé aussi avec le VbCrLf qui donne le même résultat
3 - j'ai testé avec ta procédure proposée :
Dim v_Path As String = "Storage Card\2577\ConfigInstall.ini"
Dim v_Tableau() As String = IO.File.ReadAllLines(v_Path, Encoding.Unicode)
Dim s As String
For Each s In v_Tableau
MsgBox(s)
Next
Cependant, j'ai un message " IO.File.ReadAllLines " n'est pas un membre de System.IO.File, sachant que j'ai déclaré les namespace suivants :
Imports System
Imports System.IO
Imports System.IO.File
Imports System.IO.Path
Imports System.Text
mr100kv
Messages postés14Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention19 septembre 2011 24 avril 2011 à 21:26
Re,
Effectivement, j'utilise le compact Framework 3.5 car c'est un dev pour PDA.
Je développe sous visual studio 2008, le pas à pas, c'est le " pas à pas détaillé " ?
si tel est le cas, comment l'utiliser à bon escient, car je n'ai trouvé aucune erreur particulière ?
Dsl, et encore merci
mr100kv
Messages postés14Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention19 septembre 2011 24 avril 2011 à 23:20
j'ai effectivement effectué divers tests croisés avec des boucles et en affichant les résultats dans un msgbox, comme par exemple afficher un à un tous les éléments du tableau afin de voir comment ils étaient interprétés, de quel type ils étaient.
Ils sont tous sont bien enregistrés dans le tableau, possèdent tous le même type STRING, cependant le pb persiste.
Je pense que la piste à suivre est dépendante du split que j'ai effectué ; comme je le précisait plus haut, les seuls éléments que je n'arrive pas à cibler sont uniquement les premiers items qui font suite au retour chariot (VbCr), les autres pas de soucis.
L'objectif de mon dev est de créer un master sur carte SD auto-installable qui , lors de l'insertion de ladite carte, exécute un autorun.exe qui va consulter un fichier de type .ini dans lequel je précise le séquencement des opérations (installation du cab1, puis du cab2,....puis du fichier de paramétrage provisionning XML,...)
Je bute donc sur la toute première partie.
Voilà, merci pour ton aide et bonne nuit !
mr100kv
Messages postés14Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention19 septembre 2011 25 avril 2011 à 09:03
Salut NHenry,
Comme quoi la nuit porte conseil !
Effectivement, il s'agit bien d'un séparateur VbLf qui me fout la zone.
J'ai effectué un découpage comme suit :
MsgBox("a" & v_Tableau(v_CptA) & "a") qui m'a permis de révéler un séparateur " saut de ligne ".
Maintenant la question reste comment supprimer tous ces sauts qui occupent une place vide dans le tableau ?
Encore merci de m'avoir mis sur la piste.