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
Partager