Voilà, je commence à me mettre au C et j'ai donc lu le tuto sur ti-rex seulement le chapitre concernant la manipulation des chaînes de caractères ne contient qu'une page vide. De plus, j'ai remarqué que certains chapitres ne se terminaient pas "corectement" (genre une phrase coupée en plein milieu) et que les liens (notament pour les niveaux de gris et les librairies) n'étaient pas actifs.
De plus, j'ai remarqué une erreur dans l'explication de _rowread (La colonne, si on ne veut conserver que cette touche, aura donc, en binaire, comme valeur : 1101111. Il convient à présent de convertir cette valeur en hexadécimal (ce que votre TI sait faire !), et qui donne, dans ce cas : 0x10.) (<- c 0x6F)
Malgrès tout ça, je tiens à remercier Squale pour ce tuto, il m'a permit de m'initier au C
Cependant, j'aimerais vraiment que le chapitre sur les chaînes de caractère y soit.
Est-ce que ça pourrait se faire rapidement (dans la mesure du possible) ¿
vince Le 07/07/2003 à 15:30 balance un mail à rom1 (admin de ti-rex)
ok !
Merci jackiechan pour ces adresses.
ok, merci.
Par contre, j'ai un problème concernant les boites de dialogue.
Lorsque je met un champ request, ça va, j'arrive à faire marcher.
Par contre, s'il y en a au moins deux, c la galère complète, quelqu'un peut-il m'aider ¿
De toute façon, tu ne devrais pas utiliser _rowread directement, mais _keytest.
pourkoi ?
qu'est ce qui ne vas pas dans rowread ?
Que c'est plus compliqué à utiliser correctement, et que ça ne s'adapte pas automatiquement aux différents modèles (TI-89, TI-92+/V200).
comment ça, ça s'adapte pas automatiquement aux différents modèles ?
à cause de la matrice clavier qui est différente ?
si c'est ça, franchement je m'en fout, je vais pas distribuer mes programmes puisque je vais programmer uniquement pour 89 (pour moi et mes pôtes).
ok, mais je pense que j'aurais plus vite assimilé _rowread pour un seul modèle que les pseudo-constantes à utiliser sur plusieurs modèles.
parce que justement je ne ferais que sur 89.
par contre, et c'est bien normal, faudra que je m'y mettes si je veux m'élargir.
et puis est ce qu'on pourrait m'aider sur mon problème avec les boites de dialogue, à savoir que quand je met plus d'un request, ça marche pas ?
Pourrais-tu être plus précis?
ah, en voulant mettre ce post, j'ai testé quelquechose, et j'ai réussi à avoir la chîne de caractère du premier request dans une variable et, si celle ci atteint son maximum de caractères, elle contient à la suite la chaine de caractère du deuxième request.
char joueur[20] = "";
char *teste;
HANDLE nom_joueur=DialogNewSimple(135, 50);
DialogAddTitle(nom_joueur, "Nom des joueurs", BT_OK, BT_CANCEL);
DialogAddRequest(nom_joueur, 2, 14, "Joueur 1 :", 0, 20, 21);
DialogAddRequest(nom_joueur, 2, 24, "Joueur 2 :", 20, 20, 21);
teste=&joueur;
DialogDo(nom_joueur, CENTER, CENTER, teste, NULL);
HeapFree(nom_joueur);
clrscr();
DrawStrXY(0, 0, joueur, A_NORMAL);
ngetchx();
donc voilà, imaginons que dans le premier request on entre : "moi"
ça affichera : "moi" quelle que soit la valeur du deuxième request.
par contre, si on y met : "undeuxtroisquatrecin" et dans le deuxième request on met, par exemple : "chiffres"
ça affichera : "undeuxtroisquatrecinchiffres"
alors ma question est de savoir comment avoir deux variables distinctes avec pour chacune le nom deux joueurs correspondants (pcq j'ai pas pigé comment fallait faire)
Si offset est 20 pour le deuxième request, MaxLen pour le premier devrait être 19, pas 20. (Il faut prévoir un emplacement libre pour l'octet nul qui termine la chaîne de caractères.)
Ça ne sert plus à rien depuis qu'il y a _keytest.
Et puis la table des codes _rowread est dans la documentation de TIGCC.
bon, alors, en remplaçant l'offset du second request par 21, quelle que soit la valeur que je met dans le champ joueur deux, ça ne me marque à l'écran que ce qu'il y a à l'écran, puis quand j'appuye sur une touche (instruction ngetchx(); ), Illegal instruction se marque en haut avec du noir de chaque côté et Vti est planté.
en fait mon problème c'est de récupérer ce qu'on a rentré dans le champ du request deux dans une variable (qui dans l'exemple serait joueur2).
t'as qu'à faire un buffer par champ request. Attends, je ressort une vieille source qui marchait...
wé, mais justement, si je fais un buffer par request, y'aura trop d'arguments lors de l'activation de la boite de dialogue, non ?
(qui marchait ? ça veux dire que ça marche plus ?)
Mathias31, ton buffer est trop petit. Il faut un buffer de 42 caractères (2*(20+1): pour chaque Request, 20 + un emplacement pour le caractère nul), pas 20.
ok, je vous remercie, en fait, si j'ai bien compris, il y aura tout dans un seul buffer et il faudra répartir entre les différentes variable.
Oui, et il suffit d'ajouter l'offset que tu as passé à DialogAddRequest pour avoir un pointeur sur la variable.
ok.
maintenant j'ai une autre interogation, comment faire pour avoir une liste contenant des chaînes de caractère ?
char *liste[nb_de_chaines]={"chaine1","chaine2"};
Un ajout à ce qu'a posté jackiechan:
Si tu veux faire une liste de chaînes de caractères qui ont toutes la même longueur, c'est, si je ne me trompe pas:
char liste[number_of_strings][length_of_strings] = {...};