Créer un tableau avec une valeur répété [Résolu]

Signaler
Messages postés
178
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
14 août 2008
-
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011
-
Bonjour à tous.

Je me pose une question : Est-il possible de créer un tableau (Variant) avec une valeur donné à répéter dans chaque cases ?
Par exemple, je veux créer un tableau de 10 lignes contenant le nombre 15:

myVariant = Array(15, 15, 15, 15, 15, _
                              15, 15, 15, 15, 15)

Est ce possible de faire ca plus simplement ? En donnant par exemple la taille du tableau et la valeur à insérer dans chaque cellules ?
( Sans créer une fonction biensur, sinon je créer une fonction pour le faire avec une boucle. )

ZedMaTriX

7 réponses

Messages postés
178
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
14 août 2008

Heu... ok.

Donc Pour faire simple: Je parlais de créer une fonction car je vais coller des petites boucles comme celle de Gillardg un peu partout dans mon code. Je vais plustot créer une fonction qui va contenir cette boucle. Bref.

Donc on va conclure que VB ne contient pas de fonction propre ( j'ai trouver avec VarPtr un moyen de le faire mais bon.. est-ce plus rapide qu'une boucle ? ) pour remplir un tableau avec une valeur.

Merci à vous.

ZedMaTriX
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
dim tableau(50) as integer ' moi j'ai mis integer mais ....
for a = 0 to 49
tableau(a)=15
next a

Bonjour chez vous !
Messages postés
178
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
14 août 2008

Ouais, exactement ce que je voulais éviter.

Donc pour toi, a par créer une fonction, il n'y a pas de fonction dans VB pour créer un tableau avec une valeur prédéfini ?

ZedMaTriX
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
1 j'ai pas créé de fonction
2 mon code est clair et simple ET en plus ça réponds à la question posée


End Sub








Bonjour chez vous !
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

Pour Gillardg, créé une fonction :

Public function ...()

end function

Donc il n'en a pas créé. Mais oui, tu es obliger de précéder par boucle. Il n'y a pas d'autres options. Ou sinon, comme tu l'as fais plus haut,

myVariant = Array(15, 15, 15, 15, 15, _
                              15, 15, 15, 15, 15)

Mais ça peut ¸etre long si on a un array de 300 espaces...

Walla
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

Bon, je viens de chercher ce que faisait VarPtr ...

http://support.microsoft.com/kb/199824

Il est rare qu'un programmeur Visual Basic doive obtenir des
informations de bas niveau sur une variable, telles que son adresse
mémoire. Toutefois, certaines fonctions API requièrent ce type
d'informations. Cet article décrit les fonctions Visual Basic qui
peuvent aider un programmeur Visual Basic à obtenir ces informations :


VarPtr - Renvoie l'adresse d'une variable.


VarPtrArray - Renvoie l'adresse d'un tableau.


StrPtr - Renvoie l'adresse du tampon de chaîne UNICODE.


VarPtrStringArray - Renvoie l'adresse d'un tableau de chaînes.


ObjPtr - Renvoie le pointeur vers l'interface référencée par une variable objet.

VarPtr
Dans
Visual Basic, les tableaux sont stockés en tant que SAFEARRAY. Pour
obtenir l'adresse de la structure SAFEARRAY, vous devez utiliser la
fonction VarPtrArray. Les exemples ci-dessous illustrent les
déclarations appropriées dans Visual Basic 5.0 et dans Visual Basic
6.0, respectivement :

Declare Function VarPtrArray Lib "msvbvm50.dll" Alias "VarPtr" _

(Var() as Any) As Long

Declare Function VarPtrArray Lib "msvbvm50.dll" Alias "VarPtr" _
(Var() as Any) As Long


Pour obtenir l'adresse d'un SAFEARRAY, passez le nom du SAFEARRAY (parenthèses incluses) à la fonction VarPtrArray :

Dim lngSafeArrayAddress as Long

Dim lngArrayOfLongs(9) as Long

Ça cré des tableaux dynamique remplit de x fois la meme variable? Je ne suis pas certain du tout! Si oui, montre moi comment tu as fait. Ça pourrait toujours m'être utile!!!

lngSafeArrayAddress = VarPtrArray(lngArrayOfLongs())

Restrictions
: La fonction VarPtrArray ne peut pas être utilisée pour obtenir
l'adresse d'un tableau de chaînes, parce que Visual Basic utilise la
conversion UNICODE/ANSI pour les chaînes. Si vous utilisez VarPtrArray
sur un tableau de chaînes, vous obtiendrez l'adresse d'une copie ANSI
temporaire du tableau. Pour plus d'informations, consultez les
informations relatives à la fonction VarPtrStringArray.
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

Le premier post affichait de facon étrange la fin... Voici le repost

http://support.microsoft.com/kb/199824

Il
est rare qu'un programmeur Visual Basic doive obtenir des informations
de bas niveau sur une variable, telles que son adresse mémoire.
Toutefois, certaines fonctions API requièrent ce type d'informations.
Cet article décrit les fonctions Visual Basic qui peuvent aider un
programmeur Visual Basic à obtenir ces informations :

VarPtr - Renvoie l'adresse d'une variable.

VarPtrArray - Renvoie l'adresse d'un tableau.

StrPtr - Renvoie l'adresse du tampon de chaîne UNICODE.

VarPtrStringArray - Renvoie l'adresse d'un tableau de chaînes.

ObjPtr - Renvoie le pointeur vers l'interface référencée par une variable objet.

VarPtr
Dans
Visual Basic, les tableaux sont stockés en tant que SAFEARRAY. Pour
obtenir l'adresse de la structure SAFEARRAY, vous devez utiliser la
fonction VarPtrArray. Les exemples ci-dessous illustrent les
déclarations appropriées dans Visual Basic 5.0 et dans Visual Basic
6.0, respectivement :

Declare Function VarPtrArray Lib "msvbvm50.dll" Alias "VarPtr" _

(Var() as Any) As Long

Declare Function VarPtrArray Lib "msvbvm50.dll" Alias "VarPtr" _
(Var() as Any) As Long

Pour obtenir l'adresse d'un SAFEARRAY, passez le nom du SAFEARRAY (parenthèses incluses) à la fonction VarPtrArray :

Dim lngSafeArrayAddress as Long

Dim lngArrayOfLongs(9) as Long

lngSafeArrayAddress = VarPtrArray(lngArrayOfLongs())

Restrictions
: La fonction VarPtrArray ne peut pas être utilisée pour obtenir
l'adresse d'un tableau de chaînes, parce que Visual Basic utilise la
conversion UNICODE/ANSI pour les chaînes. Si vous utilisez VarPtrArray
sur un tableau de chaînes, vous obtiendrez l'adresse d'une copie ANSI
temporaire du tableau. Pour plus d'informations, consultez les
informations relatives à la fonction VarPtrStringArray.

Ça cré des tableaux dynamique remplit de x fois la
meme variable? Je ne suis pas certain du tout! Si oui,
 montre moi comment tu as fait. Ça pourrait toujours
 m'être utile!!!