Dancsi27
Messages postés7Date d'inscriptionsamedi 6 décembre 2008StatutMembreDernière intervention20 mars 2009
-
18 mars 2009 à 21:21
Yorundr
Messages postés289Date d'inscriptionmardi 31 octobre 2006StatutMembreDernière intervention11 juin 2012
-
30 déc. 2009 à 17:37
Allo tout le monde,
j'ai une petite lab à faire pour lundi prochaine, j'ai déjà commencé à placer les éléments nécessaires sur la fiche et à déclarer les types énumérés et les types ensembles dans le code source.
Le programme est composé de checkboxes (il y en a 11, qui sont nommés avec des loisirs différents (musique, hockey, tennis, voyage, baseball, lecture, cinéma, théâtre, escalade, golf et football) qui se retrouvent dans un groupbox. Il y a une mémo, 1 edit box et 3 buttons (Quitter, Afficher l'ensemble les loisirs choisis et compter l'ensemble des loisirs choisis).
L'usager peux cocher 1 ou plusieurs checkbox et quand il appuie sur le button Afficher, la mémo affiche (avec un string) les loisirs choisis dans l'ordre ordonné (ex: si musique, cinéma et golf sont choisis, alors la mémo affiche les 3 loisirs dans cette ordre). Le button Compter doit afficher dans le edit box le nombre de loisirs choisis (c'est évident ), donc dans ce cas, 3.
J'ai trois 3 types énumérés/ensembles à déclarer:
TLoisirs = ( l'énumération des 11 loisirs);
TEnsLoisirs = set of TLoisir;
et TSTR255 = string[255];
Pour faire le lab correctement (en utilisant ces types), je dois utiliser 2 fonctions et 2 procédures
Et c'est ici que je suis bloqué un peu, je ne sais pas comment débuter, mais je px donner les consignes, si qq'un peut me donner un ptit coup de main.
La fonction Construire : TEnsLoisirs permet de retourner un ensemble qui contient les loisirs choisis par l'usager.
La fonction ConvertLoisirs(ens: TEnsLoisirs): TSTR255 nous retourne une chaîne composée de plusieurs lignes; chaque ligne constitue une activité choisie par l'usager
La procédure btCompterClick (en cliquant sur le button Compter) permet de compter le nombre de loisirs choisis; il faut utiliser la fonction Construire ici pour avoir l'ensemble des loisirs choisis puis on compte les éléments de cet ensemble
Et finalement la procédure btAfficherClick permet d'afficher les loisirs choisis par l'usager dans une mémo séparés par des sauts de ligne. Il faut utiliser ici les fonctions ConvertLoisirs et Construire.
La plus grande partie du programme c'est bien sûr ces 4 codages et je suis déjà bloqué sur la 1er fonction..lol
Je vais essayer de m'avancer un peu c'est juste que j'ai aussi un script à faire en Linux pour mardi prochaine qui est un peu plus dur que cette lab (script qui crée et qui efface des comptes d'usager à partir d'un fichier qui contient la liste des noms avec leur mot de passe. So, il faut mettre les paramètres pour chacun des choix (-c pour créér avec 3 par., -d pour détruire les comptes avec 2 par) le tout dans un boucle While..do..Done. Entk, c plus difficile que Delphi
Si quelqu'un pourra m'aider un peu avec cette lab, j'apprécierai beaucoup
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 18 mars 2009 à 21:46
type
TMyValue = (mvValue1, mvValue2, mvValue3, mvValue4);
TMyValues = set of TMyValue;
function MakeValues(const Value1, Value2, Value3, Value4: boolean): TMyValues;
begin
result := [];
if Value1 then result := result + [mvValue1];
if Value2 then result := result + [mvValue2];
if Value3 then result := result + [mvValue3];
if Value4 then result := result + [mvValue4];
end;
function CountValues(const MyValues: TMyValues): integer;
var N : TMyValue;
begin
result := 0;
for N := low(TMyValue) to high(TMyValue) do
if N in MyValues then
inc(result);
end;
function ValueToString(const MyValue: TMyValue): string;
const
VTS : array[TMyValue] of string = ('Value 1','Value 2','Value 3','Value 4');
begin
result := VTS[MyValue];
end;
function ValuesToString(const MyValues: TMyValues): string;
var N : TMyValue;
C : integer;
const
EOW : array[boolean] of string = ('.',', ');
begin
result := '';
C := CountValues(MyValues);
for N := low(TMyValue) to high(TMyValue) do
if N in MyValues then
begin
dec(C);
result := result + ValueToString(N) + EOW[C > 0];
end;
end;
Dancsi27
Messages postés7Date d'inscriptionsamedi 6 décembre 2008StatutMembreDernière intervention20 mars 2009 20 mars 2009 à 02:17
Merci, mais ce n'est pas exactement ce que je cherchais..premiérement, ce code est pour une application console vu qu'il n y a pas les éléments graphique dans le code (mémo, edit box et buttons) et il n'y a pas d'affichage aussi.
Quelqu'un a une meilleure solution par hasard?
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 20 mars 2009 à 05:31
pfffff
De ou ton niveau en programmation te permet de juger si un code est exclusif a un programme console ou pas ?
j'aimerais bien le savoir.
N'y vois rien d'aggressif mais la meilleure solution aprés celle que je viens de te donner c'est :
"Demmerde toi tout seul".
Je te file un code passe partout/standalone (pour programme a Interface Visuelle ou Console!) a adapter a ton cas ... si maintenant tu n'en veux pas ... c'est ton problème.
Avec la fonction MakeValue tu apprend comment remplir un ensemble a partir de données booléennes.
Avec la fonction CountValues tu apprend comment compter les valeurs presente dans un ensemble
Avec la fonction ValueToString tu apprend comment transformer une valeur en chaine
Avec la fonction ValuesToString tu apprend comment tranformer toutes les valeurs d'un ensemble en une chaine coherente et lisible.
A toi d'adapter ce code au cas donné dans ton exercice. L'adaptation de code fait partie integrante du travail d'un programmeur, si tu ne comprend pas ce principe, change tout de suite de branche ... prend horticulture ou menuiserie.
Dancsi27
Messages postés7Date d'inscriptionsamedi 6 décembre 2008StatutMembreDernière intervention20 mars 2009 20 mars 2009 à 14:19
Finalement, tu as raison, j'ai commencé à coder la fonction Construire (la fonction MakeValues dans ton cas) et la syntaxe revient à la même chose que dans mon cas aussi, il me manquait juste le Case..Of pour ordonner les éléments de l'ensemble dans l'orde (Musique à Tennis) avec la boucle For Do aussi.
Alors je te remercie de ton aide, je vais l'utiliser ton exemple et l'ajuster un peu avec les autres fonctions.
Désolé si j'étais aggressif ou méchant avec toi, je ne voulais pas être. Je ne suis pas un pro en prog je l'avoue, mais j'ai quand même des connaissances (j'ai étudié VB6 et Delphi 7 et maintenant j'étudie aussi les scripts de Linux
Vous n’avez pas trouvé la réponse que vous recherchez ?