90

POINTEURS powa !!!!!
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

91

Heu... 2 questions :
1) Je peux faire pareil avec une variable ESI ?

2) C plus compliqué ça... En suivant les instructions de ton tuto j'ai fait un sous programme :

char *tll_name(char *valeur)
{
tbl_tios[0]=0;
return strcpy(tbl_tios+1,valeur)+strlen(valeur);
}

Mais il ne marche que quand tbl_tios est défini en variable globale... Pkoi ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

92

>squale92:
>Bob 64> c'était en gros à ce que Kevin à donné que je pensais : je savais que c'était possible (mais force est de reconnaitre que je ne savais pas trop comment l'implémenter)
>Tu devrais essayer, ça t'éviterai surement ces warnings...

Ma version donne aussi des warnings, parce que les chaînes de caractères sont des const char * plutôt que des char *, et parce que les nombres ne sont évidemment pas des pointeurs (on peut mettre un transtypage pour supprimer le warning dans ce cas).

>Bob64:
>1) Je peux faire pareil avec une variable ESI ?

Oui. Et tu n'as même pas besoin du tout de mettre un &, un ESI est déjà un pointeur.

>2) C plus compliqué ça... En suivant les instructions de ton tuto j'ai fait un sous programme :
>
>char *tll_name(char *valeur)
>{
>tbl_tios[0]=0;
>return strcpy(tbl_tios+1,valeur)+strlen(valeur);
>}
>
>Mais il ne marche que quand tbl_tios est défini en variable globale... Pkoi ???

Parce qu'on ne peut pas retourner un pointeur vers une variable locale non-statique puisque cette dernière est détruite quand la fonction a fini de s'exécuter. Donc, soit on met tbl_tios en variable globale ou statique (mais attention dans ce cas le prochain appel de la fonction rendra le pointeur de l'appel précédent invalide!), soit on utilise malloc dans la fonction (mais attention il ne faut pas oublier le free correspondant), soit encore on passe un buffer à la fonction: char *tll_name(char *valeur, char tbl_tios[20]) (c'est la méthode utilisée le plus souvent en C, et probablement la plus pratique).
[edit]Edité par Kevin Kofler le 13-03-2002 à 19:17:02[/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é

93

>>1) Je peux faire pareil avec une variable ESI ?
>Oui. Et tu n'as même pas besoin du tout de mettre un &, un ESI est déjà un pointeur.

Ah ok, je venais d'essayer en en mettant un, et le résulat était assez marrant grin

Pour le 2), la dernière solution a l'air d'être la meilleure, mais puisque la variable tbl_tios est un argument du sous programme, elle n'est pas détruite à la fin ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

94

Non! La copie du pointeur lui-même est détruite (pas grave, on a l'original), mais pas le contenu du pointeur.
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é

95

Alors la...
Avec tous vos conseils, j'ai gagné environ 800 octets eekeekeek
Génial ! Je commençais à me rapprocher des 8000 wink

Bon une dernière grin

j'ai donc char *tll_name(char *valeur, char tbl_tios[20]). Pour appeler la fonction je dois faire : tll_name(nom_variable,{0}) ou bien tll_name(ptr_chaine,tbl_tios[20]) ?
[edit]Edité par Bob 64 le 13-03-2002 à 19:37:54[/edit]
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

96

Ni l'un, ni l'autre, mais tll_name(ptr_chaine,tbl_tios), tbl_tios étant déclaré comme char tbl_tios[20];.
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é

97

Ok, merci pr tout !
t1 j'ai gagné de la place là...

tbl_tios[20] ça change qqchose par rapport à tbl_tios[10] tel que je l'ai lu ds le tuto de squale ?

(ahem... j'avais pourtant anoncé ma dernière question au post précedent roll)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

98

Il faut au moins 19 octets pour un symbole!
- 1 octet '\0' initial
- 8 octets nom du répertoire
- 1 octet '\'
- 8 octets nom du fichier
- 1 octet '\0' final
Donc tbl_tios[19] est la taille minimale. tbl_tios[10] ne tient pas en compte la possibilité de mettre un nom de répertoire!
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é

99

Ah ok... donc y'a une petite erreur dans le tuto de squale. enfin peut-être qu'il a fait exprès de ne laisser que la place pour un nom de fichier...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

100

Je suis passé d'environ 7300 octets à 6421, pour les mêmes fonctionalités grin
Inutile d'imaginer mon code de départ... roll
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

101

Eh bien bravo!!!
Vivement la première sortie!!!

Bonne continuation

102

Merci, merci, mais la le mérite en reviens à KK & Squale...

Pour la sortie, il suffit de demander, mais pr l'instant à part la taille et qq trucs mineurs j'ai aucun avantage sur flib sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

103

Bob 64> pas vraiment une erreur... disons plutôt de l'innattetion : je met des fois 10, et des fois 20 : les eux marchent, mais pr des résultats différents.
Ensuite, c'est en fonction de l'utilisation que vous voulez en faire qu'il faut réfléchir un peu : pour mettre le rep + la var (donc 8+8 lettres au minimum, si vous connaissez pas la structure des noms du TIOS), il faut plus de 10 chars !
=> c évident que faut adapter la taille...

(je verrai pr rendre ça plus rpécis...)
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

104

bah oui, dans ton tuto tu dis qu'il faut utiliser char tios[10], mais sans expliquer pourquoi... Ce n'est pas un cas isolé, et je trouve que ça fait partie des petits défauts de ton tuto (je critique pas, c juste pr aider à l'améliorer wink)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

105

c vrai, je le reconnais sad
quand j'ai écrit mon tuto, je connaissais bcp moins de choses à la prog en C que maintenant (en gros, je connaissais rien), et, maintenant, je prend presque peur en voyant certains choses que j'avais à l'poque écrit...

je v essayer de corriger un max de ces petites choses...
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

106

Tu connaissait rien à l'époque eek
Oula... Comment est-ce que je doit qualifier mon niveau en C alors ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

107

Ce serait bien. Et rajoute aussi quelques chapitres sur l'utlisation d'Xlib wink

108

Revenons au sujet...

Merci TachMan, maintenant la fonction var_srch est terminée... Donc maintenant, il faut faire la lecture // ecriture dans le "presse-papier" (je connais pas le terme pour Ti grin)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

109

si au moins j'avais le temps, je ferais le tuto genclib mais bon fodrait que je pige les tables hdz dhz
avatar
納 豆パワー!
I becamed a natto!!!1!one!

110

Si t'as besoin d'aide, je peux t'aider
Cours et tutos Asm: http://membres.lycos.fr/sirryl

111

bob ?
avatar
納 豆パワー!
I becamed a natto!!!1!one!

112

ouais plutot smile
Cours et tutos Asm: http://membres.lycos.fr/sirryl

113

c clair que le presse papier c pas du gaot
avatar
納 豆パワー!
I becamed a natto!!!1!one!

114

Oué putain j'ai jeté un coup d'oeil... V tenter un truc mais je sens que ça va pas marcher grin
Enfin de tte façon je commence pas ce soir j'ai pas envie de me lancer dans un truc trop long...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

115

paresseux rulez !
avatar
納 豆パワー!
I becamed a natto!!!1!one!

116

top
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

117

zzz
avatar
納 豆パワー!
I becamed a natto!!!1!one!

118

Pr l'utilisation de Xlib, je ne mettrai rien dans mon tuto tant que la doc officielle ne sera pas sortie. J'aviserai ensuite.
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

119

Ca marche ça?

void PutInClipBoard(void)
{
	ESI StartEstack, EndEstack;
	StartEstack = EX_getArg(0);
	if(GetArgType(StartEstack)!=STR_TAG) return ;
	EndEstack = next_expression_index(top_estack);
	CB_replaceTEXT(EndEstack+1,StartEstack-EndEstack-2,FALSE);
}

void GetClipBoard(void)
{
	HANDLE h;
	long len;
	char *str;
	char *ptr = top_estack+1;
	if(!CB_fetchTEXT(&h, &len)) return;
	str = HeapDeref(h);
	*ptr++ = 0;
	while(*ptr++=*str++)
  {
  	
  };
  *ptr=0x2D;
  top_estack=ptr;
  return;
}

[edit]Edité par paxal le 14-03-2002 à 19:38:57[/edit]
Cours et tutos Asm: http://membres.lycos.fr/sirryl

120

squale> si elle est en francais ce ne sera pas la peine
avatar
納 豆パワー!
I becamed a natto!!!1!one!