Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
765 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[Delphi - Newbie] Les appels croisés entre unités

n°75845
Jubijub
Parce que je le VD bien
Posté le 27-11-2001 à 01:18:39  profilanswer
 

Reprise du message précédent :
Ben euh, imaginons un exemple tordu :  
 
T sur mon site, tu dois entrer ton numéro Insee...qui contient ta date de naissance, donc je sais si tu es majeur. ( :o l'exemple foireux....ch'suis l'pornographe du phonographe :D )
 
Un numéro Insee ca donne ca :  
S - AA - MM - DD - etc...
 
S = sexe a 2 valeurs : 1 et 2 : 1 = gars, 2 = fille autre =  :heink:  
AA = année de naissance a comme valeur [00..99]
MM = mois de naissance a comme valeur [01..12]
DD = departement a comme valeur [01..110]
 
Donc suivant mon exemple, en te connectant, t'a une QueryBox qui vient et te demande ton numéro insee (seuls les 5 premiers chiffres sont significatifs, le reste tu met ce que tu veux, il en faut juste 13 en tt).
 
Tu te retrouve donc avec une string qui contient, genre '1810406....'
Je veux pouvoir scanner la string chiffre par chiffre, et en fonction de leur position, pouvoir tester des trucs, genre :  
si char(1) = '1' then Bonjour Monsieur else Bonjour Madame
si (StrToInt(char(2)+ char(3)) < 83) then ShowMessage(Tu n'es pas majeur/e (le premier char me donne l'orthographe))...et mettons que je sois fada et que j'ai rentré les 110 et quelques departements francais dans un tableau ou autre type plus adapté (j'en sais rien), que si char(4)+char(6) = '06' then Montrer le contenu du tableau ligne 6, dans un tu viens des alpes maritimes...
 
et là ton truc marche pas...parce que la saisie est uniforme, et que je dois la scinder...

 

[edtdd]--Message édité par Jubijub--[/edtdd]


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le 27-11-2001 à 01:18:39  profilanswer
 

n°75848
JWhy
je peux plier (héhé)
Posté le 27-11-2001 à 01:37:41  profilanswer
 

il te faut donc utiliser Copy()
 
1) tu verifies que tu as la bonne taille ( taille de la chaine = taille d'un numero de SS) ou alors (version crade) taille de la chaine > 8 (c-a-d taille mini necessaire pour trouver la date + dep.)
 
2) si c'est ok, tu scindes:
var sSexe, sYY, sMM, sDDD :String;
 
sSexe := Copy(sSS, 1, 1);
sYY := Copy(sSS, 2, 2);
sMM := Copy(sSS, 4, 2);
sDDD := Copy(sSS, 6, 3);
 
et apres tu fais tes tests, est-ce numerique, est-ce que le mois est bien entre 1 et 12 , etc... bref tu valides ce que tu as recuperé!

 

[edtdd]--Message édité par JWhy--[/edtdd]


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°76138
Jubijub
Parce que je le VD bien
Posté le 27-11-2001 à 21:57:09  profilanswer
 

et pour copier dans une char, y'a rien d'autre que la concaténation avec + ? (c bien ca déjà, c juste pour savoir si il existe autre chose)


---------------
Jubi Photos : Flickr - 500px
n°76164
JWhy
je peux plier (héhé)
Posté le 27-11-2001 à 22:39:36  profilanswer
 

pour concatener, t'as l'operateur + ou bien format()
 
sChaine1 := 'Le debut'
sChaine2 := sChaine1 + ' de la fin';
 
ou bien
 
sChaine1 := 'Le debut'
sChaine2 := format('%s %s',[sChaine1, 'de la fin']);
 
ou encore
sChaine2 := 'Le debut' +' '+ 'de la fin';
 
t'as le choix !

 

[edtdd]--Message édité par JWhy--[/edtdd]


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°76172
Jubijub
Parce que je le VD bien
Posté le 27-11-2001 à 23:08:01  profilanswer
 

tu met tjs le type de var en minuscule devant tes noms de variable ?


---------------
Jubi Photos : Flickr - 500px
n°76174
JWhy
je peux plier (héhé)
Posté le 27-11-2001 à 23:11:04  profilanswer
 

oui... c'est bien pratique quand t'as du code a lire:
iEntier, sChaine, bBooleen, dtDateTime, dbDouble, etc...
 
je vais essayer de te trouver les regles de nommages de Delphi que j'utilise, je crois qu'elles sont sur le site de Borland...


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°76175
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-11-2001 à 23:11:17  profilanswer
 

normalement en Pascal il faut pas:
 
http://community.borland.com/artic [...] 80,00.html
 
en plus dans delphi quand tu passes sur les var y a une infobulle qui en donne le type... donc c'est pas trop nécessaire.

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°76178
JWhy
je peux plier (héhé)
Posté le 27-11-2001 à 23:24:59  profilanswer
 

http://www.delphi-jedi.org/Jedi:JCLOPSG:54342
 
ca doit etre le meme contenu...
 
antp> je suis d'accord avec toi mais quand tu fais des relectures croisées de codes c'est bien pratique d'avoir ca !


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°76179
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-11-2001 à 23:35:37  profilanswer
 

mwouais... mais bon je préfère me conformer au standard de Borland, vu que tout leur source est comme ça, et que la majorité des développeurs suit ça.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°76269
Jubijub
Parce que je le VD bien
Posté le 28-11-2001 à 13:06:43  profilanswer
 

Cad tu met juste un uppercase sur chaque début de Mot dans ta variable...
 
donc si g bien compris, nombre de jour d'une année, entier, sera :

  • Pour Jwhy : iNombreJourAnnee
  • Pour Antp : NombreJourAnnee


...j'avais remarqué l'infobulle, elle sert bien aussi pour les instruction, si tu la laisses dessus, ca te dit ce qu'elle prend comme type de var...ca evite les erreurs connes de coùpil


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le 28-11-2001 à 13:06:43  profilanswer
 

n°76283
Jubijub
Parce que je le VD bien
Posté le 28-11-2001 à 13:42:23  profilanswer
 

ca marche pas :  
 

Citation :


begin
 // j'assigne vrai a bContinuer  
 bContinuer := true;
 
 // tant que bContinuer est vrai, je fais mon code
 while bContinuer do
 begin
   // bContinuer est true si l'utilisateur a clické sur OK
   bContinuer := InputQuery('Input Box', 'Prompt', sValeur);
   if bContinuer then
   begin
     // l'utilisateur a clické sur OK, donc je gere la valeur sValue saisie.
   end;
   //sinon, si il a clické sur Cancel, bContinuer sera False et donc je sortirai de ma boucle
 end;
end;


 
 
ca me donne ca :  
 

Citation :


Code :
  1. procedure TForm1.Button3Click(Sender: TObject);
  2. begin
  3.     UserEntry :='0';
  4.     Compteur := 0;
  5.     Nb := Generation(LimiteNum);
  6.     Continuer := True;
  7.     while Continuer do
  8.     Continuer := InputQuery('Entrez un nombre', 'Essai n° '+ inttostr(Compteur), UserEntry);
  9.         if Continuer = True then
  10.             begin
  11.             showmessage('test ok');
  12.             UserEntryNum :=strToInt(UserEntry);
  13.             Disp := test(UserEntryNum,Nb);
  14.             Compteur := Compteur +1;
  15.             if (Disp = 'Vous avez entré un nombre trop petit') XOR (Disp = 'Vous avez entré un nombre trop grand') then
  16.             ShowMessage(Disp)
  17.             else
  18.             ShowMessage(Disp + ' en ' + IntToStr(Compteur) + ' coups')
  19.             end;
  20.             showmessage('Vous venez de quitter');
  21.     end;
  22. end;
  23. end.




 
quand j'appuie sur btn3, g la input query, mais quand je tape un nombre, la boite revient avec le même nombre, et le nombre d'essai est pas incrémenté, preuve qu'il y a pas de boucle...pis le compilo me dit que g un end de trop : là tel que c tapé, g une erreur de compilation sur l'avant dernier end, qui me dit qu'il trouve un ";" au lieu de '.' ...si je vire un end;, alors ca compîle, mais ca buggue...
 
-->pourtant g un end pour la procédure btn, un end pour la boucle while, et un end pour le procédure de test if...ben si je les met les 3, ca buggue...

 

[edtdd]--Message édité par Jubijub--[/edtdd]


---------------
Jubi Photos : Flickr - 500px
n°76336
JWhy
je peux plier (héhé)
Posté le 28-11-2001 à 17:07:20  profilanswer
 

la syntaxe du while est comme suit:
 
while test do
  instruction
 
une instruction est :
une instruction simple (appel de fonction, assignement, etc...)
  ou  
une suite d'instructions encadré par begin...end
 
donc dans ton cas quand tu mets:
 

Code :
  1. while Continuer do
  2.    Continuer := InputQuery('Entrez un nombre', 'Essai n° '+ inttostr(Compteur), UserEntry);
  3.    if Continuer = True then
  4.    [...]


 
tu es dans le cas instruction simple: Continuer := InputQuery et donc il boucle sur le inputquery tant que tu n'as pas clické sur annuler.
 
ensuite il fera le test qui bien sur est faux puisque tu auras quitter la boucle.
en gros ton code avec la bonne tabulation donne qqchose comme ca:

Code :
  1. while Continuer do
  2.    Continuer := InputQuery('Entrez un nombre', 'Essai n° '+ inttostr(Compteur), UserEntry);
  3. if Continuer = True then
  4.    [...]


   
et c'est aussi pour ca que tu as l'erreur de compilation avec le end;
 
tu as bien mis le end; mais pas le begin donc le compilateur fait la tronche !
 
il te faut :

Code :
  1. while Continuer do
  2. begin
  3.    Continuer := InputQuery('Entrez un nombre', 'Essai n° '+ inttostr(Compteur), UserEntry);
  4.    if Continuer = True then
  5.    [...]
  6. end;


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°76464
Jubijub
Parce que je le VD bien
Posté le 28-11-2001 à 21:01:51  profilanswer
 

ok, merci...
 
-->sinon question comme ca : tu sais programmer dans combien de langages ?


---------------
Jubi Photos : Flickr - 500px
n°76482
JWhy
je peux plier (héhé)
Posté le 28-11-2001 à 21:50:01  profilanswer
 
n°76484
Jubijub
Parce que je le VD bien
Posté le 28-11-2001 à 21:54:31  profilanswer
 

ok...
 
ca m'étonne moins du coup :p :D


---------------
Jubi Photos : Flickr - 500px
n°76654
Jubijub
Parce que je le VD bien
Posté le 29-11-2001 à 17:13:46  profilanswer
 

pour un repeat .. until, on peut pas mettre 2 conditions de sorties et que l'une XOR l'autre soit valide ?


---------------
Jubi Photos : Flickr - 500px
n°76663
JWhy
je peux plier (héhé)
Posté le 29-11-2001 à 17:52:14  profilanswer
 

bah si, y'a pas de raison... un test est un test, que ca soit un simple bContinuer ou un (machin XOR truc) AND NOT (Bidule OR (i=3))
 
en gros , du moment que le resultat est boolean, tu peux mettre ce que tu veux !  
 
(ou alors, j'ai pas bien compris la question)


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°76665
Jubijub
Parce que je le VD bien
Posté le 29-11-2001 à 17:55:19  profilanswer
 

ct une faute de ma part : j'avais pas mis de parenthèses à la première condition... c vrai que a = b or c =d, selon l'endroit ou tu met tes parenthèses, ca veut pas dire pareil...


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[DELPHI] qui est intéressé par mon parser HTML?[Delphi] Hello World
[Delphi] Streaming avec le TIdHttp[Delphi] WinLirc
L'aide de delphi en françaisDELPHI ET TUTORIAL INTEGRE
[Delphi] Forcer le port d'un client (TClientSocket) ???[ MySQL ] Pour un newbie en détresse...
[Delphi] si quelqu'un a du temps à perdre...[DELPHI] créer un composant avec un attribut de type TRichEdit
Plus de sujets relatifs à : [Delphi - Newbie] Les appels croisés entre unités


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR