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 :

Questions diverses pour un projet informatique


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut Questions diverses pour un projet informatique
    Bonsoir,

    bon, en fait, j'ouvre ce topic, parce que je me suis rendue compte que j'en ai déjà ouvert pas mal, et que si je continue comme ça, je risque de spammer le forum... :p
    En fait, mon projet consiste en une simulation de la gravitation universelle (je tiens à préciser que je n'ai rien à voir avec l'autre topic créer récemment, car je ne plussoie pas du tout le post en question )
    Donc, en fait, pour réaliser mon projet, je m'aide de TPs effectués en cours, mais parfois, y'a des trucs qu'on n'a pas forcement vus... donc je risque d'avoir pas mal de questions et problèmes... :p



    Donc j'ai déjà une question:
    j'aimerais dessiner un cercle en fait. Je sais comment faire, et comment le placer dans le repère de mon TImage, mais dans un de mes anciens TP, je le déclarais comme un TImage, dans ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Procedure CCercle.Dessiner (aImage:TImage);
    var aImage:TImage;
    begin
    aImage.Canvas.Ellipse (x1,y1,x2,y2)
    end;
    Dans mon TP, cela fonctionnait très bien.

    Mais dans mon projet, je l'ai réécris sous la même forme, mais à la compilation, il y a une erreur: Lazarus m'indique "Identifier not found" à propos du TImage... J'ai donc rajouté ce que j'ai mis en rouge dans le code pour essaiyer de corriger l'erreur, mais cela ne change rien...
    Dois-je le délcarer autre part?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Timage ne serait pas plutôt un TBitmap ? ou son parent
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Timage ne serait pas plutôt un TBitmap ? ou son parent
    Je viens de tester TBitmap, et ça ne marche pas non plus... (même problème: Identifier not found). Je n'ai jamais utilisé TBitmap, même en TP, mais est-ce-que ça ne serait pas plutôt pour lorsque l'on intègre un fichier image?

  4. #4
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Bonjour

    J'ai pas tout compris mais pour créer un composant TImage avec du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      var aImage : TImage;
     
    begin
        with TImage.Create( Form1 ) do
          begin
            Canvas.Ellipse ( 10,10,20,20 );
     
          { etc... }
     
        Parent := Form1;
      end;
    .
    Why
    .
    //------------------

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par winow Voir le message
    J'ai pas tout compris mais pour créer un composant TImage avec du code:
    Ba en fait, quand je compile, Lazarus ne reconnaît pas le TImage... Comme s'il n'était pas déclaré...

  6. #6
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Il doit peut être manquer:
    A+
    .
    Why
    .
    //------------------

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    bonjour

    Un TImage est un composant visuel contenant un TPicture (non visuel) qui contient lui-même un TBitmap (non visuel). C'est généralement sur le canvas de ce dernier que tu dessine. Le TImage affiche donc le canvas du TBitmap.

    Le plus simple est d'ajouter un TImage à ta form (dans l'IDE) dans un premier temps.
    Ensuite, vu que le contenu du TImage est vide (pas de TBitmap à la création), il faut soit aller charger un fichier bitmap ou autre existant sur ton disque dur, soit créer un TBitmap et l'assigner ensuite comme contenu du contenant TImage.

    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
     
    // charger une image dans Image1(TImage)
    Image1.Picture.LoadFromFile(...ton fichier image...);
    Image1.Picture.Bitmap.LoadFromFile(...ton fichier image au format *.bmp uniquement);
     
    // créer un bitmap et l'assigner
    procedure truc...
    var bmp: TBitmap;
    begin
     
    bmp := TBitmap.Create;
    Image1.Picture.Bitmap.Assign(bmp);
    bmp.Free; // libérer/détruire la ressource bmp, on en a plus besoin
     
    end;
     
     
    // modifier taille, dessiner sur le TBitmap "enfant" du TImage etc..
    With Image1.Picture do
    begin
     
    Bitmap.SetSize(100,100);
    Bitmap.Canvas.Ellipse(0,0,100,100);
     
    end;
    En gros:
    TImage = affiche un objet graphique
    TPicture = contient un objet graphique sans l'afficher (TBitmap, TJpeg, TGraphic.. voir la doc)
    TBitmap = l'objet graphique bitmap non visuel qui a un canvas sur lequel tu dessine

    A toi de jouer

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Merci pour ton aide winow, c'était bien ça qu'il manquait

    Et merci yann.m, je n'en suis pas encore là, mais je compte également utiliser des fichiers images ^^


    J'ai une autre question:
    en fait, j'ai une classe que j'ai nommé Cplanetes dans une unité, et une autre classe Cespace, qui est un tableau de Cplanetes. Mon TCheckGroup propose une liste de 8 planètes, et si une planète est cochée, je souhaiterais que la planète soit créée, ajoutée dans une case vide du tableau de Cespace et dessinée sur mon TImage.

    Voici le code que j'ai tapé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    rocedure TForm1.CheckGroup1Click(Sender: TObject);
    Var Venus:CPlanetes;
    begin
         If CheckGroup1.Checked[0]=true then
             Begin
            Venus:=Cplanetes.Create (28,20,10,10);
            CEspace.ajouter (Venus);
     
            end;
    J'ai une erreur à la compilation pour la ligne: "CEspace.ajouter (Venus);"
    Lazarus me dit:
    "uinterface.pas(60,32) Error: Only class methods can be referred with class references".

    Aussi, ma procedure pour dessiner ma planète est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Procedure Cplanetes.Dessiner (aImage:TImage);
    Begin
         aImage.Canvas.Ellipse  (round(fcoordx-frayon), round(fcoordy-frayon), round(fcoordx+frayon), round(fcoordy+frayon));
    end;
    Mais comment l'inclure dans le code précédent, pour qu'il sache qu'il doit dessiner la planète de la case [i] de mon tableau?

    Edit: en fait, j'ai essayer dans l'événement d'un autre bouton, de faire ceci:

    For i:=0 to 8 do
    If CheckGroup1.Checked[i]=true then
    CEspace.Dessiner[i];
    Ainsi, toutes les planètes cochées seraient dessinées sur mon TImage.
    Mais le problème, c'est que normalement, ma procédure dessiner est:
    Procedure Dessiner (aImage:TImage); et il semblerait qu'il y ait un problème au niveau du [i], car du coup, ce n'est pas le bon type de variable attendu...

  9. #9
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Hello

    Si ton espace avait des étoiles, il serait peut-être moins obscur

    Pour le premier message d'erreur tu dois appeler ta procedure à partir d'une instance de classe, pas d'une classe.

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            var Espace : CEspace ;
            ...
            Espace := CEspace.Create ( ... );
            ...
            Espace.ajouter (Venus);
    Pour le reste, le paramètre de ta procédure de dessin est une Planète, pas un indice.

    Donc :

    ne peux pas marcher.

    Il faudrait écrire qqchose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i := 0 to Espace.Planetes.Count-1
      If CheckGroup1.Checked[i] then
         Planetes[i].Dessiner ;
    en vérifiant qu'il n'y a pas plus de planètes que de cases cochables...

    Cordialement,

    Tintinux
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Bonsoir,

    merci pour la réponse sur la création de l'instance de classe. Ca marche maintenant!


    Pour l'autre problème, j'ai tapé un code du même genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i := 0 to Espace.Planetes.Count-1
      If CheckGroup1.Checked[i] then
         Planetes[i].Dessiner ;
    ...sauf qu'à la compilation, il me dit "Error: Identifier not found "Planetes"" (je l'ai renommé différemment, mais là, je le mets sur l'exemple). Donc, je me suis dit que si je déclarais la variable, cela devrait être bon, donc je rajoute: "Var Planetes:CEspace" puisque c'est la classe CEspace qui contient le tableau de planètes (par contre, c'est dans l'unité planetes que j'ai écrit la procédure Dessiner". Mais même avec la déclaration, il y a un problème: "Error: No default property available", à propos de mon "Planetes" dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Planetes[i].Dessiner ;[/

  11. #11
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonsoir,

    Mille excuses, c'est plutôt :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i := 0 to Espace.Planetes.Count-1
      If CheckGroup1.Checked[i] then
        Espace.Planetes[i].Dessiner ;
    Cordialement,
    Tintinux
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    merci martinux pour la réponse... cependant, je suis toujours bloquée...!
    Déjà, il me faut déclarer le Espace, sous peine que Lazarus me signale: "Identifier not found", et une fois fait, il ne reconnaît pas non plus le tableau planetes... Et je trouve ça bizarre, parce que cela voudrait dire que je dois pratiquement redéfinir toute ma classe CEspace dans la procédure?!

    En fait, j'ai une requête parce que je bloque tellement...:
    tintinux> accepterais-tu de prendre mon code entier et de voir d'où vient le problème? (pas de le modifier ou de le continuer, juste de voir la source du problème).

    Sinon, pour plus de précision sur la partie du code où je bloque:
    Ma procédure de dessin de mes planètes est située dans mon unité "planetes" où il y a ma classe "Cplanetes", j'ai une unité "espace" où il y a ma classe "espace", qui comprend un tableau de "Cplanetes" et j'essaie actuellement d'appeler ma procédure de dessin de planètes à partir de mon unité que je nommerai "****" qui est reliée à mon interface graphique, dans une procédure liée au clic d'un bouton qui est sur mon interface graphique...

  13. #13
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonsoir,

    Tu peux mettre ton code... je ne promets rien...

    Cordialement
    Tintinux
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Bonsoir,

    en fait, quand je compile, ça marche, mais ça bug quand je clique sur un bouton de mon interface, avec un message d'erreur SIGFPE...

    Je pense que l'erreur vient en fait de mon tableau (mais je ne sais pas si c'est à l'ajout, où au moment de l'appelation...):

    Voici le code de ma procédure d'ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TabEspace[fNbplanetes]:=aplanetes;
    fNbplanetes:=fNbplanetes+1;
    Et voilà comme je l'appelle, à l'aide de mon TCheckGroup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         If CheckGroup1.Checked[0]=true then
            Begin
                 Mercure:=Cplanetes.Create (28,5,10,10);
                 E.Ajouter (Mercure);
            end;
    Le TabEspace est situé dans mon unité Espace, et est un tableau de Planètes, classe de l'unité Planètes...
    J'ai pourtant l'impression que le code est juste...

  15. #15
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonjour,

    Dans ta classe Cespace, on voit que le tableau de planètes commence à 1.
    L'indice fNbplanetes devrait être initialisé dans le constructeur.
    Il n'a surement pas une valeur acceptable au moment où tu crées une planète.

    C'est vrai que les erreurs SIGXXX ne sont pas très explicites, mais tu peux exécuter ton programme en pas à pas, si tu ne sais pas où il se plante.

    Et puis, utilise plutôt une TList (dynamique) qu'un tableau et des variables (bornés).

    Bon courage

    Tintinux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Type CEspace=Class
                 Protected
                       fNbplanetes:integer;
                       TabEspace: array [1..Nbplanetes] of Cplanetes;
                 Public
                       Constructor Create;
                       Destructor Destroy;
                       Procedure Ajouter (aPlanetes:Cplanetes);
                       Procedure Dessiner (aImage:TImage);
                       Procedure DessinerPlanete (i:integer; aImage:TImage);  
                 End;
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    j'ai initialité fNbPlanetes dans mon constructeur, mais ça ne marche toujours pas... (même erreur).

    De même, quand j'essaie d'exécuter pas à pas, un message d'erreur s'affiche: "Project raised exception class 'External: SIGTRAP'."

  17. #17
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    A quelle valeur l'initialises tu ?
    Quelle valeur a-t-il avant chaque création de Planète ?
    Est-ce à une valeur comprise entre 1 et Nbplanetes ?

    Si tu n'arrives pas à utiliser mode debug, tu peux mettre des messages avec ShowMessage, ou des Assert.

    A+
    Tintinux
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    Hello

    pourquoi commence-tu ton array de planètes à 1 ? normalement le premier item a l'id 0.

    ton array est-il de longueur fixe ou variable ?
    je vois dans le code que tu incrémente le nb de planètes dans une variable, donc peut-être que tu agrandis le tableau en fonction.

    Si c'est le cas tu dois agrandir ton array avec des setLength à chaque fois.

    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
     
    ...
    var 
    nb_planetes: integer;
    array_planetes: array of objet_planete;
    ...
     
    procedure create...
    begin
     
    nb_planetes := 0;
    SetLength(array_planetes,0);
     
    end;
     
    procedure ajouter...
    begin
     
    nb_planetes += 1;// var nb planetes
    SetLength(array_planetes,nb_planetes); // redimensionner longueur tableau
    array_planetes[0] := objet_planete.Create // creation de l'objet planete 
    // attention au décalage, le premier item du tableau est 0, le deuxième sera 1, etc... 
    // Tu peux aussi utiliser array_planetes[nb_planetes-1] := ... pour corriger le décalage.
     
    end;
    Il ne faut pas oublier que ton tableau de planetes ne contient pas les objets planetes mais uniquement des pointeurs qui pointent vers les objets planètes créés.

    donc il te faut d'une part une classe objet_planete définie et de l'autre les idées très claires sur la longueur de ton tableau et si, oui ou non, un objet planete a bien été créé pour chaque item tu tableau.


    Dans le cas d'un tableau à longueur fixe (tu connaît le nb de planètes) le plus simple est des créer toutes tes planètes au démarrage dans une boucle

    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
     
     
    ...
    var 
    array_planetes: array[0..9] of objet_planete;
    ...
     
    procedure create...
    var i: integer;
    begin
     
    for i := 0 to 9 do
    begin
     
    array_planetes[i] := objet_planete.Create;
     
     
    end;
     
    end;

    Au final, en supposant que objet_planete ait une propriété Checked (boolean) et que tu veuille afficher celles cochées (Checked = True) une simple boucle te suffit:

    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
     
     
    procedure dessiner...
    var i,l: integer;
    begin
     
    l := Length(array_planetes) - 1; // si tu as besoin de connaitre le nombre d'items du tableau
    for i := 0 to l do
    begin
     
    if array_planetes[i].Checked then
    begin
    ...
    // dessiner cette planete car Checked = true
    ...
    end;
     
    end;
     
    end;
    A adapter pour ton cas, mais attention, les erreurs avec les array ne pardonnent pas.

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    ps:

    A mon avis ceci n'est pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    fNbplanetes:integer;
    TabEspace: array [1..Nbplanetes] of Cplanetes;

    1: Nbplanetes ? -> fNbplanetes
    2: Comment la longueur de l'array TabEspace pourrait-elle être définie vue que fNbplanetes est encore inconnu ?
    3: le premier item est 0 et non pas 1.

    mieux vaudrait
    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
     
     
    TabEspace: array of Cplanetes; 
     
     
    // définir 
    constructor create...
    begin
     
    fNbplanetes := 0;
    SetLength(TabEspace,0);
     
    end;
     
    // ajouter 1 planete
    procedure ajouter...
    begin
     
    fNbplanetes += 1;
    SetLength(TabEspace,fNbplanetes);
    TabEspace[fNbplanetes-1] := CPlanetes.Create;
     
     
    end;

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Salut,

    je vais essayer tes codes

    En fait, l'idée sur mon tableau était qu'il ait une taille fixe qui est égal au maximum de planète que l'on peut ajouter, mais selon les case cochées, il n'est pas forcément rempli... et si on rajoute par exemple 3 planètes, quelles qu'elles soient, et bien elles seront rajoutées dans les 3 premières cases du tableau, donc une planète n'est pas définie pour être dans une case précise du tableau...

Discussions similaires

  1. Ajax et php pour un projet informatique
    Par aspiker dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2012, 13h51
  2. Réponses: 8
    Dernier message: 27/12/2009, 00h38
  3. Questions diverses pour stage
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/01/2009, 13h47
  4. Quelques questions pour petit projet
    Par lapos dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 21/12/2007, 17h22
  5. [MySQL] Pour un projet php/mysql : questions sur le langage et l'environnement
    Par 3wicha dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/07/2007, 18h21

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