IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Nombre maximal d'éléments d'un tableau dynamique


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Par défaut Nombre maximal d'éléments d'un tableau dynamique
    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 ?

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    le buffer maximun de ton tableau est egale
    a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cMaxMemBuffSize = MaxInt-Sizeof(Longint)*2;
    pour connaitre le nombre maximum d’Élément, tu doit donc faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MaxElems := cMaxMemBuffSize div SizeOf(TMaStructure);

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 101
    Par défaut
    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

  4. #4
    Membre éclairé Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Par défaut
    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 .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  2. Réponses: 1
    Dernier message: 12/10/2014, 15h18
  3. [XL-2010] VBA - Suppression de l'élément d'un tableau dynamique à 2 dimensions
    Par thomas.r dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/05/2013, 05h55
  4. Suppression élément d'un tableau dynamique
    Par gigacool1994 dans le forum C++
    Réponses: 7
    Dernier message: 08/01/2013, 23h52
  5. Réponses: 1
    Dernier message: 15/01/2011, 05h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo