1

J'aimerais faire une fonction de recherche d'une chaine dans une liste. Une sorte d'inString pour liste (c une idée de MacIntoc). Le problème, c'est que je n'ai pas trouvé d'explications sur le format des listes sad

Comment faut-il s'y prendre pour récupérer les éléments chaines de caractère d'une liste, une fois que j'ai un pointeur vers elle ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

Les listes c'est:
E5 Elements D9

la pile estack pointe sur D9
tu recules d'un et tu utilises la fonction next_expression_index pour passer à l'élément suivant.

La pile estack pointe toujours sur un tag, qui est toujours en fin d'objet.

Pour les chaînes de caractères:
00 Chaine 00 2D
Cours et tutos Asm: http://membres.lycos.fr/sirryl

3

Et utilise une fonction de comparaison adaptee.

4

Ouha... J'ai du me lancer dans qq chose de trop compliqué...
Merci pr les explications, je v essayer de me trouver wink
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

arf tjs sans vérification ... :

#define USE_TI89              // Produce .89z File
#define USE_TI92PLUS          // Produce .9xz File

#define RETURN_VALUE          // Return Pushed Expression

#define OPTIMIZE_ROM_CALLS    // Use ROM Call Optimization

#include <tigcclib.h> 


void _main(void) 
{ 
  ESI argptr=EX_getArg(0);
  ESI arg2=EX_getArg(1);
  char *str;
  int compteur=0;
  str=GetStrnArg(arg2);
  argptr--;
  while (GetArgType(argptr)!=END_TAG) {
		compteur++;
  	if (GetArgType(argptr)==STR_TAG) {
  		if (strcmp(GetStrnArg(argptr),str)==0) {
  			push_longint(compteur);
  			return;
  		}
  	}
  	else argptr=next_expression_index(argptr);
  }
  push_longint(0);
} 
Fiou.

6

V essayer, mais faut que j'adapte, parceque ma liste n'est pas en argument.
merci wink
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

j'espère que ca marche smile
Fiou.

8

c'est bien grin

9

gavé grin
Fiou.

10

J'oubliais que le C etait passé à la dominence sur ce forum, dsl, j'aurais du répondre en C...

Si t'as besoin d'aide pour ta lib, demande
Cours et tutos Asm: http://membres.lycos.fr/sirryl

11

il me semble qu'il prépare sa lib en C alors j'ai répondu en C (et en plus ya pas trop a reflechir)
Fiou.

12

Mais j'avais pas encore vu le topic dans projets, c pour ca
Cours et tutos Asm: http://membres.lycos.fr/sirryl

13

Je suis en train d'optimiser grâce aux conseils de squale, et après je retente la recherche dans une liste (la dernière tentative s'est soldée par un echec...)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Heu... Comment je fais pr adapter l'algo de TachMan ???

int search_in_list(char *variable)
{
SYM_ENTRY *var_sym=SymFindPtr(variable,0);
if(peek(HToESI(var_sym->handle))==217)
{
// Vala... J'ai un pointeur vers la variable TiOS list... Mais comment séparer les éléments ?
}
return 0;
}
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

15

jsais pas si c'est ca que tu veux mais je mets ca :

#define USE_TI89              // Produce .89z File
#define USE_TI92PLUS          // Produce .9xz File

#define RETURN_VALUE          // Return Pushed Expression

#define OPTIMIZE_ROM_CALLS    // Use ROM Call Optimization

#include <tigcclib.h> 


int search_in_list(char *variable);

void _main(void) 
{ 
  push_longint(search_in_list($(abc)));  // recherche dans la variable abc
} 

int search_in_list(char *variable) 
{ 
 SYM_ENTRY *var_sym=SymFindPtr(variable,0); 
 ESI liste;
 int compteur=0;
 if(peek(liste=HToESI(var_sym->handle))==217) 
  { 
   liste--;
   while (GetArgType(liste)!=END_TAG) {
		compteur++;
  	if (GetArgType(liste)==STR_TAG) {
  		if (strcmp(GetStrnArg(liste),"ma")==0) {  // search chaine "ma"
  			return compteur;
  		}
  	}
  	else liste=next_expression_index(liste);
  }
  return 0; 
  }
 return 0;
} 

[edit]Edité par TachMan le 13-03-2002 à 20:40:42[/edit]
Fiou.

16

Ah oui, ça a bien l'air de ressembler à qq chose comme ça !!!
Je v tester oui
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

bob> D/L la doc du sdk de TI, tu y trouvera ton bonheur (hum enfin bon ce du from TI, donc faut pas non plu s'attendre a ds miracles)
avatar

18

ça se d/l ou ça ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

19

heu bah... (je cherche...)
j'ai trouvé :
http://education.ti.com/pdf/productinfo/sdk/sdk8992pguide.pdf
avatar

20

Merci !
(c marrant ça je viens de m'appercevoir que j'ai pas acrobat grin)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

21

Heu ton lien il marche j'ai l'impression...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22

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

23

du 1er coup !
champagne !
avatar

24

Ok, je v chercher le tire bouchon
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

25

Un tire bouchon pour le champagne eek C'est quoi ces jeunes sans education !

26

Mais non, un tire bouchon pour le sabrer

(y a pas bcp de branches où se rattrapper wink)
Cours et tutos Asm: http://membres.lycos.fr/sirryl

27

Façon de parler...
Et puis je suis pas doué... Quand il saute à chaque fois ça passe à 5cm de qq chose de fragile...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

28

Bon et puis on s'en tape...

Revenons au sujet :
[glow]TachMan, ça marche[/glow]

lovelovelove


Est-ce que tu pourrais m'expliquer à quoi sert le 'liste++' avant la boucle while ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

29

Ah tiens... la balise CENTER bug grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

30

c'est liste-- il me semble
ca sert à virer le LIST_TAG
et ensuite tu récupères les arguments comme s'ils étaient écrits à la suite sinon la liste est considérée comme un argument à elle toute seule.

Fiou.