jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
2 avril 2007 à 11:58
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
2 avril 2007 à 16:19
Salut à tous.
(pas très important mais bon): W2k SP4=> VB6 SP6
après avoir cherché un peu, je n'ai pas trouvé mon bonheur.
J'aimerais savoir si il existe une API permettant d'ajouter le contenu d'un tableau à un autre tableau
Dans mon exemple suivant que je sais incorrect
Dim Tbl1() As Byte
Dim Tbl2() As Byte
Tbl1 = Tbl1 + Tbl2, ----
[code.aspx?ID=41455 By Renfield]
Est il possible d'obtenir ce "résultat" simplement (avec une API ou autre). faire en sorte que le Tbl1 garde sont contenu et y ajoute à la fin le contenu de Tbl2. et ce sans avoir à passer par de Redim Preserve ou Ubound....
J'ai vu du CopyMermory mais je ne pense que cela reponde à mes besoins.
Si quelqu'un pouvait me mettre sur le chemin, ca serait cool.
D'avance merci.
@+: Ju£i?n En attendant, Google is myfriend
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 avril 2007 à 12:48
Euh...
Bonjour Julien...
Les concaténations de tableaux ?
Pourquoi pas ? (avec une boucle, forcément) ...
Mais voyons donc : concaténation "horizontale", "verticale", ou en "ajout d'éléments" sans modifier le nombre de colonnes" ?
car ce serait bien évidemment différent ...
Je m'explique par 2 exemples :
1)
tabl1 d'une colonne
tabl2 d'une colonne
tabltotal de 2 colonnes
et
2)
tabl1 d'une colonne et 3 éléments
tabl2 d'une colonne et 5 éléments
tabltotal d'une colonne et 8 éléments
ls cas 1) et 2) ne seraient évidemment pas les mêmes ...
quelle est donc la "concaténation" qui t'intéresse, de ces 2 types ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 avril 2007 à 13:30
Re all[auteurdetail.aspx?ID= 615490 ] Merci pour les réponses.
> [auteurdetail.aspx?ID=333139 casy]
,[auteurdetail.aspx?ID =2359 Renfield] je vais donc essayer de mettre mieux en pratique le CopyMemory.
>,[auteurdetail.aspx?ID=615490 jmfmarques] .celui qui m'intéresse est le cas 2) (sauf que ce n'est pas un troisième tableau mais le premier qui s'agrandit avec les éléments du second.
Aller je vais essayer cela.
@+: Ju£i?n Pensez: Réponse acceptée
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 avril 2007 à 15:21
Re,
Bon alors j'ai fait ceci qui semble répondre à mes attentes. Merci donc à [auteurdetail.aspx?ID= 333139 casy] , et à [auteurdetail.aspx?ID=2359 Renfield] .
Dim IndiceDepart As Integer
On Error Resume Next
If UBound(My_TblBytes) = 0 Then
IndiceDepart = 0
On Error GoTo 0
Else
IndiceDepart = UBound(My_TblBytes) + 1
End If
ReDim Preserve My_TblBytes(IndiceDepart + UBound(BRecu))
Call CopyMemory(My_TblBytes(IndiceDepart), BRecu(0), UBound(BRecu) + 1)
, ----
[code.aspx?ID=41455 By Renfield]
avec My_TblBytes, et BRecu des tableaux de Byte
Dernière petite question.
Ma "gestion" d'erreur n'est pas très "propre" à mon goût. y aurait il une meilleure facon de faire (c'est pour le cas où le tableau n'ai pas encore été dimensionné)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 2 avril 2007 à 15:52
Pour ta gestion d'erreur, dans le cas ou le tableau n'est pas dimentionné, tu traite l'erreur puis tu annule la gestion d'erreur.
Par contre dans le cas ou le tableau est déjà dimentionné, ta gestion d'erreur est active jusqu'à la fin de la procedure.
C'est pas très logique. Soit tu la laisse active jusqu'à la fin dans tous les cas, soit tu l'arrete àprès le test dans tous les cas. A ce moment là déplacer le On Error Goto après le End If
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 avril 2007 à 16:19
Casy a raison..
J'opteraio pour ne pas rester "englué" avec un "on error resume next" et choisirais un goto, mais très "rapproché" popur faciliter les lectures suivantes ..
Genre :
Private Sub Command1_Click()
Dim toto() ' pas dimensionné, donc
On Error GoTo 1
ret = UBound(toto)
GoTo 2
1:
MsgBox "pas dimensionné ! " ' à supprimer dans ton code, bien sur
ReDim toto(0) ' on le dimensionne donc à 0
2:
MsgBox UBound(toto) ' à supprimer dans ton code, bien sur
' tu continues
End Sub