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

Langage Delphi Discussion :

allocation


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Par défaut allocation
    bonjour, je desir alloué une structure dynamiquement et ca ne fonctionne pas?
    quelqu'un peut m'aider ??


    code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type
     
      RParaMetier = record
        ClesMetier     :TStringList;
        ValeursMetier  :TStringList ;
        toto : string;
      end;
     
      PParaMetier = ^RParaMetier;
     
      TabParamMetier = array of  PParaMetier;
    en variables globales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabOM : TabParamMetier;

    puis dans le code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      for inumAt := 0 to 2 do
        New(TabOM[inumAt]);

    ca compil mais plante a l'execution sur le New(TabOM[inumAt]);

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for iNumAt := 0 to 2 do
      New(TabOM[inumAt]);
    Ecrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetLength(TabOM,2);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Par défaut merci mais
    merci mais pour l'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabOM[0]^.toto:= 'texte';
    ne passe pas du tout.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut Re: merci mais
    Citation Envoyé par muquet
    merci mais pour l'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabOM[0]^.toto:= 'texte';
    ne passe pas du tout.
    Pourquoi ne pas ecrire directement sans le ^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TabOM[0].toto := 'texte';
    Puis je comprend pas pourquoi tu passes par un pointeur au niveau de ta structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    type
     
      RParaMetier = record
        ClesMetier     :TStringList;
        ValeursMetier  :TStringList ;
        toto : string;
      end;
     
      PParaMetier = ^RParaMetier;
     
      TabParamMetier = array of  PParaMetier;
    ca s'ecrit aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    type
     
      RParaMetier = record
        ClesMetier     :TStringList;
        ValeursMetier  :TStringList ;
        toto : string;
      end;
     
       TabParamMetier = array of  RParaMetier ;
    a mon avis c'est exactement la même chose
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Par défaut ok
    ok mais comment peut on rendre la taille de

    TabParamMetier = array of PParaMetier dynamique ?

    pour etre - gourmant en memoire ?

    merci

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Le fait d'avoir ecrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TabParamMetier = array of  RParaMetier ;
    et deja dynamique, la tu as définit un tableau dynamique de RParametier.

    Après si tu veux rajouter un élément au tableau, il faut que tu utilises SetLength pour augmenter ou reduire la taille du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetLength(TabOM,high(TabOm) + 1); // ajoute 1 élément au tableau
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Par défaut taille ?
    mais en fait, quand on ecrit :

    qu'est ce qui se passe en memoire ? il alloue quelle taille de tableau :

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    rien (ou le minimum pour la défiition), l'allocation se fait avec le setlength
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. Allocation dynamique de structures
    Par fr_knoxville dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 21h59
  2. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 22h31
  3. Réponses: 4
    Dernier message: 03/12/2002, 16h47
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Allocation de ressources
    Par Eric Pasquier dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 08/10/2002, 09h19

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