salut
j'ai déclaré dans mon application une variable tableau deux dimentions
tab: array[1..370,1..1000] of WideString;
mais lors de l'éxécution une message d'erreur s'affiche (stack over flow).
es qu'il y a une solution pour cette problème?
merci.
Version imprimable
salut
j'ai déclaré dans mon application une variable tableau deux dimentions
tab: array[1..370,1..1000] of WideString;
mais lors de l'éxécution une message d'erreur s'affiche (stack over flow).
es qu'il y a une solution pour cette problème?
merci.
C'est pas plutôt :
?Code:tab: array[1..370] of array[1..1000] of WideString;
Salut,
La solution serait de déclarer un tableau dynamique, pour lequel la mémoire est prise sur le tas, plutôt qu'un tableau statique qui est limité par la pile.
Bonjour,
Ou aussi créer un array[1..370] of TstringList.
comment je peux déclarer un tableau dynamique?
Code:tab: array of WideString;
Salut, j'en ai eu besoin ya pas longtemps et ca : http://pascal.developpez.com/cours/artdynarr/
est pas mal pour comprendre !
a++
Non :Citation:
Envoyé par Lung
Est correct ;)Code:
1
2 tab: array [1..370, 1..1000] of WideString;
Par contre, c'est vrai que ce serait plus facile avec des TStringList ;)
Pour finir, je dirais que les erreurs de Stack Overflow arrivent la plupart du temps lorsqu'il y a une boucle infinie ;) Donc cela ne vient pas forcément de ce tableau ;)
Je crois que les 2 syntaxe sont correctes.
mais si on fait un rapide calcul,
370 * 1000 * 4 (taille pointeur ) = 148 000 octets systématiquement alloués...
Bon je crois que la pile dépasse 64Ko de nos jours (et encore ?), mais comme dit Pedro, en cas non pas d'appels multiples, mais d'appels récursif, l'allocation est systématique et tombe vite sur un stack Overflow.
donc préférer de l'allocation dynamique avec des TStringList ou TList.
par exemple,
MaListe1: TList;
donc chaque element est un pointeur sur MaListe2
MaListe2 est un TList dont chaque element pointe sur un WideString alloué.
Je passe les moulages et les allocations à effectuer...