1

J'ai une question à propos des pointeurs, tableaux, ... Voici mon problème :
BITMAP Image_pion_1 = ...
BITMAP Image_pion_2 = ...
BITMAP Image_pion_3 = ...
BITMAP Image_pion_4 = ...
sont des images de pions de différentes taille. Dans le corps de mon programme, le pointeur qui pointe vers l'image du pion se nomme "Pointeur_pion".
J'aimerai qu'en début de programme, je puisse faire pointer "Pointeur_pion" vers l'une des quatres images de pions, en fonction d'une variable allant de 1 à 4, appellée "zoom".
J'ai eu l'idée de regrouper les adresses des quatres images dans un tableau : int table_pions[5] = {&Image_pion1, &Image_pion2, &Image_pion3, &Image_pion4};
Puis de faire pointer "Pointeur_pion" vers table_pions[zoom - 1], de cette manière :
int *Pointeur_pion;
Pointeur_pion = table_pions[zoom - 1];
Mais TIGCC m'affiche plein d'erreurs :
Initialization makes integer from pointer without a cast.
Assignment makes pointer from integer without a cast.
Cannot emit 2 byte absolute reloc to 'Image_pion_1', 'Image_pion_2', 'Image_pion3', 'Image_pion4'.

2

int table_pions = {&Image_pion1, &Image_pion2, &Image_pion3, &Image_pion4};
t'as pas oublié les crochets déjà? (pour déclarer un tableau).
Et puis c'est un tableau de pointeur vers des bitmap donc on le déclare comme ca:
BITMAP *table_pions[] = {&Image_pion1, &Image_pion2, &Image_pion3, &Image_pion4};
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

3

Merci ! Ca marche.
Par contre, pourquoi faut-il mettre une étoile devant table_pion ?
Parce que pour déclarer un tableau de short, il en faut pas : short tab1[5] = {1, 2, 3, 4, 5};

4

Il n'a pas oublié les crochets, c'est juste qu'ils ont été transformés en code couleur... pour éviter ça utilise la balise [ pre ]
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

5

tismaster :
Par contre, pourquoi faut-il mettre une étoile devant table_pion ?
Parce que pour déclarer un tableau de short, il en faut pas : short tab1[5] = {1, 2, 3, 4, 5};

J'imagine que c'est pour différencier un tableau contenant des nombres d'un tableau contenant des adresses mémoire.

6

Ah, un topic sur les pointeurs trilove Ça faisait longtemps, ça rappelle des souvenirs... trilove
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

7

Avec la fonction DrawLine, ça provoque un bug si on dépasse les dimensions de l'écran ? J'ai essayé avec VTI, et ça ne plante pas la calculette. Pourtant dans la documentation de TIGCC, ya : "be harmful if called using parameters which are out of legal range (i.e. out of the screen area)".

8

le slignes de l'écran sont mémorisées les unes à la suite des autres
donc, si tu dépasses à gauche de l'écran, tu écriras sur la ligne précédente ; si tu dépasses à droite, sur la ligne suivante (ou les lignes précédentes/suivantes)
si tu dépasses en haut ou en bas de l'écran, par contre, tu écriras dans des zones mémoires qui contiennent d''autres données... ce qui peut faire planter la TI, selon les données que tu écrases
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

9

tismaster :
Merci ! Ca marche.
Par contre, pourquoi faut-il mettre une étoile devant table_pion ? Parce que pour déclarer un tableau de short, il en faut pas : short tab1[5] = {1, 2, 3, 4, 5};

Parce que ton tableau de pions contient des adresses de pions, et pas des pions directement.
Le type correspondant à "adresse de BITMAP" est "BITMAP *". Donc de la même manière que pour déclarer un tableau de short, tu écris : short tableau[] = {...};, là tu as BITMAP * tablrau[] = {...}
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

10

squale92 :
i tu dépasses en haut ou en bas de l'écran, par contre, tu écriras dans des zones mémoires qui contiennent d''autres données... ce qui peut faire planter la TI, selon les données que tu écrases


A priori, la f onction BitmapPut a l'air d'etre clippee...VTI ne plante pas tout du moins (vu que je ne me gene pas pour ecrire en dehors de l'ecran tongue)

11

naPO :
A priori, la f onction BitmapPut a l'air d'etre clippee..

oui, il me semble qu'elle l'est, de mémoire
cela dit, au post 6, il demandait pour la fonction DrawLine :
tismaster :
Avec la fonction DrawLine, ça provoque un bug si on dépasse les dimensions de l'écran ?

(et elle, il me semble qu'elle n'est pas clippée)

avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

Oui, la fonction BitmapPut est clippée, mais pas DrawLine.

13

Humm, OK.

Tu as regardé l'aide de TIGCC pour DrawClipLine (il me semble que ce bidulon existe) ?

14

Oui, ça existe DrawClipLine.