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

4D Discussion :

allocation dynamique et tableaux de pointeurs


Sujet :

4D

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 29
    Points
    29
    Par défaut allocation dynamique et tableaux de pointeurs
    Bonjour,

    Je voudrais savoir s'il existe une quelconque possibilité d'allocatio dynamique dans 4D. J'ai besoin de récupérer des informations dans un fichier. Ces informations, je veux les mettre en mémoire selon une certaine structure et pour cela je pense utiliser des tableaux de pointeurs. Première question : comment récupérer la valur pointée par un élément du tableau de pointeur ?
    Deuxième question : comment faire pour mémoriser la valeur d'une variable (grâce à un pointeur) dont la valeur va être modifiée ensuite (on veut que le pointeur garde la valeur précédent) = allocation dynamique en C

    Je sais que mon exposé n'est peut être pas très clair, n'hésitez pas à me poser des questions et je clarifierai le point flou.
    Merci d'avance

  2. #2
    Membre habitué

    Inscrit en
    Juin 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 76
    Points : 131
    Points
    131
    Par défaut
    Je ne connais pas le CD et je n'ai effectivement pas tout compris à ta demande :-)

    Une première remarque issue de quelques années d'expérience : n'essaye de plier 4D à ta logique ou de lui faire reproduire le fonctionnement d'un autre langage ou environnement. Tu vas perdre du temps, tu ne seras pas satisfait du résultat et tu pesteras contre 4D. Pose le problème en teme d'objectifs et cherche les outils 4D les plus adaptés pour réaliser ces objectifs.

    Il est effectivement possible de gérer des tableaux de pointeurs :
    C_Entier(MonEntier1;MonEntier2)
    C_Date(MaDate1;MaDate2)
    C_Texte(MonTexte1;MonTexte2)
    MonTexte2:="toto"

    Tableau pointeur(MonTabPteur;5)
    MonTabPteur{1}:=->MonEntier1
    MonTabPteur{2}:=->MonEntier2
    MonTabPteur{3}:=->MonTexte1
    MonTabPteur{4}:=->MaDate1
    MonTabPteur{5}:=->MonTexte2

    ...
    MonTabPteur{2}->:=2 `MonEntier2 vaut 2
    MonTabPteur{3}->:=MonTabPteur{5}-> `MonTexte1 vaut "toto"

    MonTabPteur{4}:=->MonTexte2

    En revanche, dans 4D pas de possibilité (hors tripatouillage des BLOBs) de définir des tableaux associatifs hétérogènes, genre=:
    Tableau associatif(MonTab;3)
    MonTab["CP"]:=75001
    MonTab["Ville"]:="Paris"
    MonTab["Arrdondissement"]:=MonTabArr
    tu vois ce que je veux dire ?

    Il faut utiliser des outils complémentaires, style le plugin ObjectTools :
    http://www.aparajitaworld.com/site/p...s/ObjectTools/

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci, mais ca c'est bon je maîtrise maintenant. Et je ne souhaite pas mélanger des types différents au sein d'un même tableau.
    En fait je cherche une solution me permettant de faire de l'allocation dynamique.

    Genre on a un tableau de pointeur d'une certaine taille. Je veux pouvoir l'agrandir d'une case par exemple (grace à Tableau Pointeur(nomVar; TailleTableau(nomVar)+1), ca je sais aussi) et faire pointer ce pointeur vers un nouveau tableau de pointeur.

    Ca c'est tres facile statiquement (si je sais à l'avance que j'ai à le faire un certain nombre de fois, je crée mes tableaux de pointeurs avec des noms de variable et tout et tout et je fais pointer les cases de mon premier tableau dessus au fur et à mesure).

    Par contre si au lancement du programme je ne sais pas encore combien je vais nécessiter de tableaux (contexte dynamique donc), la je n'ai aucune solution, c'est ca "l'allocation dynamique". Car là je ne peux "générer des noms" pour mes nouveaux tableaux de pointeurs (j'ai essayé de bricoler pour créer des noms de variable à partir de chaînes de caractères, ça ne fonctionne pas), du coup je suis bloqué.

    Et je ne désire pas plier 4D a ce que je veux : c'est 4D par ses choix qui est très limitatif : proposer des pointeurs sans permettre l'allocation dynamique c'est ne pas avoir compris leur réel intérêt

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 29
    Points
    29
    Par défaut c'est bon
    Finalement j'ai réussi à trouver une solution en bidouillant.
    Apparemment ce n'est possible de compiler ainsi, mais ne interpreté cela fonctionne

    voilà le code :
    `méthode allouer
    `prend en paramètre une chaine qui correspondra au début du nom du tableau alloué
    `auquel on concatènera un entier incrémenté à chaque appel de la méthode.
    `ainsi on aura un nom unique pour chaque tableau.
    `on retourne ensuite un pointeur vers ce tableau, pour pouvoir le manipuler
    Increment:=Increment+1
    $ptr:=Pointeur vers($1+Chaine(Increment))
    Au cas ou
    : $3="pointeur"
    TABLEAU POINTEUR($ptr->;$2)
    : $3="chaine"
    TABLEAU ALPHA(60;$ptr->;$2)

    Fin de cas
    $0:=$ptr

    `=================================================

    `méthode libérer
    `détruit tous les tableaux alloués (met leur taille à zéro) dont le nom correspond à la concaténation de l'entier incrémenté
    `et de la chaine passée en paramètre

    Boucle ($i;Increment;1;-1)
    $ptr:=Pointeur vers($1+Chaine($i))
    TABLEAU POINTEUR($ptr->;0)
    Fin de boucle

    `===================================================

    Merci de votre aide

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

Discussions similaires

  1. Allocation dynamique de tableaux "complexes"
    Par Johann7751 dans le forum Débuter
    Réponses: 5
    Dernier message: 03/03/2009, 15h47
  2. Bug avec allocation dynamique de tableaux
    Par yann_m dans le forum Fortran
    Réponses: 3
    Dernier message: 17/02/2009, 11h36
  3. Réponses: 6
    Dernier message: 12/11/2008, 17h29
  4. Erreur d'allocation dynamique de tableaux
    Par lclclc dans le forum Fortran
    Réponses: 1
    Dernier message: 02/04/2008, 15h10
  5. Allocation et réallocation dynamique de tableaux
    Par petitmic dans le forum C++
    Réponses: 4
    Dernier message: 14/03/2006, 14h59

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