1

Je fais un programme dont l'ecran de lancement est en niveau de gris.
Je veus allouer les deux écrans nécessaire de façon dynamique, donc j'utilise la fontion malloc.
Voici la partie du code source qui me pose problème:

BITMAP *Intro_C0 = (BITMAP *)malloc(3840); //Réservation de la mémoire pour la partie en gris claire de l'mage d'intro.
BITMAP *Intro_C1 = (BITMAP *)malloc(3840); //Réservation de la mémoire pour la partie en gris foncé de l'image d'intro.
*Intro_C0={128,240,{image obtenue par Ti-Paint plus}};

*Intro_C1={128,240,{image obtenue par TI-Paint plus}};


Quand je compile j'obtient 2 erreurs identique"Parse error before '{' token" , les erreurs me renvoient juste après les signe"=" en rouge.

Qu'y a t'il d'incorrect dans cette partie de la source?

P.S: pourrait me donner un algorithme pour vérifier qu'il y a assez de mémoire libre...
[edit]Edité par slubman le 10-11-2001 à 23:18:15[/edit]
[edit]Edité par slubman le 10-11-2001 à 23:18:41[/edit]
[edit]Edité par slubman le 10-11-2001 à 23:19:01[/edit]
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

2

SetPlane(LIGHT_PLANE);
ClrScr();
BitmapPut (0, 0, ton_image, &(SCR_RECT){{0,0,160,100}}, A_NORMAL);
SetPlane(DARK_PLANE);
ClrScr();
BitmapPut (0, 0,ton_image_ avec masque, &(SCR_RECT){{0,0,160,100}}, A_NORMAL);

3

1. Il faut allouer 3844 octets (ne pas oublier les 2 octets de taille).
2. Il faut utiliser un cast constructor pour ta structure.
3. GCC ne sait pas copier des structures à taille variable. Il te faudra utiliser memcpy.

Donc:
BITMAP *Intro_C0 = (BITMAP *)malloc(3844); //Réservation de la mémoire pour la partie en gris claire de l'mage d'intro.
BITMAP *Intro_C1 = (BITMAP *)malloc(3844); //Réservation de la mémoire pour la partie en gris foncé de l'image d'intro.
memcpy(Intro_C0,&(BITMAP){128,240,{image obtenue par Ti-Paint plus}},3844);
memcpy(Intro_C1,&(BITMAP){128,240,{image obtenue par TI-Paint plus}},3844);


Mais en fait, le résultat est que tu auras ta structure BITMAP 2 fois, une fois dans le programme et une fois dans un bloc alloué. Je te conseille donc ceci:
BITMAP *Intro_C0=&(BITMAP){128,240,{image obtenue par Ti-Paint plus}};
BITMAP *Intro_C1=&(BITMAP){128,240,{image obtenue par Ti-Paint plus}};

qui utilise directement le BITMAP enregistré dans le programme.
[edit]Edité par Kevin Kofler le 11-11-2001 à 00:59:34[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

La raison pour laquelle je refuse cette méthode c'est qu'elle augmente la taille de mon programme (7,8 ko à 16,6 ko)sad
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

5

Il faudra de toute façon avoir une copie de tes 2 structures BITMAP dans ton programme. La calculatrice ne peut pas les deviner. Seule exception: si les 2 structures BITMAP sont identiques, tu n'as besoin que d'une copie. Tu peux alors remplacer la 2ème instruction de mon 2ème exemple par BITMAP *Intro_C1=Intro_C0;. Mais je doûte que cela ne soit le cas.
[edit]Edité par Kevin Kofler le 11-11-2001 à 01:45:04[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité