Récupérer la taille d'un fichier binaire [C++] - C++ - Programmation
Marsh Posté le 08-11-2010 à 00:48:41
En supposant que tu utilises l'api windows, il y a http://msdn.microsoft.com/en-us/li [...] 85%29.aspx
Sinon, si tu contrôles le format du fichier binaire, tu peux y mettre au début/ a la fin une structure pour indiquer le nombre d'enregistrement qu'il contient...
Marsh Posté le 08-11-2010 à 01:24:40
Pas moyens via la librairie fstream ?
edit : c'est bon, voilà mon code
Code :
|
par contre, comment je peux faire passer un tableau d'une fonction à l'autre ?
Marsh Posté le 08-11-2010 à 08:24:30
en le passant en paramètre :€
Qu'entends tu par tableau ? std::vector j'espere ?
Marsh Posté le 08-11-2010 à 10:22:14
Terminapor a écrit : Pas moyens via la librairie fstream ?
|
pour une application 32 bits, ton code ne fonctionnera pas pour les fichiers de plus de 4Go, tu es donc conscient que ce que tu as écrit devrait être considéré comme faux ?
Marsh Posté le 08-11-2010 à 12:10:41
Joel F a écrit : en le passant en paramètre :€ |
un array tout con de cette forme : tab[x][y]
Donc j'suis sensé faire €montableau[x][y] ?
j'ai testé en faisant pointer sur ma fonction, le truc c'est qu'il faut que je l'exporte en double, et code::blocks me dit ça :
error: invalid types `double[8][0u][double]' for array subscript
theshockwave a écrit : |
Oui mais c'est pas grave (pour ma part), les fichiers qu'utilisera ma dll fera quoi... 8KB max ? jamais ça dépassera le giga
Marsh Posté le 08-11-2010 à 13:50:29
L'usage habituel, c'est fstat sous unix linux et son pote _fstat (et sa famille _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32) sous windows.
Si tu ne veux que du code windows, tu as aussi _filelength, (et _filelengthi64) qui sont des versions directes de ce qu'on peut faire avec _fstat (et _fstati64)
A+,
Marsh Posté le 08-11-2010 à 15:22:10
Pour utiliser les fonctions standard en 64 bits, il faut ajouter cela à la compilation :
Code :
|
si ce n'est pas mis, un fread (ou autre) échouera après 2GO.
Je ne sais pas si c'est nécessaire pour fstat.
Marsh Posté le 08-11-2010 à 17:04:29
Ben comme je disais, ça dépassera jamais le giga le fichier que je "scan", donc la fonction que j'ai posté plus haut marche parfaitement
Maintenant, j'ai une tite question
Donc, je dois appeler ma DLL et lui dire de stocker toute les donnés d'un fichier définie dans un array 2D, no problem.
Maintenant, que se passera-t-il si j'appelle deux fois cette fonction avec deux fichiers différent ? ça ré-écrira sur mon ancien array, ou bien les pointeur de ces arrays seront différent
Merci d'vot' aide
Marsh Posté le 08-11-2010 à 17:27:46
cela dépend comment est déclaré ton tableau. Sans code, on ne pourra pas te dire grand chose.
Marsh Posté le 08-11-2010 à 17:33:56
yes, voilà :
Code :
|
Mais il me dit que la seul ligne de animation_get (second dll_export) est pas bonne
"error: invalid types `char[8][0u][double]' for array subscript"
Que faire ?
j'ai déjà essayé de changer mon tableau en double ou quoi, mais ça n'y change rien
Marsh Posté le 08-11-2010 à 17:35:36
ton tableau est déclaré en variable globale, chaque appel en écriture sur celui-ci écrasera les valeurs précédentes.
Marsh Posté le 08-11-2010 à 17:36:35
ouais donc faut le mettre dans la fonction animation_load() c'est ça ?
Et pour le problème de la dernière ligne ?
edit : bon, j'l'ai faite marché finalement, mais quand j'assigne des valeurs à mon tableau......... ça marche paaaass
f.read((char*) &absdata, 2);
int pos = absdata*sign;
animationdata[0][frame] = absdata*sign;
vlah le code, frame est à 0, sign à -1, halp !
Marsh Posté le 07-11-2010 à 23:26:47
Bonsoiiiir \o/
Bon, j'suis en plein dans la prog d'une DLL, et je dois récupérer des valeurs dans un fichier en binaire (ça marche niquel), maintenant faut que j'exécute en boucle cette action (loop for vu que je rempli un tableau 2D), mais comment je peux récupérer la taille du fichier ? Histoire que ma loop for marche bien
Merci d'votre aide
---------------
Perhaps you don't deserve to breathe