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

Lazarus Pascal Discussion :

Problème de pointeur et d'ajout de données [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut Problème de pointeur et d'ajout de données
    Bonjour à tous.
    Voici le souci : J'ai un fichier de coordonnées dont il faut que je récupère les données. Les données sont de la forme :
    3.9983 -9.3670 1.1698 C 0 0 0 0 0 0 0 0 0
    Pour les récuperer, j'utilise comme tout le monde readln(FFile,Buffer);
    Comme il y a plusieurs espaces, j'applique DelSpace1(Buffer) puis je découpe la chaine comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FLine := TStringList.Create();
    FLine.Clear;
    FLine.Text := StringReplace(Buffer, ' ', #13#10, [rfReplaceAll]);
    p^.Add_Atome(FLine[4], Ivar1);
    FLine contient alors un tableau contenant les diverses informations de la ligne.
    Maintenant, j'utilise une liste chainée de classe "Molecules" et j'essaie d'ajouter les atomes ainsi que leurs coordonnées. Le probleme c'est que ca me fait "Invalid pointer operation."
    Voici l'interface pour molécule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ptrMole = ^Molecules;
     Molecules=Class(TObject)              // Création de Molecule dérivant de TObject
        private
            Atome : ptrAtoms;                 // Liste chainé d'atomes
            Nom : String;                     // Nom de la molécule
            NbAtom : integer;
            NbBond : integer;
        public
            Suivant : ptrMole;
            constructor create();
            destructor destroy(); override;
            procedure Add_Atome( At_Nom:String ; At_Num:integer);
         end;
    Le code de la fonction qui me pose probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure Molecules.Add_Atome (At_Nom:String ; At_Num:integer);
       var
          p: ptrAtoms;
       begin
          new(p);
          p^.Nom := At_Nom;
          p^.Num := At_Num;
          p^.Suivant := Atome;
          Atome := p;
       end;
    Ce que j'arrive pas à comprendre, c'est que pour commencer la liste chainée, je crée 1 "faux atome" : p^.Add_Atome('', -1); Et ca marche très bien !!! Mais dès que je remplace '' par FLine[4] (cf plus haut), il me sort le "invalid pointer operation". Je commence en Free Pascal et j'avoue je bug un peu pour le coup. Si vous pouviez m'aider ca serait sympa merci.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 53
    Points : 24
    Points
    24
    Par défaut Trouvé !!
    Bon bah pour une raison qui m'est completement inconnue, j'ai testé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    FLine := TStringList.Create();
    FLine.Clear;
    FLine.Text := StringReplace(Buffer, ' ', #13#10, [rfReplaceAll]);
    Buffer := FLine[4];
    p^.Add_Atome(Buffer, Ivar1);
    Et ca marche. 4h à s'arracher la tete pour rien. J'espère que ca pourra éventuellement vous aider par la suite !!!

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 66

    Informations forums :
    Inscription : Septembre 2009
    Messages : 68
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    J'ai rencontré récemment un problème voisin, sans pointeurs.

    C'était aussi en essayant de mettre une chaîne indicée à la place d'un paramètre formel string. En passant par une variable char ou string intermédiaire, ça marchait.

    Mais je n'arrive pas à le reproduire sur un exemple simple... Il doit y avoir des circonstances particulières...

    C'est à mon avis un petit bogue du compilateur qu'il faudrait remonter si on arrive à le cerner plus précisemment.

    A+

    Martinus

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    tu devrais enregistrer les données en brut.

    exemple fournis en pj, voir le zip.

    classe TMolecule 100% fonctionnelle.


    bon par contre, necessite quelques amélioration, les fichiers MOL faisant 5Mo minimum ... huhuhu
    peut être voir pour les compresser avec ZLib.
    Fichiers attachés Fichiers attachés
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

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

Discussions similaires

  1. Problème de doublons Ajout de données Formulaire
    Par vivicente dans le forum VBA Access
    Réponses: 10
    Dernier message: 11/07/2008, 14h38
  2. probléme d'ajout des données
    Par biologiste dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/06/2008, 02h09
  3. problème ajout de données
    Par BountyHunter dans le forum IHM
    Réponses: 2
    Dernier message: 01/05/2008, 09h22
  4. [MySQL] Problème d'ajout de données
    Par hoRus` dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/08/2007, 08h02
  5. problème liste déroulante et ajout de données
    Par aba_tarn dans le forum Modélisation
    Réponses: 1
    Dernier message: 26/07/2007, 18h40

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