Case 2 caractère

lan0sic Messages postés 25 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 6 mars 2005 - 17 févr. 2003 à 20:14
cs_DarkLord Messages postés 1 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 29 mars 2004 - 29 mars 2004 à 08:54
Bijour,
voila j'aimerait qu'un case test 2 caractère :

case (Edit.text[i]+Edit.text[i+1]) of
'ab' : begin
................

Mais ca marche pas, pourquoi? Ya t'il une autre solution.
MERCI bcp!!

Lanosic

3 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
17 févr. 2003 à 21:45
Le case ne fonctionne que sur les type Ordinaux ( entiers, enumérés, caractères...), les chaines ne font pas partie des ordinaux. Case n'est donc pas applicable dans ce cas.

La seule solution est d'utiliser des If Then Esle :

Chaine:=Edit.text[i]+Edit.text[i+1];
If Chaine='ab'
Then ....
Else If Chaine='bc'
Then ...
Else If ...


--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
0
lan0sic Messages postés 25 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 6 mars 2005
17 févr. 2003 à 22:17
Merci bcp. c'est cool d'avoir répondu!
j'y avait pas penser! Merci ;)

Lanosic
0
cs_DarkLord Messages postés 1 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 29 mars 2004
29 mars 2004 à 08:54
Voici comment faire un case avec des chaines de caractères...
Focntion qui peut être améliorée !

function StringIndex(s: string; list: array of string): integer;
var i: integer;
begin
result := -1;
for i := 0 to high(list) do
if AnsiCompareText(list[i], s) = 0 then
begin
result := i;
break;
end;
end;

case StringIndex(MaChaine, ['ceci', 'cela', 'autrechose']) of
0: FaireCeci;
1: FaireCela;
2: FaireAutreChose;
end;

@plus
0
Rejoignez-nous