Site News
Research
Texts
X-philo
Code
KB
Awards
Links
Site Map





Copyright (c)
2000-04
by Newsdee

    J'ai une erreur de transtypage!
"Static unsigned char far * video_buffer =(unsigned char *)(0xa0000000l) retourne une erreur de transtypage".
(en reponse a Aubin)

Le probleme de transtypage peut apparaitre a plusieurs niveaux, et sa resolution depend du compilateur.

Tout d'abord assure-toi de ne pas avoir oublie le " * ". D'apres ton mail le compilateur se plaint de ne pas pouvoir convertir un long en char, mais tu n'as pas ecrit de " * " - ce qu'on veut c'est convertir un (long) en (char *), qui est un pointeur pour la memoire. A priori il ne devrait pas avoir de probleme puisque les pointeurs sont (sous DOS au moins) ecrits sur une addresse "long".

Mais ca peut etre aussi un probleme de compilateur. Chaque type de chiffre est encode sur un ou plusieurs octets (bytes), mais malheureusement cela change selon les systemes et les compilateurs (par ex. ce ne sont pas les memes sous DOS et UNIX). Dans tous les cas, 1 octet = 1 byte = 256 possibilites (00 -> FF)

Pour illustrer, voici les different types d'encodage sous DOS:

short int = 1 byte (ex. A0)
int  = 2 bytes (ex. A0A0) = "word"
long int = 4 bytes (ex. a0a0:a0a0) = "dword" ou "double word"

char = 1 byte (ex. A0)
char * = 4 bytes

Pourquoi cette difference entre char et (char *)? Eh bien parce que le deuxieme n'est pas un charactere, mais une addresse en memoire, qui, sous DOS, sont encodees sur 4 octets.

Si tu es sous Windows, tu devrais essayer de compiler pour le mode console car le systeme peut te bloquer l'acces a certaines addresses en memoire.
Sous Windows aussi il est plus facile d'utiliser une librairie graphique, comme Allegro ( http://www.talula.demon.co.uk/allegro/ ). Tu peux voir la source d'un programme fait avec Allegro (sous DOS et Windows) sur ma page: http://gerard.imbert.free.fr/index.php?page=statproject . Quoi qu'il en soit, assure-toi de connaitre les encodages des entiers dans le systeme sous lequel tu codes, car ca te sera utile pour la suite.

Voila, j'espere que ca aide et que ce n'est pas trop confus ;-)

Bonne chance!

- Newsdee, le 22 decembre 2003.