Pim89 Le 09/03/2002 à 13:53 oulà ... tu dis que t'es newbie mais ça va super !!! y'a plein de truc que j'ai pas compris dedant.
Faut dire aussi que je me suis interessé qu'aux graphismes pour l'instant. Donc les chaines ou la vat et ce qui va avec, j'ai très peu vu.
une ch'tite question : SYM_ENTRY : c'est quoi ?? ça sert à quoi ?
Non-Webmaster et
non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les
Webmasters .«- Pas Moo ! ^^
Pim89 Le 09/03/2002 à 13:55 oué, la vat quoi. Ca j'y ai pas encore touché.
Non-Webmaster et
non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les
Webmasters .«- Pas Moo ! ^^
natto Le 09/03/2002 à 14:43 hum, deja je comprend, pas, commente tes lignes car je connais pas l'utilité de ttes les variables

納 豆パワー!
I becamed a natto!!!1!one!
Zeph Le 09/03/2002 à 14:47 Explications + détaillées :
void exe_adds(char *valeur) // Sensé ajouter 1 pointeur de chaine dans le tableau
{
tbl_retstr[var_retstr++]=valeur; // Le pointeur est stocké dans le tableau, puis on incremente le rang pour l'élement suivant
}
Puis, à la fin du programme :
void exe_rets(char *variable) // On stockera le tableau dans une liste TiOS de nom 'variable'
{
ESI backup; // Pour mesurer la taille de la liste en octets
if(var_retstr>0) // Si la liste contient des éléments
{
backup=top_estack;
push_quantum(END_TAG);
for(var_for=var_retstr;var_for>0;var_for--) // On commence de la fin de la liste et on va vers le début
{
push_ANSI_string(tbl_retstr[var_for-1]); // On push un a un les éléments
}
push_quantum(LIST_TAG);
SYM_ENTRY *var_sym = DerefSym(SymAdd(variable)); // On crée la variable
if(var_sym) // Tout le bordel pr que la variable soit valide
{
ptr_argument=(char*)HeapDeref(var_sym->handle=HeapAlloc(top_estack-backup+2));
*(unsigned short *)ptr_argument=top_estack-backup;
memcpy(ptr_argument+2,backup+1,top_estack-backup);
}
top_estack=backup;
}
}
SYM_ENTRY *var_sym; // Normalement ça entre un a un les noms de dossiers
var_sym = SymFindFirst(NULL,4); // Cherche le 1er dossier de la ti
while(var_sym!=NULL)
{
exe_adds(var_sym->name); // L'ajoute à la liste grace au programme (c ça qui marche pas je pense)
var_sym=SymFindNext(); // Cherche le dossier suivant
}
Ah oui, dernière chose : quand je fait exe_adds(chaine), ça marche. 'chaine' est de type char *
[edit]Edité par Bob 64 le 09-03-2002 à 14:56:08[/edit]

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
natto Le 09/03/2002 à 15:57 ben...........attds :
#define RETURN_VALUE result
//code
push_END_TAG ();
push_longint(w);
push_longint(z);
push_longint(cox);
push_longint(coy);
push_longint(heur);
push_longint(jour);
push_longint(time);
push_longint(rct);
push_longint(esc);
push_longint(timer);
push_LIST_TAG ();
pkoi tu fais pas comme ça ?

納 豆パワー!
I becamed a natto!!!1!one!
natto Le 09/03/2002 à 15:58 et pour les strings, ben c pas dur

納 豆パワー!
I becamed a natto!!!1!one!
Zeph Le 09/03/2002 à 16:06 parceque ça marche pas...
y'a certaines instructions indispensables contenues dans vertel qui empeche le #define RETURN_VALUE de fonctioner.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
natto Le 09/03/2002 à 18:55 ce que tu dois faire, c reprogrammer vertel pour pouvoir utiliser return value ou utiliser fopen, fput, fclose etc... et c pas un probleme

納 豆パワー!
I becamed a natto!!!1!one!
essaie ca pour voir :
void exe_adds(char *valeur) // Sensé ajouter 1 pointeur de chaine dans le tableau
{
tbl_retstr[var_retstr++]=valeur; // Le pointeur est stocké dans le tableau, puis on incremente le rang pour l'élement suivant
}
void exe_rets()
{
ESI backup; // Pour mesurer la taille de la liste en octets
if(var_retstr>0) // Si la liste contient des éléments
{
backup=top_estack;
push_quantum(END_TAG);
for(var_for=var_retstr;var_for>0;var_for--) // On commence de la fin de la liste et on va vers le début
{
push_ANSI_string(tbl_retstr[var_for-1]); // On push un a un les éléments
}
push_quantum(LIST_TAG);
SYM_ENTRY *var_sym = DerefSym(SymAdd($(fichier))); // On crée la variable de nom fichier
if(var_sym) // Tout le bordel pr que la variable soit valide
{
ptr_argument=(char*)HeapDeref(var_sym->handle=HeapAlloc(top_estack-backup+2));
*(unsigned short *)ptr_argument=top_estack-backup;
memcpy(ptr_argument+2,backup+1,top_estack-backup);
}
top_estack=backup;
}
}
SYM_ENTRY *var_sym; // Normalement ça entre un a un les noms de dossiers
var_sym = SymFindFirst(NULL,4); // Cherche le 1er dossier de la ti
while(var_sym!=NULL)
{
exe_adds(var_sym->name); // L'ajoute à la liste grace au programme (c ça qui marche pas je pense)
var_sym=SymFindNext(); // Cherche le dossier suivant
}
chez en rajoutant les déclarations mon code marche il renvoie la liste des répertoires dans le fichier "fichier" tandis que ta version me renvoie un internal error
Zeph Le 10/03/2002 à 19:43 Ah ok vu... je v essayer
[edit]Edité par Bob 64 le 10-03-2002 à 19:44:05[/edit]

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
PpHd Le 11/03/2002 à 15:54 Le Return-Value n'empeche en rien la capture des arguments.
Le problème des arguments avec RETURN_VALUE est qu'il faut faire le nettoyage des arguments de la pile d'expressions (expression stack) au bon endroit (quand on n'en a plus besoin, et juste avant de mettre le résultat), ou alors, si ce n'est pas possible, utiliser delete_between plutôt que de soustraire des valeurs à top_estack (c'est-à-dire: mettre le résultat final, puis supprimer arguments et résultats intermédiaires avec delete_between).