fstream qui pète un plomb ? - C++ - Programmation
Marsh Posté le 27-11-2010 à 23:31:16
char[2] ne fait pas forcément un short, ça dépend des architectures or c'est que tu sous-entends avec le read(&xxx,2). ça peut venir de là...
Perso, l'utilisation massive de seekg ne me plait gère (ainsi que les binpos+=xxx).
Pourquoi ne fais-tu pas plutôt l'utilisation de >>, c'est fait pour non ?
Par exemple (j'ai pas testé)
Code :
|
Marsh Posté le 28-11-2010 à 11:34:30
dreameddeath a écrit : char[2] ne fait pas forcément un short, ça dépend des architectures or c'est que tu sous-entends avec le read(&xxx,2). ça peut venir de là...
|
Le code a pas marché
la structure de mon fichier est comme ça : signx(1B) 255 pour -1 et 0 pour 1 ; posx(2B) unsigned short ; signy(1B) 255 pour -1 et 0 pour 1 ; posy(2B) unsigned short ; frame_index(2B) unsigned short ; xscale(1B) 255 pour -1 et 0 pour 1 ; yscale(1B) 255 pour -1 et 0 pour 1 ; layer (1B) unsigned char
Comment j'peux adapter ton code ? j'comprends pas trop
Marsh Posté le 28-11-2010 à 16:18:27
Ok, bon, c'était mon fichier qui était bidon
Donc maintenant ça marche niquel, et maintenant faut que je fasse passer une adresse, je m'explique :
ma DLL charge les données d'un fichier qu'elle stocke dans son tableau (local), j'ai besoin de pouvoir me servir de plein de tableaux, donc je suis sensé faire passer son pointeur pour ensuite récupérer les données dans le bon tableau, c'est ça ? comment je peux retrouver un tableau via une adresse en double ? j'ai lu comme quoi fallait utiliser &lepointeur, mais je sais pas trop..
halp !
edit : le problème vient de la :
Code :
|
marray est sensé être l'adresse du tableau en double, faut que je fasse quoi pour qu'il la reprenne bien ?
Marsh Posté le 02-12-2010 à 22:20:04
ça marche pas non plus
jsuis sensé faire quoi ?
Marsh Posté le 02-12-2010 à 22:43:21
ReplyMarsh Posté le 04-12-2010 à 21:03:36
Joel F a écrit : double get_x(double* marray,double n) |
A marche pas non plus
ça peut venir d'un mauvais export d'array ?
Code :
|
Marsh Posté le 05-12-2010 à 11:00:24
mais pourquoi cast tu ton pointeur en int alors que tu renvoies un double ?
GOTO un livre de C++ là :E
Marsh Posté le 05-12-2010 à 11:08:44
Joel F a écrit : mais pourquoi cast tu ton pointeur en int alors que tu renvoies un double ? |
pasqu'après y'a une autre fonction qui le reprend et qui l'exporte en double, sinon j'ai une erreur "pointer value used where a floating point value where expected"
Marsh Posté le 05-12-2010 à 14:41:24
non mais attends ... tu sais ce qu'est un pointeur au moins ? TU es conscient que tu écris un truc qui n'a aucun sens ?
Marsh Posté le 05-12-2010 à 14:56:13
Joel F a écrit : non mais attends ... tu sais ce qu'est un pointeur au moins ? TU es conscient que tu écris un truc qui n'a aucun sens ? |
Bah c'est l'adresse où y'a mon tableau, non ?
Marsh Posté le 05-12-2010 à 15:39:22
ca te choque pas de caster un pointeur de vector en double ?
Au lieu de caster comme un gros porc pour masquer tes erreurs, apprends à lire et réfléchi sur l'effet désiré de ta méthode.
Marsh Posté le 05-12-2010 à 15:53:06
Joel F a écrit : ca te choque pas de caster un pointeur de vector en double ? |
Oui mais je peux pas faire autrement, je dois récupérer cette valeur en double.
Marsh Posté le 05-12-2010 à 16:45:15
ReplyMarsh Posté le 05-12-2010 à 17:26:43
Joel F a écrit : non mais arretes ... réfléchis 10s au lieu d'écrire n'imp. |
Ben, c'est la première fois que je touche au c++, j'suis déjà content d'avoir pu écrire tout ce bordel
Mais là j'sais vraiment pas comment m'y prendre, j'ai vu des infos sur les '*' et '&' mais j'arrive pas à le faire marcher..
Marsh Posté le 11-12-2010 à 17:10:23
Baah, j'm'en sors pas
j'ai abandonné l'idée de faire passer des adresses en double, c'est trop crasseux
Du coups j'ai tenté de stocker mes tableaux dans un array global, voilà mon code :
Code :
|
Mais voilà, j'ai cette erreur : "invalid conversion from `std::vector<animdata, std::allocator<animdata> >*' to `unsigned int' " dans la fontion set_value(array,etc) et aussi "invalid type argument of `unary*' sur tout les lignes (*array)[n] d'où vient l'erreur ?
Marsh Posté le 12-12-2010 à 19:30:18
même caca que la dernière fois, tu code sans savoir.
Une adresse n'est pas un entier ni un double. Réfléchi à l'adaptation des tes interfaces de fonctions plutot que de faire n'imp ...
Vraiment, relit un bouqin de C.
Marsh Posté le 19-12-2010 à 19:41:07
Aah, ben j'ai finalement compris
Maintenant, j'ai un autre ptit problème :
Mes vecteur sont stocké dans un vecteur global (garray), chacun ont un numéro de ligne, par exemple (*garray)[0].anim (c'est une structure avec un vector<animdata> *anim et un unsigned int framecount) ça sera le premier vecteur.
dans ma fonction double get_x(double id,double line) je sais pas comment récupérer le vecteur via un truc du style (*garray)[id].anim, et le membre nommé x de sa structure; en gros je voudrais fabriquer un vecteur appelé 'tarray' qui récupère tout les informations du vecteur n°0 stocké dans garray par exemple
Merci d'vot aide !
Marsh Posté le 27-11-2010 à 22:31:31
Bonsoir \o/
Bon, voilà, j'ai un drôle de problème avec la libraire fstream, mon fichier se découpe comme ça (animation pour un jeu) sign(x),pos(x),sign(y),pos(y),frame_index,xscale,yscale,layer.
Lorsque je lis toute ces valeurs avec mon code, bah au bout de la 9ème frame il pète un plomb (frame_index a rien à voir avec la frame de l'animation), voilà mon code :
on dirait qu'il se décale progressivement, en gros au lieu de lire 05 00 (les bytes sont inversé, donc en dec ça fait 5), il me lit 00 05 (1280 en dec)
D'où viens mon problème ?
Merci d'votre aide et @++
---------------
Perhaps you don't deserve to breathe