2016-07-13 3 views
0

Je travaille avec Unicode. Je veux trouver la position d'un char dans un UnicodeString.Trouver la position d'un unicodechar dans unicodestring

Par exemple: la position de á dans lùáxõ est 3.

J'ai essayé plusieurs façons, Google'd beaucoup, lisez la documentation Lazarus, mais rien ne fonctionne. J'utilise Lazarus 1.6 et FPC 3.x.

+1

Certes, vous utilisez 'Pos' –

+0

Utilisez Pos, PosEx, UTF8Pos, UTF16Pos, Fastcode Pos, etc ... et non le travail. Travaillez juste après la réponse @Marco. Je ne peux pas remettre en cause votre commentaire à cause de ma réputation. merci – tandat

+0

Pos fonctionne bien votre code doit être défectueux en quelque sorte –

Répondre

3

Utiliser comme dit David pos(), mais pour éviter des problèmes avec la surcharge assurez-vous que les deux arguments sont unicode explicitement typées *

Par ex copier-coller dans ce bloc-notes, et économisez avec utf-8 encodage

{$mode delphi} 
{$codepage utf8} // source encoding is utf8, just in case. 

var c : unicodechar; 
    s : unicodestring; 
    i : Integer; 
begin 
    s:='lùáxõ'; 
    c:='á'; // or whatever codepoint value of the char is. 
    i:=pos(c,s); 
    writeln(i); 
end. 
+0

Oui, ça marche après avoir ajouté {$ codepage utf8}. Merci beaucoup. Je suis juste revenue à ma langue préférée Pascal quelques jours. – tandat