neria Le 21/03/2004 à 18:40 Salut tous le monde !
Je voudrais savoir comment lire un fichier binaire avec la commande peek_bit.
@+ Neria
lire un fichier binaire ???
c pa plutôt avec fopen ?
neria Le 21/03/2004 à 18:50 Oui mais je voudrais le lire bit par bit
je ne sais pas exactement comment tu veux faire, mais pour t'aider, pour avoir l'adresse du début d'un fichier, tu fais
FILE *f;
char *adr;
f = fopen(fichier, "rb");
adr = ftell(f);
neria Le 21/03/2004 à 19:02 En fait quand je le lit il ne m'affiche que des 0 :
short Octet[8] ;
Fichier = fopen(Chemin,"rb") ;
char adresse = ftell(Fichier) ;
for ( b=8;b>0;b--)
Octet[b] = peek_bit(adresse,1) ;
for ( b=1;b<9;b++)
printf("%i",Octet[b]) ;
ngetchx() ;
NOTE : Le fichier existe et il n'est pas vide
neria Le 21/03/2004 à 20:01 Si je met l'astérisque il y a un message d'avertissement "initialize makes pointer without cast", et les for sont dans les boucles : à chaque fois il y a 8 bits ( que des 0 ) qui apparaissent
Il y a une faute de frappe dans ton code:
peek_bit(adresse,1);
devrait être:
peek_bit(adresse,b);
neria Le 24/03/2004 à 13:39 Si j'ai bien compris le second argument est la position dans le fichier ?
neria Le 24/03/2004 à 15:28 Que dois je faire alors ?
les fonctions native de AMS (et ou bidouiller avec la structure de fp) permet par contre de recuperer l'addresse mémoire, mais attention, si le fichier est en ram.. cette addresse peu changer..

Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.
neria Le 24/03/2004 à 15:45 Que dois je faire pour obtenir cette adresse ?
Regarde dans les fonctions commençant par Sym (SymFind...), puis trouve le handle du fichier, puis utilises HLock dessus pour verrouiller le handle et trouver l'adresse du fichier (après, il ne faut pas oublier d'utiliser HeapUnlock pour le déverrouiller)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Nan mais sinon, c possible de définir une macro get_bit qui agirait sur un nombre au lieu d'une addresse mémoire. Et puis c pas très malin d'utiliser une macro comme peek_bit qui a été faite pour je ne sais quelle raison (enfin, c p ê pour la lecture les ports) , alors qu'on peut se débrouiller pour faire ça en C standard, sans asm inline (certes, ce n'est pas aussi optimisé, mais c certainement plus propre).
EDIT: Post croisé
Thibaut Le 24/03/2004 à 15:56Edité par Boo le 24/03/2004 à 16:03 Tu te mets un doigt dans l'anus et tu tapes cher TIGCC je veux l'adresse du fichier.
plus compliquée :char *adresse = HeapDeref(Fichier->handle) ;Si ça ne fonctionne pas, il y a une solutionMais l'adresse peut changer en cours de route, donc le mieux est de figer le fichier avant par HeapLock(Fichier->handle) et de le libérer avant close(Fichier) avec HeapUnlock(Fichier->handle).
Y'a peut-être plus élégant.

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
tu as oublié une étoile ^^
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
neria Le 24/03/2004 à 16:07 Le second argument de peek_bit est la position dans le fichier, non ?
PS : J'EN AIT MARRE DE VOIR TOUS CES 0 !!!!!!!!!!!
neria Le 24/03/2004 à 16:35 Merci ! Et pour passer tous les octets en revue ?
Quand tu arrives à la fin d'un octet tu incrémentes l'adresse.
Disons que tu parcours le fichier de gauche à droite. Le second argument commence à 7 et s'arrête à 0. Le premier argument est incrémenté de 1 unité lorsque le second passe de 0 à 7.
Tu veux un exemple pour implémenter ça ?

Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
neria Le 24/03/2004 à 16:59 Ca marche, c'est génial !!!!
Un seul petit problème ( et là je vais passer vraiment pour un con ) Comment obtient-on la taille d'un fichier ?