[VB6] can't assign to Array

Résolu
tof008
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
- 13 déc. 2006 à 15:43
tof008
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
- 13 déc. 2006 à 16:45
Bonjour à tous!
Petit problème : lorsque je lance mon appli, je recois un message d'erreur me disant "can't assign to array" au niveau de la ligne en rouge : je ne sais pas ce que ca peut etre malgré une recherche sur le forum... J'espere que quelqu'un aura le temps de jeter un petit coup d'oeil et de me proposer une solution!
Merci d'avance

 Private Sub Timer1_Timer() 'cette ligne est surlignée en jaune'====================================================================================
    'variable
    '====================================================================================
    Dim info As String
    Dim tabe() As String
    Dim taille As Integer
    Dim i As Integer
    Set trans = New Transfert
    'on desactive le timer
    Timer1.Enabled = False
   
    Me.MousePointer = 11
    '====================================================================================
    'selection de l utilisateur pour le fichier log
    '====================================================================================
    KL.set_Log (connect.myEmail)
   
    '====================================================================================
    'connexion a la base    '    info trans.connect(connect.myEmail, connect.myPass, connect.myServer)
    'changement
    'info = KXG.Post("KO.WSO_Login", connect.myEmail, connect.myPass, connect.myServer)
    'si la connexion echoue
    If info <> "Connected" Then
        Me.MousePointer = 0
        Exit Sub
    End If
   
    '====================================================================================
    'reception de la liste des marchands    '    tabe trans.Post("KO.WSO_GetListMerchant")
    'changement
    'tabe = KXG.Post("KO.WSO_GetListMerchant")
   
    nbMerchant = UBound(tabe)

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 

6 réponses

cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
13 déc. 2006 à 15:59
Et quel est le prototype de la fonction Post ??

tu as surrement déclarée une string comme valeur de retour, essaye avec un variant à la place.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
13 déc. 2006 à 16:41
Parce que ta fonction ne te renvoyer pas un tableau, elle te renvoyer une seule chaine de caractère.

Pour pouvoir renvoyer un tableau en fait il faut renvoyer en fait un variant. Le tableau n'est pas une variable complexe. En fait lorsque tu passe un tableau en argument, tu ne passe pas une variable come pour les variables simples mais tu passe un pointeur sur la zone mémoire ou est stocké le tableau.

C'set pour cela que l'on ne peut pas renvoyer de tableau dans une fonction car au moment de l'appel de la fonction, la taille du tableau de retour n'est pas connue et donc le tableau ne peut pas etre créer en memoire.

Par contre en variant, tu cree un structure qui sert à décrire le type de variable. Cette structure peut etre créer au moment de l'appel. Au retour de la fonction VB se charge de faire la conversion entre la structure variant représentant un tableau de string vers le tableau de string que tu as déclaré, juste avant de pouvoir détruire le tableau de la fonction.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
13 déc. 2006 à 15:49
1er point : Que renvoie trans.Post ??????

2eme point : tabe est un tableau de chaines de caractères, il faut que tu indique quel item du tableau tu veux remplir avec le retour de trans.Post

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
tof008
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
33
13 déc. 2006 à 15:54
<li>

1er point : Que renvoie trans.Post ??????</li>


Justement trans.Post me renvoie un tableau :

Case "KO.WSO_GetListMerchant":
    Dim tabe() As String
    tabe = KO.WSO_GetListMerchant(session)
    'test si la liste en vide
    If InStr(tabe(0), "A_NbElement=""0""") <> 0 Then
        tabe(0) = "0"
        Post = tabe
        Exit Function
    End If
        Post = tabe
End Select

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tof008
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
33
13 déc. 2006 à 16:32
exactement ca Casy! Merci beaucoup. J'ai changé ma fonction en Variant au lieu de String et ca marche nickel! Tu peux me dire pourquoi ca ne marchait pas?

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 
0
tof008
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
33
13 déc. 2006 à 16:45
Ben je vois pas comment tu pouvait être plus clair! Encore merci et double réponse acceptée pour toi!

         (Si la réponse vous convient, appuyez sur réponse acceptée...).

                           Noubliez pas de lire le REGLEMENT 
0