Manipulation de chaine et extraction de caractère [lazarus] - Delphi/Pascal - Programmation
Marsh Posté le 18-10-2011 à 23:18:42
ca ressemble à de l'utf8, oui, regarde les fonctions que tu as à ta disposition pour manipuler les chaînes dans ce jeu de caractères(éventuellement appelées MBCS pour Multi Byte Character System)
En tout cas, à moins de faire une conversion (destructive) vers de l'ascii, tu ne pourras probablement pas utiliser ton opérateur [].
Marsh Posté le 19-10-2011 à 16:02:12
Merci, j'ai trouvé UTF8toAnsi mais ça remplace certain caractères (comme le £) par un espace..
c'est bien chiant le mbcs..
Marsh Posté le 22-10-2011 à 20:21:46
bien le bonsoir
y a pas Ansipos(); qui irais peut être ou un équivalent:
http://www.delphibasics.co.uk/RTL.asp?Name=AnsiPos
c'est vrai qu'il est pratique ce string[] !
Marsh Posté le 23-10-2011 à 00:46:34
ah merci je vais étudier cette fonction.
c'est décourageant:
j'essaye d'écrire des caractère accentué dans un memo (memo.lines.ad('éé')), ça me renvoi toujours n'importe quoi à la place du é.. (genre un ù etc..)
j'ai essayé les utf8toansi,ansitoutf8,utf8decode,utf8decode, de changer le type de codage du source..rien n'y fait..
Marsh Posté le 23-10-2011 à 20:41:06
ouais je sais pas si tu peut faire grand chose avec ansipos mais y a peu être des ansiXXX qui peuvent servir...
avec lazarus 0.9.30 et fpc 2.4.2 si je fait ça:
memo1.lines.add('éé'); // ça roule y a bien éé
str:='£^%µ²&é#§{[|çà@]}+-*$°~';
memo1.lines.add(str); // tout est bien affiché
//showmessage(inttostr(length(str))); // length=31 yes
showmessage(str[1]); // message vide
showmessage(str[2]); // message vide
showmessage(str[3]); // y a bien ^ comme toi
c'est certainement un bug de fpc ou lazarus essaye de voir sur leur forums si y z'en parlent pas
Edit: sous delphi7 tout est ok
Marsh Posté le 18-10-2011 à 17:38:20
Salut
Bon j'ai repris un peu la prog en pascal que j'ai un peu oubliée depuis quelques années.
J'ai pris Lazarus pour retrouver un Delphi like avec freepascal..
Mais mon problème est le suivant, je crée une chaine qui contient '£^%µ²&é#§{[|çà@]}+-*$°~', la fonction length me donne 31 caractères alors qu'il n'y en a que 23, et si je fait chaine[1] je n'ai pas '£' mais un '?' et j'ai chaine[2] qui ne contient rien..par contre chaine[3] correspond bien à '^'.
Je soupçonne une histoire de chaine ansi/utf etc, j'ai tenté un {$H-} mais ça ne change rien, je n'y comprends pas grand chose et ça ne me dit pas comment je peux revenir à cette bonne vieille méthode des []..
Une idée ?
la recherche sur le net ne me donne pas grand chose..
Message édité par alzorglub le 18-10-2011 à 17:40:07