IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Ecrire au format binaire dans un fichier


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Ecrire au format binaire dans un fichier
    bonjour,
    je suis bloqué. Mon but est de lire et écrire des fichiers qui ont un format précis. Je parviens à lire. Mais lorsque je veux écrire que n'arrive pas à trouver les bons mots clés...

    J'ai une structure de fichier de ce type:
    0x00000 4 (char array) CRE
    0x0004 4 (char array) V1.0
    0x0008 4 (strref) Long name
    0x0014 4 (dword) XP (gained for killing this creature)

    Si j'ouvre le fichier, il est illisible.

    Comment vous feriez si on vous demande d'écrire '1501' au format '0x0014 4 (dword)'?

    Je ne trouve pas les mots clés adéquats.

    Merci de votre aide

    Coco

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    732
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 732
    Points : 1 650
    Points
    1 650
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ST_StrRef est une structure
    	// à vous de corriger ça, car je n'ai pas le détail de strref
    	tabRef est un tableau fixe de 3 entiers sur 4
    FIN
     
    ST_Toto est une structure
    	sFourCC1 est une chaine fixe sur 4
    	sFourCC2 est une chaine fixe sur 4
    	stLongName est un ST_StrRef
    	nXP est un entier sans signe sur 4
    FIN
    Code approximatif non testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    stToto est un ST_Toto
    nFic est un entier = -1
     
    nFic = fOuvre("lefichier")
    SI nFic = -1 ALORS
    	// Erreur
    FIN
    fLit(nFic, Dimension(stToto), &stToto)
    SI stToto.sFourCC1 [= "CRE" ET stToto.sFourCC2 = "V1.0" ALORS
    	// Traitement :
    	stToto.nXP += 42
    	// Mise à jour :
    	fPositionne(nFic, 0, fpDébut)
    	fEcrit(nFic, &stToto, Dimension(stToto))
    FIN
    fFerme(nFic)
    Notez que stLongName semble être un pointeur vers une chaîne située plus loin dans le fichier. Ça veut dire que pour lire cette chaîne il faut faire un fPositionne, et pour la modifier ça sera plus compliqué, car ça entrainera probablement le décalage d'autres chaînes, elles aussi pointées par d'autres objets.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 815
    Points
    815
    Par défaut
    Bonjour.

    @ Cocrane
    Si ton but c'est d'écrire un fichier au format CRE, tu devrais commencer par définir un type de données structure pour représenter le format de fichier.
    Après tu crées une variable à partir de ce type de structure.
    Ensuite tu la complètes.
    Enfin tu peux l'écrire dans un fichier externe (fichier texte-binaire).
    Mais j'ai un doute.
    Je ne sais pas si tu peux écrire directement la variable du type structure ou s'il faut d'abord la transférer dans une variable buffer et puis écrire cette variable buffer.

    Le format CRE dont je parle, c'est là... http://iesdp.gibberlings3.net/file_f...ats/cre_v1.htm
    C'est un gros morceau.

    Citation Envoyé par Cocrane Voir le message
    Comment vous feriez si on vous demande d'écrire '1501' au format '0x00144 (dword)'?
    Je ne comprends pas ta question.
    Faut-il comprendre que '1501' est un nombre représenté en base décimale et que tu veux le représenter en base hexadécimale, comme c'est le cas pour '0x00144' ?

Discussions similaires

  1. Ecrire en binaire dans un fichier
    Par Invité dans le forum VB.NET
    Réponses: 4
    Dernier message: 07/12/2013, 16h30
  2. Ecrire du code binaire dans un fichier
    Par sorry60 dans le forum Général Python
    Réponses: 10
    Dernier message: 02/04/2009, 20h50
  3. Ecrire & Lire des énumérés dans un fichier Texte
    Par WebPac dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h04
  4. Réponses: 5
    Dernier message: 22/03/2006, 13h25
  5. Réponses: 11
    Dernier message: 13/10/2004, 00h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo