[VB6] can't assign to Array [Résolu]

Signaler
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
-
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
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 #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
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 #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
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 #
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
27
<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 
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
27
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 
Messages postés
695
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
5 janvier 2010
27
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