Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » fxconv et les *char
Tituya Hors ligne Rédacteur Points: 1773 Défis: 16 Message

fxconv et les *char

Posté le 06/08/2021 00:57

Salut !

Petite question concernant fxconv suite à un problème pour un projet en cours.
Je possède cette structure :

struct character {
    int x, y;
    char *name;
    char *dialog;
};

Rien de bien méchant ici, je souhaite avoir le dialogue du personnage ainsi que son nom. Ainsi, dans mon converters.py j'indique ceci :

def convert_character(input, output, params, target):
    with open(input,"r") as dialog:
        file = dialog.read().splitlines()

    o = fxconv.ObjectData()
    o += fxconv.u32((int)(file[0])) + fxconv.u32((int)(file[1]))
    o += fxconv.ref(bytes("Salut", 'utf-8'))
    o += fxconv.ref(bytes("Bonjour", 'utf-8'))
    
    fxconv.elf(o, output, "_" + params["name"], **target)

Les lignes intéressantes sont celles possédant une référence à une chaîne de caractère. Tout se passe bien durant la compilation, cependant lors de l'affichage de character.name, j'obtiens une union entre les deux char* : "SalutBonjour"
Aucun problème pour l'affichage de character.dialog

(Oui vous ne connaissez pas ce jeu, j'attends de progresser avant d'en parler plus en détail)

Je précise ne faire aucune modification de ces chaînes mais juste un affichage rien de plus simple.

Pendant que j'y suis, comment se passe l'encodage des accents avec gint ? En spécifiant un encodage utf-8 ils ne sont pas affichés.

Merci d'avance !

Fichier joint


Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 06/08/2021 09:42 | #


Ah c'est parce que tu n'as pas de 0 final.

o += fxconv.ref(bytes("Salut", 'utf-8') + bytes(1))

bytes(<n>) crée un tableau de n octets nuls, et un octet nul termine une chaîne.

Pour les accents le problème n'est pas dans l'encodage qui est bien UTF-8 même sur la calculatrice, mais dans la police : celle par défaut de gint n'a que les caractères ASCII pour des questions de place. Vois unicode-fonts pour des polices plus chargées

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 58 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd