darkflyer
Messages postés39Date d'inscriptionsamedi 3 juin 2006StatutMembreDernière intervention28 mai 2007
-
28 mai 2007 à 17:05
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
29 mai 2007 à 11:12
bonjour,
j'avais une question concernant l'utilisation des tableau dynamiques pour lire un fichier dont je conais pas le nombre lignes ni de colonnes.
coment declarer et incrementer la taille et ajouter des elements...
merci
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 mai 2007 à 18:07
Salut
Ca manque de précision.
De quel type est ton tableau ? Comment l'as tu dimensionné
De quel type est ton fichier ? Texte ? Excel ?
Sous quelle forme lis-tu ce fichier ?
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
darkflyer
Messages postés39Date d'inscriptionsamedi 3 juin 2006StatutMembreDernière intervention28 mai 2007 28 mai 2007 à 18:14
en fait c un tableau à double entrée, que je declare pour l'instant comme un tableau de double, mais comme je sais pas exctement la taille qu'il doit faire o final je le surdimonsionne o debut:
et le fichier c un fichier texte de plusieurs ligne, chaque ligne contenant un certain nombre d'informations separées par des espaces, et en fait je le parcours ligne par ligne en decoupant à chaque boucle la ligne (voir le bout de code...)
Dim picreader As New StreamReader(filepic)
Dim lign AsInteger = 0
Dim colon AsInteger
DoWhile picreader.Peek() > -1
DimlineAsString
line = picreader.ReadLine() & vbNewLine
nl += 1
Dim Testlign() AsString = Split(line)
Dim LastNonEmpty AsInteger = -1
For i AsInteger = 0 To Testlign.Length - 1
If Testlign(i) <> ""Then
LastNonEmpty += 1
Testlign(LastNonEmpty) = Testlign(i)
EndIf
Next
ReDimPreserve Testlign(LastNonEmpty)
lign = lign + 1
For colon = 0 To 2
pic(lign - 1, colon) = Testlign(colon)
Next colon
Loop
picreader.Close()
bon ce ke je veu savoir c'est y a t il un moyen plus simple
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 mai 2007 à 19:49
Salut;
si tu chargeais d'un seul coup la totalité du fichier Texte et que tu l'éclatais sur vbnewline (utilisation de Split), tu obtiendrais précisément un tableau dont tu connaîtrais le nombre d'articles (Ubound) et qu'il te suffirait de copier dans le tien (auquel tu aurais donné la dimension maintenant connue)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 29 mai 2007 à 11:12
salut,
la proposition de jmfmarques semble la plus adaptée
en VB6 çà donnerait :
Function GetArrayFromFile(ByRef sPath As String) As String()
Dim FF As Integer
FF = FreeFile
' lit fichier vers buffer
Dim sBuffer As String
Open sPath For Input As #FF
sBuffer = Input(LOF(FF), #FF)
Close #FF
' coupe buffer à chaque ligne donc VBCRLF
Dim aLines() As String
aLines = Split(sBuffer, vbCrLf)
' lignes
séparée par VBTAB (à changer par ";" par exemple)
Const SEPAR As String = vbTab
Dim aRes() As String, i As Integer, j As Integer, aBuff() As String
ReDim aRes(UBound(aLines), UBound(Split(aLines(0),
SEPAR)))
For i = 0 To UBound(aLines)
If LenB(aLines(i)) Then
Erase aBuff
aBuff = Split(aLines(i), SEPAR)
For j = 0 To UBound(aBuff)
aRes(i, j) = aBuff(j)
Next j
End If
Next i
' retour
GetArrayFromFile = aRes
'
destruc
sBuffer = vbNullString
Erase aLines
Erase aBuff
Erase aRes
End Function
te reste à adapter en DotNet
un petit tour sur Codyx.Org peut-être...
NB : dans mon exemple ne sont pas traités :
*fichier inexistant
*moins de colonnes dans une ligne que dans la première ligne
*première ligne vide
*fichier vide
++
PCPT [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp