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

Delphi Discussion :

[Objet] Conseil retour de méthode


Sujet :

Delphi

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de charlene44
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 87
    Par défaut [Objet] Conseil retour de méthode
    bonjour, j'ai un petit problème avec une de mes methodes.

    mon appli sert à gérer des clients, des guitares et les achats de tous les clients (magasins ou artistes), rien de bien compliqué dans le principe (ceci représente un ap pour mon examen donc ne faites pas attention au jeu d'essai .

    pour ajouter un achat à un client, la procédure est la suivante :

    1 - séléctionnez un client ou ajoutez-en un nouveau d'abord
    2 - séléctionnez le type de guitare que ce dernier veut acheter
    3 - séléctionnez une marque parmi la liste des marques disponibles
    4 - séléctionnez un modele dans la liste des modeles disponibles de cette marque
    5 - enfin séléctionnez la couleur
    6 - le système vous affiche la guitare correspondante, avec ses caractérisitiques plus détaillées, indiquez la quantité et validez


    je suis rendu à développer le petit 3 et c'est la qu'est le problème : en fait il faut afficher une liste de marque, mes toutes différentes car plusieurs guitares de mon stock sont de la meme marque, c'est évident.
    Pour cela j'ai écrit 3 méthodes :

    1 - la méthode function donneGuitaresDunType(typ : string) : TObjectList; qui me retourne toutes les d'un type donné : donc TElectrique ou TAcoustic.

    2 - la méthode function donneNombreMarques(typ : string) : integer;
    méthode qui utilise la méthode 1 et qui me retourne le nombre de marques DIFFERENTES (méthode me servant pour mon for, pour remplir ma combobox)

    3 - function donneMarques(typ : string) : TObjectList;
    méthode utilisant elle aussi la 1 mais je ne sais pas ce qu'elle peut retourner, pour l'instant elle me retourne une liste de guitares de la classe TGuitares, avec pour chacune d'elle une marque différente, je recupererai ensuite la marque de chacune, cependant je pense qu'il serait plus judicieux qu'elle retourne les marques directement, j'ai essayé avec un
    function donneMarques(typ : string) : array[1..50] of string; mais il ne veut pas de mon array lol

    comme vous pouvez le voir c'est la méthode 3 qui plante, voici le code de mes 3 méthodes :


    function TLesGuitares.donneGuitaresDunType(typ : string) : TObjectList;
    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
     
    function TLesGuitares.donneGuitaresDunType(typ : string) : TObjectList;
       var
          i : integer;
          LesGuitaresDunType : TObjectList;
       begin
       LesGuitaresDunType := TObjectList.Create();
       // on parcours toutes les guitares
         for i:= 0 to LesGuitares.Count-1 do
         begin
       //si la guitare sur est du type fourni en parametre alors on l'ajoute a la collection
            if (TGuitares(lesGuitares.Items[i]).ClassName=typ) then
            begin
               LesGuitaresDunType.Add(lesGuitares.Items[i]);
            end;
         end;
       //on retourne la collection ne contenant que les guitares du type fourni en parametre
       result:=LesGuitaresDunType;
       end;

    function TLesGuitares.donneNombreMarques(typ : string) : integer;
    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
     
       function TLesGuitares.donneNombreMarques(typ : string) : integer;
       var
         tabMarques : array [1..50] of string;
         LesGuitaresDunType : TObjectList;
         nbMarques : integer;
         i,j : integer;
       begin
       nbMarques := 0;
     
       lesGuitaresDunType:=donneGuitaresDunType(typ);
     
         for i:= 0 to LesGuitaresDunType.Count-1 do
         begin
           j:=1;
         // je teste si la marque de la guitare n'a pas deja été prise en compte
              while (j<=nbMarques) and (tabMarques[j]<>TGuitares(LesGuitaresDunType.Items[i]).getMarque()) do
              begin
                j:=j+1;
              end;
         // si on est arrivé a la fin du tableau contenant les marques sans doublons alors on peut
         // ajouter cette marque dans le tableau et incrémenter le nombre de marque différente
              if (j>nbMarques) then
              begin
                 nbMarques:=nbMarques+1;
                 tabMarques[nbMarques]:=TGuitares(LesGuitaresDunType.Items[i]).getMarque();
     
              end;
           end;
         // on retourne le nombre de marque différentes pour un typé de guitare
       result:=nbMarques;
       end;


    function TLesGuitares.donneMarques(typ : string) : TObjectList;
    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
     
       function TLesGuitares.donneMarques(typ : string) : TObjectList;
       var
         LesMarques : TObjectList;
         LesGuitaresDunType : TObjectList;
         nbMarques : integer;
         i,j : integer;
       begin
       nbMarques := 0;
       LesMarques:=TObjectList.Create();
       lesGuitaresDunType:=donneGuitaresDunType(typ);
     
         for i:= 0 to LesGuitaresDunType.Count-1 do
         begin
           j:=1;
         // je teste si la marque de la guitare n'a pas deja été prise en compte
              while (j<=nbMarques) and (TGuitares(LesMarques.Items[j]).getMarque()<>TGuitares(LesGuitaresDunType.Items[i]).getMarque()) do
              begin
                j:=j+1;
              end;
         // si on est arrivé a la fin du tableau contenant les marques sans doublons alors on peut
         // ajouter cette marque dans le tableau et incrémenter le nombre de marque différente
              if (j>nbMarques) then
              begin
                 nbMarques:=nbMarques+1;
                 LesMarques.Add(TGuitares(LesGuitaresDunType.Items[i]));
     
              end;
           end;
         // on retourne le nombre de marque différentes pour un typé de guitare
       result:=LesMarques;
     
       end;

    ci joint mon applis en zip si vous préférez avoir une vision plus direct, vous aurez besoin de UVueAchat et Uclass

    merci d'avance de m'éclairer sur ce problème.

    ps : c'est ma premiere appli objet alors soyez indulgent please lol
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Objet corba retour
    Par stephane92400 dans le forum CORBA
    Réponses: 8
    Dernier message: 09/06/2006, 11h50
  2. reflexion et type de retour des méthodes
    Par money mark dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2006, 18h46
  3. [POO] [Classe/Objet] Conseils à un débutant en POO
    Par nicocolt dans le forum Langage
    Réponses: 9
    Dernier message: 08/03/2006, 10h06
  4. Conseils sur la méthode de développement objet métier
    Par RamDevTeam dans le forum Langage
    Réponses: 5
    Dernier message: 08/12/2005, 18h14
  5. [JACOB] Comment passer un objet par référence à une méthode
    Par zlavock dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 21/03/2005, 18h28

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