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 :

Exception SigSegv avec TQueue.push(pointeur) [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Recette MOE/MOA
    Inscrit en
    Mai 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Recette MOE/MOA

    Informations forums :
    Inscription : Mai 2009
    Messages : 60
    Par défaut Exception SigSegv avec TQueue.push(pointeur)
    Bonjour,

    J'ai besoin de stocker dans une file de type TQueue une suite de dix entiers.
    TQueue.push demande un pointeur. J'ai donc testé
    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
    type
       PInteger = ^integer; //PInteger est un type "pointeur d'entiers"
     
    var
       Pointeur : PInteger; //Pointeur est de type PInteger
       maFile : TQueue;
       i : integer;
     
    begin
        maFile.Create;
        writeLn ( 'on enfile ... ');
        new(Pointeur); // Création du pointeur
        for i:= 1 to 10 do
            begin
                writeLn( i );
                Pointeur^ := i; // L'élément pointé reçoit la valeur de i
                maFile.push(Pointeur); // Et on fait avancer la file
            end;
        dispose(Pointeur); //Suppression du pointeur
    end.
    ... qui me fait un beau SigSegv. Là, je ne comprends pas. Puis-je avoir un début d'explication ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    bonjour

    et
    ça donne quoi?

    cordialement
    Claude

  3. #3
    Membre confirmé
    Profil pro
    Recette MOE/MOA
    Inscrit en
    Mai 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Recette MOE/MOA

    Informations forums :
    Inscription : Mai 2009
    Messages : 60
    Par défaut
    Mille excuses, j'étais certaine d'être abonnée au sujet, ce qui m'aurait permis de voir ta réponse.

    Bref !
    J'ai trouvé une solution :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    program Test;
     
    {$mode objfpc}{$H+}
     
    uses
      {$IFDEF UNIX}{$IFDEF UseCThreads}
      cthreads,
      {$ENDIF}{$ENDIF}
      Classes,
      contnrs;   // c'est le unit qui contient TQueue
     
      { you can add units after this }
     
    {$IFDEF WINDOWS}{$R Test.rc}{$ENDIF}
     
    var
       maFile : TQueue;
       i : integer;
       j : integer;
       Pointeur : ^INTEGER; //Pointeur est de type pointeur d'entiers
     
    begin
      new(Pointeur); // Création du pointeur
      maFile:=TQueue.Create; //Création de maFile en tant que TQueue
      writeLn ( 'on enfile ... ');
      for i:= 1 to 10 do
        begin
          writeLn( i );
          Pointeur^ := i; // L'élément pointé reçoit la valeur de i
          maFile.push(Pointeur); // Et on fait avancer la file
        end;
      dispose(Pointeur); //Suppression du pointeur
    end.
    Étape suivante, trouver comment réussir à sortir les entiers de la file. Car, comme de juste, un bête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      new(Pointeur);
      for i:= maFile.Count downto 1 do
        begin
          Pointeur := maFile.pop;
          j := Pointeur^;
          writeLn(j);
        end;
      dispose(Pointeur);
    m'affiche tout sauf "10, 9, 8, 7, 6, 5, 4, 3, 2, 1". (ça aurait été étonnant.)

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

Discussions similaires

  1. Problèmes avec classes et pointeurs
    Par Anas1984 dans le forum C++
    Réponses: 2
    Dernier message: 02/11/2006, 12h49
  2. Réponses: 1
    Dernier message: 29/04/2006, 18h24
  3. [SWING] Exception bizarre avec Thread
    Par Gob4 dans le forum Débuter
    Réponses: 2
    Dernier message: 13/09/2005, 21h55
  4. pb avec vectors de pointeurs
    Par e-teo dans le forum SL & STL
    Réponses: 5
    Dernier message: 27/07/2005, 14h11
  5. [Exceptions] Pb avec les exceptions
    Par joquetino dans le forum Langage
    Réponses: 11
    Dernier message: 22/09/2004, 17h08

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