Salut
Quand je fais SetLength(T, N); avec T un tableau dynamique et N > 131072, j'obtiens toujours un tableau de longueur 131072, et cela pour tout les types (array of Byte, array of Integer, etc.). Comment faire pour dépasser cette limite ?
Salut
Quand je fais SetLength(T, N); avec T un tableau dynamique et N > 131072, j'obtiens toujours un tableau de longueur 131072, et cela pour tout les types (array of Byte, array of Integer, etc.). Comment faire pour dépasser cette limite ?
salut
le buffer maximun de ton tableau est egale
apour connaitre le nombre maximum d’Élément, tu doit donc faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part cMaxMemBuffSize = MaxInt-Sizeof(Longint)*2;
Code : Sélectionner tout - Visualiser dans une fenêtre à part MaxElems := cMaxMemBuffSize div SizeOf(TMaStructure);
La limite en Delphi Win32 c'est 2Go de mémoire comme le fait remarquer anapurna
Voir ce sujet, si tu veux allouer un tableau comme en Delphi 3 à base GetMem sur de faux tableau fixe (comme celui de la TList dans les vieilles version de Delphi) ou alors en PByte, PInteger ...
65536 x 2 = 131072
Interessant !
Sous XE2 Win32, ce code de remplissage puis lecture fonctionne parfaitement !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 var T: array of Integer; I: Integer; K: Int64; begin SetLength(T, 1000000); ShowMessage(IntToStr(Length(T))); K := 0; for I := Low(T) to High(T) do begin Inc(K); T[I] := K; end; K := 0; for I := Low(T) to High(T) do Inc(K, T[I]); ShowMessage(IntToStr(K)); // 1+2+..+1 000 000=1 000 000 x 1 000 001 / 2 = 500 000 500 000; end;
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Merci pour les réponses
Il semble que cela marche depuis le début. Je me suis trompé à cause du mode de débogage. En effet, si je regarde la taille du tableau T après le SetLength, il ne m'affiche que 131072 éléments
.
Partager