1

Bon voila, je suis en train de faire un programme, (pour faire des ptit calculs sur al mole...c plus un jeu k'une néssaisité !).

En faite, sur ma boite, j'ai un menu, et 5 DialogAddRequest........

Comment je fais pour récuperer les résultats des 5 DialogAddRequest ???

Arf.....c plus compliké !
Ceu ke je veu récupérer des dialogrequest, c des chiffres...

Thx !
[edit]Edité par roger le 26-03-2002 à 14:37:15[/edit]

2

Ben relis comment marche les AddRequest.
http://tigcc.ticalc.org/doc/dialogs.html#DialogAddRequest
Tu files un tableau de char, et un offset dans ce tableau pour chaque addrequest.
Il suffie ensuite de lire ce tableau+lóffset correspond au addrequest que tu desires.
Tu auras la chaine de caractere desiree
Puis ut utilises strtol pour convertir en nombre
http://tigcc.ticalc.org/doc/stdlib.html#strtol

3

cool
Tu es dans un jour de bonté PpHd ou tu avais simplement le temps ?
Ca fait plusieurs topics où je te vois aider parfaitement quelqu'un smile
Tu vas bientôt remplacer LE Kevin smile
cool

4

arf, dsl, je ne comprend pas ca:

char *buffer="Hello "; // fill with 20 spaces
keski séprare les résultats de chakes boxes ?

5

Si tu regardes la definition de DialogDo, tu verras ceci :
short DialogDo (HANDLE Handle, short x, short y, char* RequestBuffer, short *PulldownBuffer);
Le parametre ReqestBuffer est un tampon de sortie. C'est dans ce tampon que les resultats vont etre stockes.
Le parametre offset rentre en jeu ici :

La sortie de AddRequest avec un offset de X va etre stocke a partir de l'element x du tableau reqest buffer.

En pratique, le premier AddRequest a un offset de 0
Le second a l'offset de la taille maximale de la chaine du premier +1(pour le 0).
Le troisieme est la somme de l'offset precedent et de la taille de la chaine du second +1.

Evidememnt, tu n' es pas obblige de faire comme cela.
Tu lis la chaine a l'adresse RequestBuffer+X

PS: C'est Kevin qui a augmente la qualite des reponses a donner.

6

arf, decouregeant sad :

si, par exemple, ya des num dans les 5 boxes(disons 1,2,3,4,5), et ke la longeur max de caracteres est 5, le buffer va se présenter comme ca nan?:
*buffer= "1 2 3 4 5 ";
alors si on le lis a partir de buffer+6 (par exemple pour la case 2...) ben, ca va donner
"2 3 4 5" !!!!!!

7

Plus simple : 3 boxes, max_len 2

buffer ={'1',0,0,'2',0,0,'3','1',0}

Les chaines sont buffer+0, buffer +3, buffer +6

8

bon sad kelk1 a une source d'un programme utilisant + que 1 Request box ????
please sad

9

Va bosser l'assembleur un peu, et surtout le representation memoire des chaines en C.
C'est ca qi te manque.

10

Bon ecoutes.
Le premier DialogAddRequest, tu lui mets un offset de 0
Le second, un offset de 100
Le troisieme, un offset de 200,
Le quatrieme, un offset de 300
Le 5iem, un offset de 400

Tu rajoutes:
char RequestBuffer[500];
machin = DialogDo(....RequestBuffer...);

x = atol(RequestBuffer);
y = atol(RequestBuffer+100);
z = atol(RequestBuffer+200);
t = atol(RequestBuffer+300);
l = atol(RequestBuffer+400);

11

>roger:
>si, par exemple, ya des num dans les 5 boxes(disons 1,2,3,4,5), et ke la longeur max de caracteres est 5, le buffer va se présenter comme ca nan?:
>*buffer= "1 2 3 4 5 ";
>alors si on le lis a partir de buffer+6 (par exemple pour la case 2...) ben, ca va donner
"2 3 4 5" !!!!!!

Non, parce que ce qu'entre les 1 2 3 4 5, il n'y aura pas que des espaces, à la fin de chaque chaîne de caractères (donc ici de chaque nombre sous forme de chaîne de caractères), DialogDo aura bien soin de mettre un '\0', qui est le caractère signalant la fin d'une chaîne de caractères. Donc il y aura bien "2\0...3\0...4\0...5\0...", mais les fonctions C qui traîtent les chaînes de caractères, comme par exemple atol, ne liront que "2".
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é

12

D'ailleurs, tu devrais initialiser ton buffer avec des '\0' plutôt que des espaces entre les nombres. Par exemple:
char *buffer="1\0\0\0\02\0\0\0\03\0\0\0\04\0\0\0\05\0\0\0";
(J'ai mis un '\0' de moins à la fin vu que le C en rajoute un automatiquement après toute chaîne de caractères entre guillemets "".)
[edit]Edité par Kevin Kofler le 28-03-2002 à 02:01:49[/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é