Larwin
Messages postés44Date d'inscriptiondimanche 25 novembre 2001StatutMembreDernière intervention24 juillet 2010
-
2 nov. 2007 à 01:12
Larwin
Messages postés44Date d'inscriptiondimanche 25 novembre 2001StatutMembreDernière intervention24 juillet 2010
-
2 nov. 2007 à 17:06
bonjour tout le monde
juste une petite question, tout ca ne me semble pas bien compliqué mais je ne trouve pas une fonction dans le framework qui le fasse de maniere automatique....
j'explique le truc.
j'ai un tableau a deux dimensions de ce type la
montab(0,0) = "je"
montab(0,1) = "n'y"
montab(0,2) = "arrive"
montab(0,3) = "pas..."
j'aimerai savoir s'il y'a une fonction du style array.qqch ou convert.qqch pour récupérer "une seul dimension du tableau" pour avoir un truc final du genre
j'aimerais faire ca sans do loop ou encore for next car le tableau a deux dimensions peut etre parfois assez volumineux... y'a bien un truc qui doit exister non ?
Larwin
Messages postés44Date d'inscriptiondimanche 25 novembre 2001StatutMembreDernière intervention24 juillet 2010 2 nov. 2007 à 17:06
Merci tout le monde... je n'ai pas trouvé non plus de solution dans le framework, alors voila je fais une boucle... je vous met le code ici, merci tout de meme !
Public
Shared
Function
GetUnidimensionnalStringArray(
ByVal
GetRowsArray(,)
As
Object
)
As
String
()
Dim
Counter
As
Integer
= 0
Dim
ReturnObjectArray(GetRowsArray.LongLength - 1)
As
String
For
y
As
Long
= 0
To
GetRowsArray.GetUpperBound(1)
For
x
As
Long
= 0
To
GetRowsArray.GetUpperBound(0) ReturnObjectArray(Counter) = GetRowsArray(x, y)
mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 2 nov. 2007 à 11:55
Je crois que sa question était justement de savoir si c'était faisable avec une commande, sans boucle :)
(Peut être plus rapide s'il y a une commande faite pour, je ne sais pas)
Mais j'ai cherché un peu sur le net, pas trouvé de telle commande, donc la boucle semble s'imposer en effet :)
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 2 nov. 2007 à 13:33
J'ai essaie de voir l'intérêt de faire ça sans boucle, "mais je n'y arrive pas" ;-)
Un redim preserve montab(0 to 3) ?
Mais même si ça marchait, le nom de variable ne serait pas modifié.
Désolé, pas d'idée.
La haine aveugle n'est pas sourde
Vous n’avez pas trouvé la réponse que vous recherchez ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 2 nov. 2007 à 13:36
tu ne peux pas changer via redim le nombre de colonnes, ni le nombre de dimension...
je sais plus comment les données sont rangées en mémoire sous VB, ca doit etre possible de faire un simple CopyMemory pour récupérer en contigu toutes les données d'une 'ligne'... a voir
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 2 nov. 2007 à 15:21
salut,
A noter que , si c' est pas un oubli de ta part,
ton tableau , tel que tu le décris, est à quatre dimensions.
@Renfield
A noter aussi que le CopyMemory lui évitera seulement de faire
une imbrication pour les colonnes.
Voici (à peu près tel quel) un bout de code que j' ai déniché.
rmin = CInt(txtMinRow.Text) 'la plus petie valeur, je crois
rmax = CInt(txtMaxRow.Text) 'la plus grande valeur , je crois
bytes_per_col = rmax - rmin + 1
idx = 0
For c = cmin To cmax
CopyMemory mondiftab(idx),montab(rmin, c), _
bytes_per_col
idx = idx + bytes_per_col
Next c
Désolé de vous livrer ça comme tel et sans plus d' explication.
C' est pas dans mes habitudes de faire des Copier/Coller.