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,
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.
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.
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)
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
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
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 !
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.