# Lettres accentuées : SimpleText y arrive !



## Gandahar (16 Janvier 2011)

Bonjour, 

Je suis en train de reprogrammer en OSX un jeu que j'avais fait sur OS9 en langage C, et comme beaucoup je bute sur les caractères accentués.

Après avoir parcouru plusieurs forums et sites sur la programmation sous Xcode, j'ai vu que les gens conseillent systématiquement de passer en UTF8, ce que j'ai fait et qui me permet d'avancer.

Cependant, ce codage a un gros inconvénient, c'est de coder les lettres accentuées sur 2 octets !
Il est impossible de coder par exemple : 

```
char lettre = 'é';
```

Et la lettre accentuée dans un Str255 en UTF8 donne ceci (j'ai mis '\p' pour avoir la longueur de la phrase) : 

```
Str255 phrase = "\pé";     // phrase[0]=2, phrase[1]='\303' et phrase[2]='\251'
```

La question que je me pose est comment font les autres logiciels du marché qui y arrivent ? Il y aurait-il un format de variable ou une structure qui les accepte sur 1 caractère et qui permettrait de faire des printf corrects, de les mettre dans les noms de fichiers, de les utiliser dans des fonctions d'affichage de texte, etc... ?

Je demande ceci car j'ai vu que les exemples fournis sur le DVD avec Xcode contient 'SimpleText' et il y arrive ! Mais même avec le débugger, je n'arrive pas à comprendre comment il fait, c'est de la programmation compliquée pour moi : j'ai pu le suivre jusqu'à la lecture d'un fichier (avec des '/216', '/217' etc...), mais je n'ai pas pu voir comment il met le contenu dans la fenêtre. J'ai chargé SimpleText dans Xcode et je l'ai lancé avec mes paramètres habituels et ça marche ! Le seul problème est que je ne sais pas comment il fait.

-------------

_Pour info, je n'arrive absolument pas à voir quoi que ce soit sur le site d'Apple en tant d'ADC member enregistré.
Mais ça, c'est une autre histoire (horloge qui tourne indéfiniment ou résultat de recherche donnant un nombre de documents sans les afficher pour les sélectionner)._


----------



## ntx (16 Janvier 2011)

Il ne faut pas utiliser un char qui code sur 8 bits, un octet, mais un wide-char (wchar_t).


----------



## tatouille (16 Janvier 2011)

http://developer.apple.com/library/...eference/CFStringRef/Reference/reference.html

si c'est pour un editeur de texte tu peux suporter n'importe quelle representation, mais je te conseille d'avoir un storage unicode (CFString) ca evite de scanner/reallouer a chaque fois que tu demande une substring et tu ne peints  que la "representation" dans ta view comme cela l'utilisateur peut choisir l'encoding

t'es un peu rouillé avec la prog dit moi....

depuis toujours 

char -> int8_t obvious isn't it? sizeof char -> 8

unsigned short *uchar

enfin c'est du BABA que tu devrais vite fait apprendre, deplus, les sources de simpletext fournies sont simples.


----------



## Gandahar (17 Janvier 2011)

Merci à vous deux pour vos réponses ! 



> t'es un peu rouillé avec la prog dit moi....


C'est surtout que jusqu'à maintenant, je n'ai programmé QUE sous OS9 (ou des systèmes non Apple) et que cette question ne s'était jamais posée. Je me suis mis à OSX il y a un mois en réalisant les tutoriels du site du zéro et en analysant des programmes exemples pour en comprendre le fonctionnement. 

Genre j'ai passé quelques heures à découvrir des trucs aussi simples que comment récupérer le répertoire courant dans son programme, créer des fichiers dans un sous-répertoire à partir du répertoire courant, comment mettre à jour le type de fichier et le creator, comment utiliser l'explorateur de fichier quand on clique sur le menu "Open", etc...

Pour info, c'est un jeu de conquête galactique que j'écris, basé sur l'univers de Warhammer 40,000 pour les connaisseurs. Il était presque terminé sur OS9, mais j'ai fini par atteindre des limites et je pense qu'OSX sans l'émulation Classic peut les passer (capacité mémoire, vitesse d'affichage graphique, meilleure utilisation du bi-processeur).


----------



## Gandahar (4 Février 2011)

Bonsoir, 

Un petit passage pour dire que j'ai étudié les CFString et que ça répond parfaitement à ma problématique. Je vous remercie.


----------

