[lazarus] Manipulation de chaine et extraction de caractère

Manipulation de chaine et extraction de caractère [lazarus] - Delphi/Pascal - Programmation

Marsh Posté le 18-10-2011 à 17:38:20    

Salut :hello:  
 
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..  :love:  
 
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 []..   :D  
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
Reply

Marsh Posté le 18-10-2011 à 17:38:20   

Reply

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 [].


---------------
last.fm
Reply

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..

Reply

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[] !

Reply

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.. :(

Reply

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  :sarcastic:  
  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


Message édité par Flagad'aware le 23-10-2011 à 20:49:35
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed