Comprendre la fonction ord en pascal [Résolu] - Delphi/Pascal - Programmation
Marsh Posté le 06-11-2005 à 13:35:27
Dans ce code ça regarde si le code ASCII est entre 0 et 27 (Ord renvoie la valeur numérique correspondant à un caractère ou une enum)
Mais dans ton cas tu devrais plutôt faire
Result := c in ['0'..'9']
si tu veux voir si le caractères est un chiffre.
Marsh Posté le 06-11-2005 à 13:48:50
je suis d'accord pour tester la nature du caractère, mais il faut ensuite convertir le char en integer, et ce n'est possible que si on a le code ascii correspondant.
Par contre je ne comprends toujours pas pourquoi le code ascii entre 0 et 27 est considéré comme mauvais, vu que dans la table ascii que j'ai regardé (http://www.lookuptables.com/) ca serait plutot entre 48 et 57.
Non?
Marsh Posté le 06-11-2005 à 14:10:01
La fonction que t'as mise dans le premier post ne teste pas si le caractère est un chiffre mais si il s'agit d'un caractère de contrôle je suppose (bien que, ça devrait aller jusqu'à 31 et non 27 dans ce cas).
De toute façon pas besoin d'aller voir les codes ASCII, tu peux directement utiliser des caractères comme je l'ai mis dans mon post précédent. C'est mieux de faire comme ça que de taper 48..57 qui sont nettement moins "parlant".
Marsh Posté le 09-11-2005 à 14:07:50
Bon j'ai fini ma fonction et elle marche, merci pour ton aide antp.
Pour ceux qui sont intéressés, voila ma fonction :
Code :
|
Marsh Posté le 06-11-2005 à 12:53:20
Salut, je viens de me mettre au pascal, et j'ai un problème sur du code. Je m'explique.
Je cherche à réaliser une fonction qui détecte si à l'entrée d'un caractère, on a bien un integer. J'ai récupérer un morceau de code sur le net, mais je n'arrive pas à le comprendre.
(* Teste si le caractère passe en paramètre renvoie *)
(* une fonction d'après la table ASCII. *)
function IsFunct(c:char):boolean;
begin
IsFunct:=((ord(c) in [0..27]));
end;
d'apres ce que j'ai trouvé sur le net, la fonction ord trouve la place de c, mais je vois pas en quoi ca teste une fonction?
Message édité par bossgama le 09-11-2005 à 14:08:26