1

Voilà la fonction que j'ai intégré à mon programme :

short progrun (char *name)
{
char fname[20];
HANDLE h;
SYM_ENTRY *sym;
unsigned short size;
unsigned char *type;
unsigned char ext[3];
short zip=0;
TRY
strcpy (fname, name);
//Vérifie si il est zippé et le dézippe si c'est le cas!
strcpy (name,"0") strcat (name,fname); name[0]=0;
sym = SymFindPtr(name+strlen(fname)+1, 0);
size = *(unsigned short*) HeapDeref (sym->handle) + 2;
type = HeapDeref (sym->handle);
type += size-1;
memset(ext,0,4);
if (*type == OTH_TAG)
{
type-=4;
memcpy(ext,type,3);
if (!strcmp(ext,"ZIP"))
{
zip=1;
ZipFile(SymFindPtr(name+strlen(fname)+1, 0), 0);
}
}
//Fin de la vérification
strcat (fname, "()")
push_parse_text (fname);
h = HS_popEStack ();
NG_execute (h, FALSE);
HeapFree (h);
//Rezippe le fichier si il était zippé
if (zip == 1) ZipFile(SymFindPtr(name+strlen(fname)-1, 0), 0);
ONERR
return FALSE;
ENDTRY
return TRUE;
}

Cette fonction regarde si le programme est zippé, si celui-ci l'est, elle le dézippe avant de l'executer puis le rezippe après.

Pour un programme NON ARCHIVE, y'a pas de problème.
Mais si celui-ci est ARCHIVE, j'ai l'impression que la caltoche fait un double du programme pour l'executer.

Mon problème est que le fichier ainsi créé (le clone) n'est pas effacé avant l'arrêt de mon programme.
Et donc, ma fonction rezippe le mauvais fichier (Le clone qui sera effacé après l'execution de mon programme).

Je me demande donc, si j'ai pas oublié quelque chose dans ma fonction!

Merci smile

2

Je dis surement une connerie mais pour etre sur de toi tu devrais peut-etre prevoir un autre traitement si le fichier est archivé (tu dis toi-meme a la fonction de faire un double que tu manipules ensuite, et que tu effaces toi-meme a la fin).
S'il est facile de savoir si un fichier est archivé, je pense qu'il vaut mieux faire comme ca. A trop laisser faire la machine on finit par lui laisser commettre des erreurs...
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

3

Oui, si je trouve pas de solutions, je ferais comme ca!
Mais ce double qui reste jusqu'a la fermeture du programme, ca me perturbe ...[nosmile]

4

ben tu desarchive ton prog

5

Oui, j'y ai aussi réflechi mais en cas de plantage, bye bye le programme ...

6

en basic:
TOUT est plus simple

7

en basic:
RIEN n'est rapide
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

8

C'est sur qu'en basic, on peut pas zipper et dézipper donc le problème ne se pose pas roll

9

si avec flib on peut zipper

10

Si un programme est archivé, il n'y a strictement rien à faire. NG_execute s'occupe de tout.
Mon problème est que le fichier ainsi créé (le clone) n'est pas effacé avant l'arrêt de mon programme.
C'est à cause d'un bug dans AMS. Le fichier ne sera alors supprimé qu'au retour à Home.
Mais tu peux facilement le distinguer de l'original en regardant les flags.
[edit]Edité par JM le 08-09-2001 à 16:59:30[/edit]

11

Là, ca me dépasse! Pourais s.t.p. détailler un peu plus?

Merci @+