Transtypage

Signaler
Messages postés
29
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
7 janvier 2012
-
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
-
Question de base qui aa du etre X fois posée: Je veux extraire un caractère d'une chaine à l'aide de la fction Copy et l'affecter à un char (pour le tester). Le transtypage String vers Char est refusé. J'ai contourné le Pb par l'affreuse bidouille suivante:

saisie:=copy(edit1.Text,i-1,1);
pCaract:=@(saisie);
inc(pcaract);
caract:=pCaract^;

Bien sur ça ne marche que si saisie est une ShortString...avec une AnsiString c'est n'importe quoi.

il doit surement y avoir plus élégant! merci de m'aider.

Bonne prog et à +

5 réponses

Messages postés
24
Date d'inscription
mardi 14 mai 2002
Statut
Membre
Dernière intervention
5 décembre 2008
1
Pourquoi utiliser la fonction copy ?

Caract:=Edit1.Text[i-1];

Kakochime
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Dans les extraits de code donné ci-dessous, j'espère pour toi que i est strictement supérieur à 1 !

May Delphi be with you
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
Edit1.Text[i-1]; N'est pas autorisé car Text est une propriété.

Mais dans le cas présent il est plus simple d'écrire :
saisie:=edit1.Text;
caract:=Saisie[i];
Si Text n'est pas trop long, il vaut mieux utiliser Saisie de type ShortString, pour éviter les violation d'accès.

--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Désolé, mais la propriété Text, dans le cas d'un TEdit est de type String.
Edit1.Text[i-1]; est donc tout à fait valide (à condition, bien sûr, que i > 1).

Ne pas confondre avec certaines propriété Text (comme dans le cas de TQuery.Sql) qui sont de type TStrings, soit une liste de chaînes.

May Delphi be with you
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
Oui Maître !

Effectivement je me suis trompé... Et extraire un Char d'une propriété de type String est donc aussi possible. Sur les TMemo ou les TSql c'est aussi possible :
Memo1.Lines.Strings[0][1];
Memo1.Lines[0][1];
Memo1.Text[1];
Query1.SQL.Text[1];


--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st