|
classe - structure - tableau dynamique |
Started by p.maunas, Jul., 27 2004 7:38 PM - 3 replies |
| |
| | | |
|
| |
Posted on July, 27 2004 - 7:38 PM |
J'ai l'erreur suivante dans une classe au 2ème appel de cclient:Initialiser() Erreur n°2304 : La dimension 1 du tableau possède 1 élément(s) et vous tentez d'accéder à l'élément 2.
il ne me redimensionne pas le tableau de structure, j'ai l'impression...
il y a certainement un loup quelque part mais où ?? Merci d'avance pour votre aide !
st_edition est une structure idTypeEdition est un entier DetailEdition est un tableau dynamique FIN
cclient est une classe IdClient est un entier CodeClient est une chaine ListeEdition est un tableau dynamique
*** Méthode de la classe *** Initialiser(LOCAL ai_idtypeEdition is a int) LOCAL li_dimension, li_nb est un entier
IF :ListeEdition = Null ALORS :ListeEdition = allouer un tableau dynamique de 1 st_edition li_dimension = 1 SINON li_dimension = Dimension(:ListeEdition)+1 Dimension(:ListeEdition,li_dimension) FIN
ls_sqlexec = "P_CLIENT_EDITION_SC @ai_idtypedition="+ NumToString(ai_idtypedition)+ "" IF NOT SQLExec(ls_sqlexec, "REQ_PRINT") THEN SQLInfo("REQ_PRINT") SQLClose("REQ_PRINT") RESULT -1 END
:ListeEdition[(li_dimension)]:idTypeEdition = ai_idtypeEdition
li_nb = 0 TANTQUE SQLFetch("REQ_PRINT") = 0 li_nb++ :ma_Edition[(li_dimension)]:DetailEdition = allouer un tableau dynamique de 1 par 3 string :ma_Edition[(li_dimension)]:DetailEdition[(li_nb),1] = NumToString(SQLGetCol("REQ_PRINT", 2)) :ma_Edition[(li_dimension)]:DetailEdition[(li_nb),2] = SQLGetCol("REQ_PRINT", 3) :ma_Edition[(li_dimension)]:DetailEdition[(li_nb),3] = SQLGetCol("REQ_PRINT", 5) FIN SQLClose("REQ_PRINT") |
| |
| |
| | | |
|
| | |
| |
Posted on July, 27 2004 - 8:04 PM |
"Patricia M." <p.maunas@procam.fr> wrote:
J'ai l'erreur suivante dans une classe au 2ème appel de cclient:Initialiser() Erreur n°2304 : La dimension 1 du tableau possède 1 élément(s) et vous tentez d'accéder à l'élément 2.
il ne me redimensionne pas le tableau de structure, j'ai l'impression...
il y a certainement un loup quelque part mais où ?? Merci d'avance pour votre aide !
st_edition est une structure idTypeEdition est un entier DetailEdition est un tableau dynamique FIN
cclient est une classe IdClient est un entier CodeClient est une chaine ListeEdition est un tableau dynamique
*** Méthode de la classe *** Initialiser(LOCAL ai_idtypeEdition is a int) LOCAL li_dimension, li_nb est un entier
IF :ListeEdition = Null ALORS :ListeEdition = allouer un tableau dynamique de 1 st_edition li_dimension = 1 SINON li_dimension = Dimension(:ListeEdition)+1 Dimension(:ListeEdition,li_dimension) FIN
ls_sqlexec = "P_CLIENT_EDITION_SC @ai_idtypedition="+ NumToString(ai_idtypedition)+ "" IF NOT SQLExec(ls_sqlexec, "REQ_PRINT") THEN SQLInfo("REQ_PRINT") SQLClose("REQ_PRINT") RESULT -1 END
:ListeEdition[(li_dimension)]:idTypeEdition = ai_idtypeEdition
li_nb = 0 TANTQUE SQLFetch("REQ_PRINT") = 0 li_nb++ :ma_Edition[(li_dimension)]:DetailEdition = allouer un tableau dynamique de 1 par 3 string :ma_Edition[(li_dimension)]:DetailEdition[(li_nb),1] = NumToString(SQLGetCol("REQ_PRINT", 2)) :ma_Edition[(li_dimension)]:DetailEdition[(li_nb),2] = SQLGetCol("REQ_PRINT", 3) :ma_Edition[(li_dimension)]:DetailEdition[(li_nb),3] = SQLGetCol("REQ_PRINT", 5) FIN SQLClose("REQ_PRINT")
Reponse : est tu bien sûr que lors du deuxième appel, le programme rentre bien dans le sinon du : >IF :ListeEdition = Null ALORS Si ce n'est pas le cas, utilise plutôt :
IF Dimension(:ListeEdition)=0 ALORS .. Dans tout les cas, tu peut suivre l'execution au débeugeur et vérifier avant l'accès au tableau que sa taille correspond. J'espère que ces quelques pistes pouront t'aider
Bon courage. |
| |
| |
| | | |
|
| | |
| |
Posted on July, 27 2004 - 8:10 PM |
il rentre bien dans le 'sinon' et exécute la ligne 'Dimension' mais si j'interroge la dimension par le débuggeur, elle n'a pas changé !!! |
| |
| |
| | | |
|
| | |
| |
Posted on July, 28 2004 - 3:43 PM |
Je ne crois pas que tu puisses affecter des structures dans un tableau. De plus, la structure st_edition est composé d'un tableau, il est interdit d'affecter un tableau dans un autre tableau. Voir l'aide en ligne sur les tableaux, section Limites. A mon avis, ton problème vient de là. A plus |
| |
| |
| | | |
|
| | | | |
| | |
|