utilisation de in ['A'..'Z','a'..'z'] dans delphi

Résolu
jlp_alexandre Messages postés 25 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 12 janvier 2006 - 3 août 2005 à 12:36
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Derniè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

10 réponses

cs_neko Messages postés 135 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 12 octobre 2006 1
3 août 2005 à 13:41
Ce n'est pas la derniere ligne qui te donne l'erreur a mon avis, mais plôt cCar := copy(cDonnee, 6, 1);

essais de la remplacer par cCar:=cDonnee[6];


bouh
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
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'



bonne prog;
3
MimiGMT Messages postés 28 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 24 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
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
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.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MimiGMT Messages postés 28 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 24 juillet 2009
3 août 2005 à 16:27
Je développe sous Delphi4 et il est très fréquent que j'utilise ceci

If Qry.FieldByName('etat').AsString[1] in ['J', 'S', 'A'] then
begin
-----
end;

Cela fonctionne très bien, je ne comprends pas ce que je fais de pas bien.

MimiMgt
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
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.
3
MimiGMT Messages postés 28 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 24 juillet 2009
3 août 2005 à 17:01
J'ai compris, merci.
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
3 août 2005 à 17:26
pas de quoi
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 33
3 août 2005 à 21:52
Un rapide coup d'oeil dans l'aide en ligne à propos de la fonction Copy :

functionCopy(S;Index,Count:Integer):string;
functionCopy(S;Index,Count:Integer):array;

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.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 33
3 août 2005 à 21:58
jlp_alexandre : MERCI DE NE PAS POSER PLUSIEURS FOIS LA MÊME QUESTION DANS LE FORUM
Au lieu de cela, lire les réponses données par les membres et ...

<HR color=#008000>
Penser à cliquer sur Réponse acceptée lorsque la réponse convient.
3
Rejoignez-nous