jlp_alexandre
Messages postés25Date d'inscriptionmardi 16 novembre 2004StatutMembreDernière intervention12 janvier 2006
-
3 août 2005 à 12:36
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
3 août 2005 à 21:58
Je vais poser la question autrement :
// cDonne est déclarée :
var cDonnee : string;
// cCar est déclarée :
var cCar : char;
//A un moment, cDonnee contient la chaîne 'DISK 1'
// Dans le code j'ai
cCar := copy(cDonnee, 6, 1);
if cCar IN ['1'..'9'] then showmessage('ok');
// cette dernière ligne me donne l'erreur suivante
[Erreur] UnitImport.pas(121): Types incompatibles : 'Char' et 'String'
QUELLE PEUT ETRE LA SOLUTION ?
Merci par avance
Jean-Louis / jean.louis.paul@wanadoo.fr
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201412 3 août 2005 à 13:44
salut,
remplace cCar := copy(cDonnee, 6, 1); par cCar := cDonnee[6]; et ton
probleme szra resolu. Mais il me semble que FLORENTH t'avais deja donne
la solution.
une seule restriction length( cDonnee) doit etre superieur a 6 sinon tu auras une erreur d'execution.
FLORENTH si tu regarde ce post cCar := copy(cDonnee, 6,
1);provoque une erreur de compilation Types incompatibles : 'Char' et
'String'
MimiGMT
Messages postés28Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention24 juillet 2009 3 août 2005 à 15:09
salut,
et si tu remplaçais var cCar : char par var cCar : string; d'autre part comme la signlé jlen100, il faut que la longueur de ton text soit au minium égale à 6
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201412 3 août 2005 à 15:57
mimiGMT tu ne peux pas utiliser un string avec l'operatuer d'ensemble
IN puisqu'il n'admet que des scalaires or un type string n'est pas un
scalaire. Il faut donc faire un transtypage.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201412 3 août 2005 à 16:48
mimiGMT, dans le code que tu donnes ça fonctionne car ...AsString[1] n'est pas une chaine mais un caractere de la chaine AsString tu as donc transtype ta chaine en scalaire. Par contre tu ne peux pas faire AsString in [...] CQFD.
Aucune des deux déclarations ne renvoyant un type scalaire, il faut donc transtyper le résultat en Char.
JLen100 a raison quand il dit qu'il vaut mieux que la chaine ait au moins 6 caractères :
if Length(CDonnee) >= 6 then
cCar : = cDonnee[6]
else cCar := '0';
if cCar IN ['1'..'9'] then showmessage('ok');
<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.