30

ça y est j'ai reussi a utiliser une 3° fonction dans DialogNew,merci bcp!

Mais dans la doc de TIGCC il est question de 'absolute address' en rapport avec cette fonction.
Comment je fais pour recuperer dans l'exemple suivant ce qu'il y a dans le request x ?
(sachant que ce que je vais faire apres c'est aditionner l'ensemble des contenus des requests
pour avoir le resultat a la place du 100%, dans x==6 : ) )

char FctPerso(short x,char y)
{
if (x==1) { };
if (x==2) { };
if (x==3) { };
if (x==4) { };
if (x==5) { };

return 1 ;
}
// Main Function
void _main(void)
{
char buffer[5][4] = {"20","20","20","20","20"} ;
HANDLE handle = DialogNew (16*7, 100,FctPerso);
DialogAddTitle (handle, "Activity allocations", BT_OK, BT_NONE);//x=0
DialogAddRequest (handle, 3, 15, "Agriculture:", 0, 3, 4);//x=1
DialogAddRequest (handle, 3, 27, "Taxes: ", 4, 3, 4);//x=2
DialogAddRequest (handle, 3, 39, "Industrie: ", 8, 3, 4);//x=3
DialogAddRequest (handle, 3, 51, "Militaire: ", 12, 3, 4);//x=4
DialogAddRequest (handle, 3, 63, "Mining: ", 16, 3, 4);//x=5
DialogAddText (handle, 3, 75, "Total: 100%");//x=6
if (DialogDo (handle, CENTER, CENTER, buffer, NULL) == KEY_ENTER)
HeapFree (handle);
projet en cours XiaoXiaoShow

31

non jackiechan,je parle de la lib dont Kevin Kofler a sorti la documentation,celle qui contient la nouvelle fonction.Tu penses bien que je n'aurait pas posé une telle question pour rien!
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

32

Est ce qu'au moins tu sait te servir de DialogNewSimple,qui porte bien son nom?
Parce que la tu te tracasse la tete pour rien!
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

33

XDanger
(#5) a écrit : (je veux dire, un dialog qui n'utilise pas des trucs qui sont dans les updates non encore ajoutés à TIGCCLIB) ?
Kevin Kofler
a écrit : C'est dans les updates, il me semble. Mais on n'a pas encore eu le temps de les intégrer à la documentation [...]


Voilà c'est bien dans TIGCCLIB, et non pas dans une nouvelle librairie.
avatar
;)

34

En fait,tu m'en veux jackiechan?
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

35

Tiens Elynx
j'ai repris ton programme short agriculture,/*...*/,mining; HANDLE handle = DialogNewSimple(16*7, 100);  DialogAddTitle (handle, "Activity allocations", BT_OK, BT_NONE);//x=0  DialogAddRequest (handle, 3, 15, "Agriculture:", 0, 3, 4);//x=1  DialogAddRequest (handle, 3, 27, "Taxes: ", 4, 3, 4);//x=2  DialogAddRequest (handle, 3, 39, "Industrie: ", 8, 3, 4);//x=3  DialogAddRequest (handle, 3, 51, "Militaire: ", 12, 3, 4);//x=4  DialogAddRequest (handle, 3, 63, "Mining: ", 16, 3, 4);//x=5  DialogAddText (handle, 3, 75, "Total: 100%");//x=6  if (DialogDo (handle, CENTER, CENTER, buffer, NULL) == KEY_ENTER)  HeapFree (handle);  agriculture=atoi(buffer[1]); //... mining=atoi(buffer[5]); //Voila tout est pret

(atoi de stdlib.h convertit une chaine en int)
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

36

Message #32:et il s'agit de dialog.h?
Un newbie c'est là pour apprendre.
Bravo Boo et Yaro,votre site est génial!

37

Elynx a écrit :
ça y est j'ai reussi a utiliser une 3° fonction dans DialogNew,merci bcp!

Mais dans la doc de TIGCC il est question de 'absolute address' en rapport avec cette fonction.
Comment je fais pour recuperer dans l'exemple suivant ce qu'il y a dans le request x ?
(sachant que ce que je vais faire apres c'est aditionner l'ensemble des contenus des requests
pour avoir le resultat a la place du 100%, dans x==6 : ) )

char FctPerso(short x,char y)
{
if (x==1) { };
if (x==2) { };
if (x==3) { };
if (x==4) { };
if (x==5) { };

return 1 ;
}
// Main Function
void _main(void)
{
char buffer[5][4] = {"20","20","20","20","20"} ;
HANDLE handle = DialogNew (16*7, 100,FctPerso);
DialogAddTitle (handle, "Activity allocations", BT_OK, BT_NONE);//x=0
DialogAddRequest (handle, 3, 15, "Agriculture:", 0, 3, 4);//x=1
DialogAddRequest (handle, 3, 27, "Taxes: ", 4, 3, 4);//x=2
DialogAddRequest (handle, 3, 39, "Industrie: ", 8, 3, 4);//x=3
DialogAddRequest (handle, 3, 51, "Militaire: ", 12, 3, 4);//x=4
DialogAddRequest (handle, 3, 63, "Mining: ", 16, 3, 4);//x=5
DialogAddText (handle, 3, 75, "Total: 100%");//x=6
if (DialogDo (handle, CENTER, CENTER, buffer, NULL) == KEY_ENTER) HeapFree (handle);

buffer[0], buffer[1], ... tout bêtement. Le tableau 2D est mis en place de manière idéale pour cela.
ordivore
a écrit : Message #32:et il s'agit de dialog.h?

Oui.
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é

38

heu..en fait,je veux utiliser cette fonction de newdialog car elle s'active alors qu'on est encore dans le dialog-box comme ça l'utilisateur peut voir le total des requests dans la derniere ligne addtext dès qu'il change qlqchose...
projet en cours XiaoXiaoShow

39

Ah tiens, je vois ton problème là.

Il faut mettre un pointeur global vers ton buffer si tu veux l'utiliser dans FctPerso:
char (*bufferptr)[4];
et dans _main, tu mets:
bufferptr=buffer;

Ou alors tu mets FctPerso à l'intérieur de _main, mais ça ne marche correctement que si tu utilises le prerelease de GCC le plus récent et définis EXECUTE_IN_GHOST_SPACE.
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é

40

Mais pourquoi dans la doc de tigcc a propos de ce 3° parametre de NewDialog il disent que les contenus des request sont a un endroit de la memoire dont l'adresse est retournée par Y et il est question d' "absolute adress" ça a rapport avec EXECUTE_IN_GHOST_SPACE ? je suis relativement newbie et je pige pas tout..
projet en cours XiaoXiaoShow

41

Elynx
a écrit : je suis relativement newbie et je pige pas tout..

Franchement, je pense que si tu es "relativement newbie", les "user functions" sont trop compliquées pour toi. Ce n'est pas fait pour les débutants en programmation, mais pour les experts.
Mais pourquoi dans la doc de tigcc a propos de ce 3° parametre de NewDialog il disent que les contenus des request sont a un endroit de la memoire dont l'adresse est retournée par Y et il est question d' "absolute adress"

Ah tiens, je vois. L'adresse est donc passée, mais attention: seulement quand tu appuies sur [ENTER] dans un Request. Pour les autres évènements, il y a autre chose dans y.

Ton prototype est faux. Ce n'est pas:
char FctPerso(short x,char y)
qu'il faut mettre pour récupérer l'adresse (et d'ailleurs y n'est certainement pas un char, mais un long ou un char *), mais:
char FctPerso(short x,char (*y)[4])
Maintenant, tu peux utiliser y de la même manière que tu utilises buffer dans _main, et cela sans rendre buffer global et sans passer par les fonctions embriquées.
ça a rapport avec EXECUTE_IN_GHOST_SPACE ?

Pas du tout.
Je parlais d'une construction comme celle-là:
// Main Function 
void _main(void) 
{ 
char buffer[5][4] = {"20","20","20","20","20"} ; 

char FctPerso(short x,char *y) 
{ 
if (x==1) { }; 
if (x==2) { }; 
if (x==3) { }; 
if (x==4) { }; 
if (x==5) { }; 

return 1 ; 
} 

HANDLE handle = DialogNew (16*7, 100,FctPerso); 
DialogAddTitle (handle, "Activity allocations", BT_OK, BT_NONE);//x=0 
DialogAddRequest (handle, 3, 15, "Agriculture:", 0, 3, 4);//x=1 
DialogAddRequest (handle, 3, 27, "Taxes: ", 4, 3, 4);//x=2 
DialogAddRequest (handle, 3, 39, "Industrie: ", 8, 3, 4);//x=3 
DialogAddRequest (handle, 3, 51, "Militaire: ", 12, 3, 4);//x=4 
DialogAddRequest (handle, 3, 63, "Mining: ", 16, 3, 4);//x=5 
DialogAddText (handle, 3, 75, "Total: 100%");//x=6 
if (DialogDo (handle, CENTER, CENTER, buffer, NULL) == KEY_ENTER) 
HeapFree (handle);
}

Ça permet à FctPerso d'utiliser buffer directement, mais:
attention Ça ne marche pas du tout avec la version de GCC livrée avec TIGCC 0.94 SP1. (Ce n'était tout simplement pas implémenté.)
attention Avec le prerelease de GCC 3.3, ça marche, mais seulement si tu utilises EXECUTE_IN_GHOST_SPACE (et tu auras aussi un warning à ce sujet).
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é