website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » Ecriture - lecture fichier sur plateformes différentes


Posté : 12-12-2014 16:30 icone du post

Exactement comme le dis Corto tu dois lire ton fichier donnée par donnée et non pas une struct entiére sinon tu risque des problèmes


cad que si ta struct est ainsi dans ton fichier


struct toto{
ULONG x;
WORD n;
UBYTE flag;
};
struct toto T;


Il faut faire


T.x    =GetLong(FB);
T.n    =GetWord(FB);
T.flag =GetByte(FB);


Au préalable j'ai chargé tout le fichier en mémoire dans un buffer et FB est ma structure qui me dit ou j'en suis de sa lecture


>Juste un point, sur ARM, l'ordre des octets est-il similaires à Intel ou Motorola ?
Qu'importe utilise le code ci dessus qui detecte mon ComputerByteOrder et ça marche à tout les coups


Alain


PS:
sur l'alignement des struct il existe des directives pour s'en passer comme
#pragma pack(2)
voir la doc des compilo


On peut aussi rajouter du "padding" aux structs perso pour les aligner de force à 32 bits
struct toto{
ULONG x;
WORD n,pad;
UBYTE flag,pad1,pad2,pad3;
};


Mais de toute façon lire des struct entiére dans le fichier est une mauvaise idée car il faudra réordonner les valeurs quand même donc les relire/écrire


Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1992&forum=14