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

  FORUM HardWare.fr
  Programmation

  [Delphi][C'est encore moi] Vérifier le type des données...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi][C'est encore moi] Vérifier le type des données...

n°93640
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 11:18:02  profilanswer
 

bonjour c'est encore moi !
 
J'ai un petit probleme : l'utilisateur de mon programme peut entrer des données dans des Tedit, seulement ce type de données doit etre de type integer... vu que je fais un strtoInt derrière...
 
J'ai essayé de faire un traitement d'exception sans succès :(
 
 
voila ce que j'ai fait :

Code :
  1. try
  2.         strtoint(Liaison.text);
  3. except
  4.     on EconvertError do HandleException;
  5. end;


 
Et ca marche pas :(
aussi, y a t'il un moyen plus simple pour tester le contenu des Tedits,s achant que pour cette form j'en ai 30 ...
 
Et que je dois faire un Table.Append / Table.post derrière (C un ajout d'un enregistrement).
 
voila en gros ce que j'ai comme fonction derrière :
 

Code :
  1. Form15.Clients.Append;
  2. Form15.Clients.FieldValues['NOM']:= ajouterClient.NOM.text;
  3. Form15.Clients.FieldValues['PRENOM']:=
  4. ajouterClient.PRENOM.text;
  5. Form15.Clients.FieldValues['DDN']:=Dat
  6. eToStr(ajouterClient.DDN.Date);
  7. Form15.Clients.FieldValues['DEPARTEMENT_N&#
  8. 039;]:=StrToInt(ajouterClient.DEPARTEMENT_N.text);
  9. Form15.Clients.FieldValues['LIEU_N']:=
  10. ajouterClient.LIEU_N.Text;
  11. Form15.Clients.FieldValues['ADRESSE_A'
  12. ]:=ajouterClient.ADRESSE_A.text;
  13. Form15.Clients.FieldValues['CODE_P_A']
  14. :=StrToInt(ajouterClient.CODE_P_A.text);
  15. Form15.Clients.FieldValues['VILLE_A']:
  16. =ajouterClient.VILLE_A.text;
  17. Form15.Clients.FieldValues['TELEPHON_A'
  18. ;
  19. ;]:=ajouterClient.TELEPHON_A.text;
  20. Form15.Clients.FieldValues['ADRESSE_V'
  21. ]:=ajouterClient.ADRESSE_V.text;
  22. Form15.Clients.FieldValues['CODE_P_V']
  23. :=StrToInt(ajouterClient.CODE_P_V.text);
  24. Form15.Clients.FieldValues['VILLE_V']:
  25. =ajouterClient.VILLE_V.text;
  26. Form15.Clients.FieldValues['TELEPHON_V'
  27. ;
  28. ;]:=ajouterClient.TELEPHON_V.text;
  29. Form15.Clients.FieldValues['NIVEAU']:=
  30. ajouterClient.NIVEAU.Itemindex+1;
  31. Form15.Clients.FieldValues['TYP_PLONG'
  32. ]:=ajouterClient.TYP_PLONG.text;
  33. if ajouterClient.INITIATOUI.Checked then Form15.Clients.FieldValues['INITIATEUR']:=TRUE
  34. else Form15.Clients.FieldValues['INITIATEUR'
  35. ;
  36. ;]:=FALSE;
  37. Form15.Clients.FieldValues['NUM_DIPL']
  38. :=StrToInt(ajouterClient.NUM_DIPL.text);
  39. Form15.Clients.FieldValues['DATE_OBT']
  40. :=DateToStr(ajouterClient.DATE_OBT.Date);
  41. Form15.Clients.FieldValues['NOM_CLUB']
  42. :=ajouterClient.NOM_CLUB.text;
  43. Form15.Clients.FieldValues['NUM_CLUB']
  44. :=StrToInt(ajouterClient.NUM_CLUB.text);
  45. Form15.Clients.FieldValues['D_VIS_MED'
  46. ]:=DateToSTR(ajouterClient.D_VIS_MED.Date);
  47. Form15.Clients.FieldValues['NOM_MED']:
  48. =ajouterClient.NOM_MED.text;
  49. Form15.Clients.FieldValues['GR_SANG']:
  50. =ajouterClient.GR_SANG.Items[ajouterClient.GR_SANG
  51. .ItemIndex];
  52. if ajouterClient.ALLERG_ASPOUI.Checked then Form15.Clients.FieldValues['ALLERG_ASP']:=TRUE
  53. else Form15.Clients.FieldValues['ALLERG_ASP'
  54. ;
  55. ;]:=FALSE;
  56. Form15.Clients.FieldValues['TYPE_MED']
  57. :=ajouterClient.TYPE_MED.text;
  58. Form15.Clients.FieldValues['CERTIF_MED'
  59. ;
  60. ;]:=ajouterClient.CERTIF_MED.text;
  61. Form15.Clients.FieldValues['AUTOR_PARE'
  62. ;
  63. ;]:=ajouterClient.AUTOR_PARE.text;
  64. Form15.Clients.FieldValues['COEF_CONF'
  65. ]:=StrToInt(ajouterClient.COEF_CONF.text);
  66. Form15.Clients.FieldValues['INSCR_LIC'
  67. ]:=ajouterClient.INSCR_LIC.text;
  68. Form15.Clients.FieldValues['LIAISON']:
  69. =StrToInt(ajouterClient.LIAISON.text);
  70. Form15.Clients.FieldValues['DATE_ARRIV'
  71. ;
  72. ;]:=DateToStr(ajouterClient.DATE_ARRIV.Date);
  73. Form15.Clients.FieldValues['DATE_DEPART
  74. 9;]:=DateToStr(ajouterClient.DATE_DEPART.Date);
  75. Form15.Clients.post;


 
Je sais c'est lourd mais C pas moi qui ai voulu ca, C le prof :/
 
DOnc vous traiteriez comment le type de données la dedans vous ?

 

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


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
mood
Publicité
Posté le 26-01-2002 à 11:18:02  profilanswer
 

n°93646
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-01-2002 à 11:37:16  profilanswer
 

tu veux quoi ? empêcher de rentrer autre chose que des chiffres ?
dans le onKeyPress d'un de tes Edit tu mets:
 

Code :
  1. if not (Key in ['0'..'9']) then
  2.   Key := #0;


 
et tu raccordes tous les events "OnKeyPress" des autres Edit à l'event de celui ci (pour pas devoir bêtement copier/coller le code, autant qu'ils appellent tous la même fonction).
 
si tu veux permettre d'entre un "-" par ex tu mets:
 

Code :
  1. if not (Key in ['0'..'9', '-']) then
  2.   Key := #0;


 
si tu veux qu'on ne mette le - qu'en première position:
 

Code :
  1. var
  2.   field: TEdit;
  3. begin
  4.   if Sender is TEdit then
  5.   begin
  6.     field := Sender as TEdit;
  7.     if not (Key in ['0'..'9', char(VK_BACK), char(VK_RIGHT), char(VK_LEFT)]) then
  8.       if (key <> '-') or ((field.Text <> '') and not (field.SelLength = Length(field.Text))) then
  9.         Key := #0;
  10.   end;
  11. end;


 
y a peut-être moyen de faire plus simple...

 

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°93648
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 11:45:06  profilanswer
 

Pas bete le coup de ne mettre que des chiffres :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°93649
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-01-2002 à 11:47:30  profilanswer
 

ha sinon pour un peu éclaircir ton code, y a le "with" :
 

Code :
  1. with Form15.Clients, ajouterClient do
  2. begin
  3.   Append;
  4.   FieldValues['NOM'] := NOM.text;
  5.   FieldValues['PRENOM'] := PRENOM.text;
  6.   FieldValues['DDN'] := DateToStr(DDN.Date);
  7.   FieldValues['DEPARTEMENT_N'] := StrToInt(DEPARTEMENT_N.text);
  8.   ...
  9. end;


 
mais faut être prudent avec ça, pcq si un des deux objets a les mêmes attributs que l'autre, il prendra peut-être le mauvais
par ex si ici ajouterClient a aussi une méthode Append, c'est celle-là qui sera prise et non celle de Form15...

 

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°93651
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-01-2002 à 11:49:02  profilanswer
 

pour le traitement de l'exception, ce que tu peux faire:
 

Code :
  1. try
  2.   machin := StrToInt(Edit1.Text);
  3. except
  4.   ShowMessage('invalide');
  5. end;


 
ou
 

Code :
  1. try
  2.   machin := StrToInt(Edit1.Text);
  3. except
  4.   machin := 0;
  5. end;


 
ou même
 

Code :
  1. machin := StrToIntDef(Edit1.Text, 0);


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°93656
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 12:09:48  profilanswer
 

Merci pour tout antp ;)
 
Sinon, j'ai un probleme avec Inifile aussi...
 
J'ai fait ca :

Code :
  1. procedure Tform15.loadconfig;
  2. begin
  3. with TiniFile.create('base.ini') do
  4. try
  5.      unechaine := ReadString('abcd','taist','pas marche');
  6. finally
  7.         free;
  8. end;


 
et voila le fichier ini

Code :
  1. [abcd]
  2. taist="essai"


 
Et quoi que je fasse, unechaine vaut toujours pasmarche :(
 
tu as une idée ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°93661
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-01-2002 à 12:25:54  profilanswer
 

il trouve peut etre pas le fichier ini...
essaie avec ca:

Code :
  1. with TiniFile.Create(ExtractFilePath(Application.ExeName) + 'base.ini') do


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°93675
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 13:29:16  profilanswer
 

antp, T un dieu, décidément, ca marche parfaitement !
 
Merci ENORMEMENT ! :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°93701
[SDF]Poire
Vive Grumly
Posté le 26-01-2002 à 15:11:09  profilanswer
 

Pour les pb des int au lieu de StrToInt fait des StrToIntDef
 :hello:
 
edit : oups j'avais pas vu que tu l'avais déjà dit Antp :D

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°93723
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 16:44:25  profilanswer
 

antp a écrit a écrit :

tu veux quoi ? empêcher de rentrer autre chose que des chiffres ?
dans le onKeyPress d'un de tes Edit tu mets:
 

Code :
  1. if not (Key in ['0'..'9']) then
  2.   Key := #0;


 
et tu raccordes tous les events "OnKeyPress" des autres Edit à l'event de celui ci (pour pas devoir bêtement copier/coller le code, autant qu'ils appellent tous la même fonction).
 
si tu veux permettre d'entre un "-" par ex tu mets:
 

Code :
  1. if not (Key in ['0'..'9', '-']) then
  2.   Key := #0;


 
si tu veux qu'on ne mette le - qu'en première position:
 

Code :
  1. var
  2.   field: TEdit;
  3. begin
  4.   if Sender is TEdit then
  5.   begin
  6.     field := Sender as TEdit;
  7.     if not (Key in ['0'..'9', char(VK_BACK), char(VK_RIGHT), char(VK_LEFT)]) then
  8.       if (key <> '-') or ((field.Text <> '') and not (field.SelLength = Length(field.Text))) then
  9.         Key := #0;
  10.   end;
  11. end;


 
y a peut-être moyen de faire plus simple...  
 
 




 
Dis, ici, y a un blem de type non ?
 
Incompatible type "Word" and "char" pour la condition du if...
 
C quoi le cast adapté ici ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
mood
Publicité
Posté le 26-01-2002 à 16:44:25  profilanswer
 

n°93734
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-01-2002 à 17:42:14  profilanswer
 

tu l'a mis dans le keydown ou keypress ?
il faut le mettre dans le keypress
le keydown donne la key sous forme d'un Word au lieu d'un Char comme le fait le keypress.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°93742
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 18:03:42  profilanswer
 

ok, C moi qui mle suis planté, en effet :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°93743
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 18:09:47  profilanswer
 

mais il reste un probleme : on ne peux plus faire de BackSpace ni de suppr...
 
C'est quoi le nom en char de ces touches ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°93762
[SDF]Poire
Vive Grumly
Posté le 26-01-2002 à 19:44:06  profilanswer
 

backspace #8


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°93765
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 19:46:56  profilanswer
 

ben vi mais euh comment je l'ajoute dans la ligne de antp ?
 
if not (Key in ['0'..'9']) then  
 Key := #0;
 
et aussi : on fait comment pour empecher un utilisateur de resizer une fenetre ( a part autosize = true)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°93774
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-01-2002 à 20:05:11  profilanswer
 

le back etait dans mon dernier exemple, mais j'avais oublié le delete:
 
if not (Key in ['0'..'9', char(VK_BACK), char(VK_RIGHT), char(VK_LEFT), char(VK_DELETE)])


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°93775
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 20:06:40  profilanswer
 

merci :)
 
Pour empecher le resize sans mettre le autoresize a true, c'est comment ? :)
 
(je sais je suis chiant ;) )


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°93776
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-01-2002 à 20:06:54  profilanswer
 

pour la fenetre non redimensionnable, si tu veux garder l'icone, borderstyle = bsSingle;
si tu veux pas de l'icone, borderstyle = bsDialog;
 
(j'ai validé trop vide, c pour ca qu'y avait pas la reponse à la 2e question dans le msg precedent)

 

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°93784
Tetedeienc​h
Head Of God
Posté le 26-01-2002 à 20:29:55  profilanswer
 

ok, merci :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Delphi][C'est encore moi] Vérifier le type des données...

 

Sujets relatifs
[Delphi/InstallShield] On l'integre comment dans le 6 ?[Delphi] [dernière ligne droite] Détruire une form proprement...
[DElphi 6] utilisation de direct Draw...[Delphi] Fonction CreateDirectory
[Delphi 6] un composant qui ne veut pas s'installer.... ??![Borland/C++]TDBgrid et données
[DELPHI] Controle ImageDelphi et Systray
[Delphi] On peut pas acceder a une BDD avec la version perso ?[PHP]Vérifier que ma chaine est de type alphanumérique
Plus de sujets relatifs à : [Delphi][C'est encore moi] Vérifier le type des données...


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