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

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

Marsh Posté le 26-01-2002 à 11:18:02    

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 !
Reply

Marsh Posté le 26-01-2002 à 11:18:02   

Reply

Marsh Posté le 26-01-2002 à 11:37:16    

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
Reply

Marsh Posté le 26-01-2002 à 11:45:06    

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 !
Reply

Marsh Posté le 26-01-2002 à 11:47:30    

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
Reply

Marsh Posté le 26-01-2002 à 11:49:02    

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
Reply

Marsh Posté le 26-01-2002 à 12:09:48    

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 !
Reply

Marsh Posté le 26-01-2002 à 12:25:54    

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
Reply

Marsh Posté le 26-01-2002 à 13:29:16    

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 !
Reply

Marsh Posté le 26-01-2002 à 15:11:09    

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:
Reply

Marsh Posté le 26-01-2002 à 16:44:25    

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 !
Reply

Marsh Posté le 26-01-2002 à 16:44:25   

Reply

Marsh Posté le 26-01-2002 à 17:42:14    

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
Reply

Marsh Posté le 26-01-2002 à 18:03:42    

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 !
Reply

Marsh Posté le 26-01-2002 à 18:09:47    

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 !
Reply

Marsh Posté le 26-01-2002 à 19:44:06    

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:
Reply

Marsh Posté le 26-01-2002 à 19:46:56    

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 !
Reply

Marsh Posté le 26-01-2002 à 20:05:11    

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
Reply

Marsh Posté le 26-01-2002 à 20:06:40    

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 !
Reply

Marsh Posté le 26-01-2002 à 20:06:54    

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
Reply

Marsh Posté le 26-01-2002 à 20:29:55    

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 !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed