[Delphi] Conversion ASCII

Conversion ASCII [Delphi] - Programmation

Marsh Posté le 17-08-2002 à 14:53:24    

Salut ,est il possible en Delphi de convertir des caractères en leur valeur ASCII ? Paske en fait je veux gérer une saisie utilisateur et il faudrait que seulement des chiffres soient saisis...

Reply

Marsh Posté le 17-08-2002 à 14:53:24   

Reply

Marsh Posté le 17-08-2002 à 15:01:13    

la contenu des caractère c'est leur valeur ASCII...
chaine[i] = code ASCII du caractère à la position i (pour i allant de 1 à longueur)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-08-2002 à 15:03:00    

A ok merci j'avais pas kapté ca  :) j'suis un petit peu débutant aussi alors...

Reply

Marsh Posté le 17-08-2002 à 16:01:44    

Je crois que j'ai pas tout a fait capté encore  :) ...
Comme je veux que l'utilisateur ne saisisse que des chiffres je compare la valeur ASCII du caractère en cours avec la valeur  ASCII des chifre 1,2,3,4...
Je fais (pour reprendre l'exemple) : if Chaine[i] < 48 And  
Chaine[i] > 57 then ... Mais le compilateur me dit que les types sont incompatibles,les valeurs ASCII c pas des Int ?

Reply

Marsh Posté le 17-08-2002 à 16:04:11    

Le pascal est un langage typé, donc un char n'est pas un byte, et inversément, sauf si tu le caste
 
char(48), ou '1' c'est pareil, mais 48 c'est pas un char, c'est un byte
 
 :hello:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 17-08-2002 à 16:07:27    

Ben ouais ca y me semble avoir compris,mais ca me permet pas de comparer avec la valeur ASCII du caractere

Reply

Marsh Posté le 17-08-2002 à 16:09:02    

Ord(chaine[1]) te renvoie un entier ayant la valeur du 1er caractere par ex, ca te permet de le comparer à un autre entier ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-08-2002 à 16:09:59    

:heink:  
 
Je viens de te dire de faire  
 
chaine[i]<'1'
 
plutot que 48
 
je le répète, le pascal est un langage fortement typé
 
Soit tu castes byte(chaine[i]) soit char(48)


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 17-08-2002 à 16:10:22    

antp a écrit a écrit :

Ord(chaine[1]) te renvoie un entier ayant la valeur du 1er caractere par ex, ca te permet de le comparer à un autre entier ;)




 
 :heink:  
 
Ca sert à rien cte fonction  :D


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 17-08-2002 à 16:11:11    

Ok en fait j'avais encore pas bien capté maintenant je pense avoir capté et il semble que ca marche merci  :jap:

Reply

Marsh Posté le 17-08-2002 à 16:11:11   

Reply

Marsh Posté le 17-08-2002 à 16:11:35    

Zion a écrit a écrit :

 
Ca sert à rien cte fonction  :D  




 
:heink:
bhen si
 
if chaine[i] < 48 ca passe pas
if Ord(chaine[i]) < 48 ca passe
 
mais c'est vrai que ta solution est meilleure ;)


Message édité par antp le 17-08-2002 à 16:12:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-08-2002 à 16:12:52    

antp a écrit a écrit :

:heink:
bhen si
 
if chaine[i] < 48 ca passe pas
if Ord(chaine[i]) < 48 ca passe




 
benh déjà 48 c'est mal, si tu veux compiler ton truc pour .NET, admettons qu'ils utilise de l'EBCDIC (non je déconne, c juste pour l'exemple), ton 48 marchera plus.
 
De plus l'ORD est inutile, suffit de caster  :sarcastic:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 17-08-2002 à 16:14:16    

bah oui 48 c'est mal, mais bon y a des cas où c'est utile
puis Ord(machin) c'est plus court à écrire que Integer(machin) :na:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-08-2002 à 16:17:49    

Pourquoi caster un byte en Integer maintenant?  :pt1cable:  
 
(Fait pas attention Kroute, on fait de l'ambiance comme on peut :p)


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 17-08-2002 à 16:18:46    

C cool ca me plait !

Reply

Marsh Posté le 17-08-2002 à 16:23:57    

Zion a écrit a écrit :

Pourquoi caster un byte en Integer maintenant?  :pt1cable:  




 
bhen dans le cas où tu dois le récupérer comme un integer :heink:
genre les onkeypress/onkeydown ou tu mélanges des char, des word et des constantes...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-08-2002 à 16:28:08    

Ok le truc marche mais seulement si je n'utilise pas la deuxieme partie (And Chaine[i]>'57';) paske qd je fait ca le compilateur me dit que l'operateur est invalide poue ce type d'opérande.J'ai essayé avec un else if mais la ca marche plus du tout ....

Reply

Marsh Posté le 17-08-2002 à 17:05:12    

if chaine[i] < '0' or chaine[i] > '9' then
 
le compilateur voit
 
if chaine[i]< ('0' or chaine[i]) > '9' then
ou un truc du genre
 
faut faire
 
if (chaine[i] < '0';) or (chaine[i] > '9';) then
 
et comparer un caractère à '57' (une chaine) ça risque pas de faire ce que tu veux :D


Message édité par antp le 17-08-2002 à 17:06:02

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-08-2002 à 21:50:46    

tu n'as qu'a utiliser l'évènement keypress et ne permettre de tapé seulement des chiffres, c'est très aisé à faire...


---------------
Borland rulez: http://pages.infinit.net/borland
Reply

Marsh Posté le 18-08-2002 à 12:35:46    

Comment on fait ? :D


Message édité par KrOuTe le 18-08-2002 à 12:36:15
Reply

Marsh Posté le 18-08-2002 à 12:39:04    

Code :
  1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  2. begin
  3.   if not (Key in ['0'..'9']) then
  4.     Key := #0;
  5. end;


Message édité par antp le 18-08-2002 à 12:39:25

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-08-2002 à 12:41:24    

:jap:  :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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