1

voila je veut faire un boite de dialogue avec deux champ
memset(buffer2,0,9);
HANDLE handle = DialogNewSimple (130, 60);
DialogAddTitle (handle, "NEW PASSWORD", BT_OK, BT_CANCEL);
DialogAddRequest (handle, 20, 17, "Pass:", 0, 8, 9);
DialogAddRequest (handle, 20, 27, "nbr(s) d'essai(s):", 0, 2, 3);
if (DialogDo (handle, CENTER, CENTER, buffer2, NULL) == KEY_ENTER) HeapFree (handle);


mai je c pas comment recupere les valeur car la il garde ke la derniere aidez moi svp!! smilesmilesmilesmile) Merci

2

Normalement, tes valeurs seront stockées à la suite dans buffer2, séparées par un caractère nul. Par exemple tu rentres motpasse et trois dans les cases, tu auras ceci dans buffer2:
motpasse\0trois\0
\0 signale normalement la fin de la chaine, donc si tu affiche buffer2, tu n'auras que motpasse, ou bien si elles sont stockées à l'envers, alors tu n'auras que trois.
Mais je ne suis pas certain à 100% (mais bon de toutes façons je ne vois pas comment ils auraient pu faire autrement wink)
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

3

4

et alors comment faire pour recupere separement les deux valuer??

5

6

!kick Kevin Kofler
--- Kick : Kevin Kofler kické(e) par Microbug



7

svp aider moi smilesmilesmilesmilesmile

8

va voir la réponse, sur tu-gen, il parait que Kevin l'a donnée

(je sens que je v me faire locker grin )
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

dsl, je connais pas assez le C. Ca serait de l'asm tout beau tout propre, je dis pas ...

je vais voir quand même
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

10

cerede2000 :
memset(buffer2,0,9);
HANDLE handle = DialogNewSimple (130, 60);
DialogAddTitle (handle, "NEW PASSWORD", BT_OK, BT_CANCEL);
DialogAddRequest (handle, 20, 17, "Pass:", 0, 8, 9);
DialogAddRequest (handle, 20, 27, "nbr(s) d'essai(s):", 0, 2, 3);
if (DialogDo (handle, CENTER, CENTER, buffer2, NULL) == KEY_ENTER) HeapFree (handle);

Tel quel, les deux requests se chevauchent, donc tu n'en récuperes qu'un seul. L'argument qui suit "Pass:" et "nbr(s) d'essai(s):" est l'offset à partir duquel les données sont inscrites dans buffer2, donc tu devrais remplacer par :
DialogAddRequest (handle, 20, 17, "Pass:", 0, 9, 9); DialogAddRequest (handle, 20, 27, "nbr(s) d'essai(s):", 10, 2, 3);

avec un buffer2 qui fasse au moins 13 octets de long. Pour récuperer les deux chaines, tu as celle du pass qui est accessible avec "buffer2", l'autre avec "buffer2 + 10".
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

11

-- Oups... --
Les explications de Vertyos sont excellentes grin
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

12

non, les boîtes de dialogue ne marchent pas comme ça, l'offset de chaque chaîne est constant par rapport au début du buffer.
les stocker à la suite serait se compliquer inutilement la vie.La méthode de Vertyos est la bonne
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

13

Par contre tu ne lui as pas expliqué l'histoire du paramètre offset, Vertyos... wink
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

14

g essayer et mon code le voila
HANDLE handle = DialogNewSimple (130, 60);
DialogAddTitle (handle, "NEW PASSWORD", BT_OK, BT_CANCEL);
DialogAddRequest (handle, 20, 17, "Pass:", 0, 8, 9);
DialogAddRequest (handle, 20, 27, "nbr(s) d'essai(s):", 10, 2, 3);
if (DialogDo (handle, CENTER, CENTER, buffer2, NULL) == KEY_ENTER)
HeapFree (handle); strcat (buffer2, buffer2+9);


mai meme avec ca je n'ai que le password alors pourquoi??????

15

essaie avec strcat (buffer2, buffer2+10);
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

16

ca ne change rien pk????

17

bin le 2d buffer comme à l'offset 10, pas à l'offset 9, donc ça aurait pu mieux marcher smile


je vois 2 fautes : tu ne libères le handle que si on a appuyé sur ENTER
le strcat ne convient pas je pense car dest et src se chevauchent
un code un peu mieux serait :

void _main(void)
{
char buffer2[20];
char buffer3[20];
int i;
HANDLE handle = DialogNewSimple (190, 60);
DialogAddTitle (handle, "NEW PASSWORD", BT_OK, BT_CANCEL);
DialogAddRequest (handle, 20, 17, "Pass:", 0, 8, 9);
DialogAddRequest (handle, 20, 27, "nbr(s) d'essai(s):", 10, 2, 3);
i = DialogDo (handle, CENTER, CENTER, buffer2, NULL);
HeapFree (handle);
if (i==KEY_ENTER)
	{
	buffer3[0] = 0;
	strcat (buffer3, buffer2);
	strcat (buffer3, buffer2 + 10);
	printf(buffer3);
	ngetchx();
	}
}


après, le code n'est sûrement pas idéal, je connais trop peu le C
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

18

c bon mai g un autre probleme maintenan en faite plu loin je lit buffer2 mai g besion de connaitre la taille du pass mai que du passe comment je peut tester???

19

int i;
i = 0;
while (buffer2[i] != 0) i++;

avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

20

ou strlen(buffer2), tout simplement
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

21

<HS> pkoi Kevin s'est fait locker ? eek </HS>

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

22

parce qu'il disait qu'il avait répondu sur ti-gen
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

23

ok c bon pour ca mai j'ai encore un probleme voila la taille max du champs pass c'est 8 donc si je fai b=strlen(buffer2); et que mon pass a 4 carctere b=4 mai il fo que je rajoute 4 espace a buffer2 pour ensuite faire strcat (buffer2, buffer2+10); comment rajouter un nombre d'espace variable a buffer2???

24

Tu as plusieurs solutions :

* utiliser memset : b=strlen(buffer2); memset(buffer2+b,' ',8-b); buffer2[8]=0; -> remplit les caractères manquants avec des espaces, puis met un 0 terminal pour indiquer que la chaîne est finie (c'est _très_ important de ne pas l'oublier, sinon tu vas avoir des plantages aléatoires)
* utiliser sprintf : probablement le plus simple, mais c'est important de comprendre comment marche la méthode au-dessus (parce que sprintf ne marche pas dans tous les cas) : sprintf(buffer3,"% 8s%s",buffer2,buffer2+10); c'est un peu plus lent que la méthode du dessus

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

25

bon et evidemment encore probleme je recupere la passe dans buffer2 mai si je met par exemple "qrs" comme pass apres quand je fai

if(buffer2 == "qrs")

ca n'est jamais egale pourquoi??

26

tu peux pas comparer les chaînes comme ça.
faut que tu fasses strcmp(buffer2,"qrs")
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

27

et sinon j'ai un sting essai qui a pour valeur "3" et je veut le decrementer de fai comment??

28

ça dépend si tu as besoin de gérer seulement des chiffres de 0 à 9 ou si tu veux aussi des nombres plus grands (> 10)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

29

ben entre 0 et 99 alors faut faire comment smilesmilesmilesmile ??

30

svp coment fau faire pour decremente?????