J'ai mis à jour une application de Delphi 2007 à Delphi 2010, tout allait bien, sauf une déclaration qui a compilé bien, mais ne fonctionne pas qui est:CharInSet ne fonctionne pas avec des lettres non anglaises?
If Edit1.Text[1] in ['S','س'] then
ShowMessage('Found')
else
ShowMessage('Not Found')
Cependant, je savais que non, alors je l'ai changé à CharInSet
If CharinSet(Edit1.Text[1],['S','س']) then
ShowMessage('Found')
else
ShowMessage('Not Found')
mais il n'a jamais travaillé lorsque la chaîne est س
, mais toujours travailler avec S
, même je rejetterai la edt1.Text 1 avec AnsiChar il toujours fonctionne pas les lettres arabes.
Je fais quelque chose de mal, ou ce n'est pas la façon dont CharInSet
fonctionne ?, ou c'est un bug dans CharinSet
?
MISE À JOUR:
Mon grand ami Issam Ali a suggéré une autre solution qui a travaillé très bien comme elle:
If CharinSet(AnsiString(edt1.Text)[1],['S','س']) then
De quel type est 'edt1'? – dan04
@ dan04, c'est TEdit, j'ai changé le code pour montrer qu'il est comme edit au lieu de edt –
Le compilateur émet l'avertissement suivant avec votre code CharInSet: [Avertissement DCC] Unit5.pas (30): W1061 Réduction donnée constante WideChar (# $ 0633) à AnsiChar perdu information –