Vous n'êtes pas identifié.
voila c'est pas compliqué. je fais un programme qui execute un fichier. jusque la c'est pas compliqué. Mais le problème c'est si ce programme fait appel à des fichiers alors le jeu bugguera.
Je m'explique mieux. Si je lance Bg100, sonic ou meme touche4.0 à partir de ce programme, vous pouvez etre sur qui ne trouveront pas leur fichiers externs. pourquoi j'en ai aucune idée. Si je lance Bg100 et sonic à partir de DirXplor ou Sysexpl40.exe tout ce passera bien. Je suis completement perdu.
#include <dirent.h> #include <dos.h> #include <stdio.h> void execute(char pathp[]){ //By 2072 char command[128]; //buffer for the command line char *args[64]; //table of arguments int i; int numberofargs =0; //no comment int a =0; int cline_size; //size of the command line cline_size=strlen(pathp); //cline_size is set if (cline_size > 128) //Error if the command line size is more than 128 return; //This, below, scan the command line to find space characters for (i=0; i <= cline_size; i++) { if (pathp[i]!=(char)32) { //if there is no space if (a==0) //if it is the first character of the arg args[numberofargs]=&command[i]; //copy the address of the first arg command[i]=pathp[i]; //copy the arg in command a++; //a is increased till a space is found } else if (a > 0 && args[numberofargs][a - 1]!=(char)32) { //if a space is found after //an argument and if the //previous character wasn't a //space command[i]=' '; //this end the argument numberofargs++; //a new argument has been found a=0; //reset the index of character of the argument } } args[numberofargs + 1]=NULL; //This is for the last argument execv(args[0], args); //execute the progs with the argument list return; } int main() { setdisk(16); // avec ou sans j'ai le meme problème chdir("Q:\"); // avec ou sans j'ai le meme problème execute("Q:\TOUCHE2.EXE"); return 0; }
La fonction pour executer le programme est faite par 2072. et est utilisée dans DirXplor.
A noter que ce bug n'apparait pas avec ShadowWorld.
Je n'ai malheureusement aucun idée pour resoudre mon prob.
Franchement ca serait cool que vous m'aidiez sur ce coup là car je sais vraiment pas quoi faire. et je serai obliger de foutre à la poubelle des heures et des heures de boulot consacré à mon nouveau programme.
Hors ligne
d'après que ce que g vu dans les sources de dirxplor, la seule différence c la valeur du paramètre passé à setDisk.
Toi tu mets 16 alors que SuperNa avec DirXplor met 6.
Tente avec 6 mais j'en suis vraiment pas sûr, je ne connais pas tout ca car je n'ai jamais essayer
Hors ligne
Non malheureusement ca na change rien du tout :cry: :cry:
Hors ligne
ben lors de l'exec, il faut que le disque monté soit celui ki est lancé
je crosi avoir eu des problemes aussi mais je dois avoir reussi lol
un truc aussi
pour trouver les fichiers les programmes lancés se basent sur le parametre 0 qui contient la lettre du lecteur qui contient le fichier, verifi que tu passe bien cet argument
style L:TOUCHE.EXE
Hors ligne
Bah oui je le passe bien: execute("Q:\TOUCHE2.EXE");
quelqu'un a la solution :cry: :cry: :cry:
Hors ligne
bin essaye sans la ft execute de 2072, mais en faisant très attention à bien mettre comme 1er argument de lancement le nom du prog ...
execv("L:\TOUCHE.EXE", "L:\TOUCHE.EXE", NULL);
mais c'est bizarre car comme tu le signales, ça passe bien aussi sur gx2 ... (c'est d'ailleurs gx2 qui est utilisé par xth pr dev) et pourtant je pense bien que nous utilisons tous absolument la même routine !!
et ce n'est pas un setdisk à mon avis qui changera quoi que ce soit, car la routine de recherche faite par le processus DOS bah prend en compte la lettre du lecteur indiquée ds le path !
Hors ligne
putain ca commence serieux à mes peter les couilles ! rien ne marche. j'ai essayé ce ke tu as casiomax. et toujours le meme prob pour touche. il me demande ou se trouve le fichier .dat.
peut etre un jour j'aurai la solution. franchement ca me gave. y a pas de raison que ca fonctionne pas. putain. y en a un qui a tester ou pas ?
Hors ligne
Déjà vire setdisk(16); ça ne sert STRICTEMENT à RIEN, maintenant, ce genre de bug inexplicable arrive si la mémoire du DOS a été abîmé, (overflow) où si les disques mappés ne sont pas les bons, le premier disque mappé doit toujours être celui où le programme courant s'exécute, après c'est à ROM-DOS de se démerder. Mais la probabilité d'un overflow qq part dans ton prog est très élevée...
Hors ligne
Voial je suis désepsérer, j'ai matter l'aide de turboC, les source de dirXplor et de Sysexpl. J'en ai marre. tout mon taf sur mon explo est reduit à 0 pourtant il avait trop de la gueule et gérer les dossiers comme sous windows.
J'aimerai quand meme ne pas abandonner.
Est ce quelqu'un pourrait prendre 30min pour un exe qui lance Touche.EXE sans bug. pour que je parte de là. parceque rien ne fonctionne sur ma graph100. Biensur ca serait cool que le prog ait ete testé avant.
Merci à la personne qui m'apportera cette aide précieuse.
l'overflow, je ve bien ! mais sur si peu de ligne et avec une fonction tester avec tout le monde. donc l'overflow je doute un peu.
Hors ligne
mon programme (code.exe) lance touche2.exe com il faut (je viens de tester)
si tu veu je peu te filer les sources ...
Hors ligne
ouai je ve bien ca serai sympa.
Hors ligne
ok ba je t'envoie sa par mail!
mais bon je pense pas que sa t'aide bcp ...
yen a pas plus que dans les sources que tu a déja vu!
Hors ligne
le pb ne se situe certainement pas ds le code d'exec, mais avant !! c'est pour ça que la plupart des explos en niveaux de gris font de la merde à l'exec des fichiers car c'est bien plus dangereux que le C3 !!
Ma foi, j'ai vu ton explo et ça serait cool s'il arrivait à se défaire de ce pb ^^
Hors ligne
bah ouai mais là j'ai du taf pour les cours. et comme je dois tout reprendre à Zero... bah va falloir attendre.
ouai mais casiomax dans mon exemple ci dessus je n'utilise pas les niveau de gris.
Hors ligne
Oui en effet c curieux.
Si tu compiles exactement le code ci-dessus je ne vois pas comment tu pourrais écraser de la mémoire.
Hors ligne
ptet un pb d' execution plus complexe qu' on le croit.
Normalement, à partir du menu casio, tout fonctionne.
Maintenant, les explos sont lancés à partir du menu casio, et selon les cas, ça marche ou pas.
Le pb se déclenche t il lorsque l' exécuteur(lui meme lancé à partir du menu) est dans le meme disque que l' executé?
Faudrait creuser la question.
Sinon, est ce qu' il s' agit d' un pb au niveau des fonction exec... qui réagissent différement?
Hors ligne
Quand l'exe est dans le meme repertoire. tout fonctionne correctement.
Hors ligne
Est-ce que ton programme fait appelle à des donnés contenu dans d'autre fichiers ? Si c'est le cas sache que ROM-DOS ne peut mapper qu'uns eul disque à la fois, si t'essaye d'accèder à 2 fichiers sur 2 lecs différents ça merde...
Hors ligne
personnelement, quand je lit une map, j' ouvre le fichier, jme sert d' un espace mémoire reservé à cette effet ( une structure dédiée à ça) pour y écrire le contenu de la map, et je ferme le fichier. le fichier se situe dans le meme lecteur (dans un répertoire pour ètre précis)
Hors ligne
Vous pouvez me dire ou trouver TC3 non polué par des librairies ( cf CDK ) ?
par ce que la je me demande si TC ne deconne pas.
2072-> compile le code qu'il y a la haut. tu verras ca marche pas.
Pour l'instant je m'en fou de mon Explorer. Moi je voudrais faire fonctionner le code ci-dessus. Si quelqu'un pouvait le compiler et me dire si ca marche ca serait sympa. Sachant que le programme ne doit pas etre dans le meme lecteur que Touche4.0
Hors ligne
teamG100 dans autres et cdk ne pollue pas avec des librairies...
Hors ligne
bin y'a un TC ac trop des vieilles sources sur mon ftp:
http://leneuronez.free.fr/TC3.rar (il me semble)
Hors ligne
Essaye d'inclure <PROCESS.H>, il est requis pour execv... C'est peut-être pour ça que ça ne marche pas. Et aussi active TOUS les warning dans TC.
Hors ligne
Hors ligne