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

  FORUM HardWare.fr
  Programmation

  [Delphi] Conversion ASCII

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi] Conversion ASCII

n°196319
KrOuTe
Posté le 17-08-2002 à 14:53:24  profilanswer
 

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...

mood
Publicité
Posté le 17-08-2002 à 14:53:24  profilanswer
 

n°196323
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2002 à 15:01:13  profilanswer
 

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
n°196326
KrOuTe
Posté le 17-08-2002 à 15:03:00  profilanswer
 

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

n°196355
KrOuTe
Posté le 17-08-2002 à 16:01:44  profilanswer
 

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 ?

n°196358
zion
Plop
Posté le 17-08-2002 à 16:04:11  profilanswer
 

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
n°196361
KrOuTe
Posté le 17-08-2002 à 16:07:27  profilanswer
 

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

n°196362
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2002 à 16:09:02  profilanswer
 

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
n°196364
zion
Plop
Posté le 17-08-2002 à 16:09:59  profilanswer
 

: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
n°196365
zion
Plop
Posté le 17-08-2002 à 16:10:22  profilanswer
 

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
n°196367
KrOuTe
Posté le 17-08-2002 à 16:11:11  profilanswer
 

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

mood
Publicité
Posté le 17-08-2002 à 16:11:11  profilanswer
 

n°196369
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2002 à 16:11:35  profilanswer
 

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
n°196371
zion
Plop
Posté le 17-08-2002 à 16:12:52  profilanswer
 

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
n°196373
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2002 à 16:14:16  profilanswer
 

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
n°196376
zion
Plop
Posté le 17-08-2002 à 16:17:49  profilanswer
 

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
n°196377
KrOuTe
Posté le 17-08-2002 à 16:18:46  profilanswer
 

C cool ca me plait !

n°196378
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2002 à 16:23:57  profilanswer
 

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
n°196379
KrOuTe
Posté le 17-08-2002 à 16:28:08  profilanswer
 

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 ....

n°196392
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2002 à 17:05:12  profilanswer
 

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
n°196457
os2
Posté le 17-08-2002 à 21:50:46  profilanswer
 

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
n°196539
KrOuTe
Posté le 18-08-2002 à 12:35:46  profilanswer
 

Comment on fait ? :D


Message édité par KrOuTe le 18-08-2002 à 12:36:15
n°196540
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-08-2002 à 12:39:04  profilanswer
 

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
n°196541
KrOuTe
Posté le 18-08-2002 à 12:41:24  profilanswer
 

:jap:  :jap:

mood
Publicité
Posté le   profilanswer
 


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

  [Delphi] Conversion ASCII

 

Sujets relatifs
{PL/SQL} Conversion de nombres[C/C++] Conversion de pointeurs
question : caractere ascii[c++/delphi] pb "installation" synedit
utilisation d'une variable avec winexec sous delphiCherche fonction de conversion bin to char et char to bin
Je Cherche De L'Aide Pour Un Projet Avec Delphi 6 .conversion chaine
Problème de construction de projet sous Delphi 6 Ent[Delphi] /\ editeur de tiles /\ page2: pb de onMouseWheel event !
Plus de sujets relatifs à : [Delphi] Conversion ASCII


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