Transtypage

jlg75 Messages postés 28 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 7 janvier 2012 - 18 janv. 2003 à 10:05
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 19 janv. 2003 à 00:01
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

kakochime Messages postés 24 Date d'inscription mardi 14 mai 2002 Statut Membre Dernière intervention 5 décembre 2008 1
18 janv. 2003 à 10:43
Pourquoi utiliser la fonction copy ?

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

Kakochime
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
18 janv. 2003 à 12: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
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
18 janv. 2003 à 20:13
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
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
18 janv. 2003 à 21:17
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
0

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

Posez votre question
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
19 janv. 2003 à 00:01
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
0
Rejoignez-nous