Bonjour à tous !

Je m'amuse donc à développer un wargame depuis longtemps et la taille des fichiers augmentant, il m'est devenu impossible de tout garder avec un seul programme principal. Après avoir tourné en rond, désespéré comme il se doit, j'avais réussi à trouver dans la documentation, à l'époque, une procédure qui semblait résoudre ma difficulté et qui l'a fait pendant quelques années : EXEC.

En clair, j'ai créé un petit programme qui, par le biais de cette procédure EXEC, permettait de lancer le programme correspondant au besoin du moment. Pour passer l'information quant au programme à lancer, il suffisait de créer à chaque fin de programme un fichier temporaire qui donnait le nom du programme suivant à lancer, fonction des ordres données par l'utilisateur. Sinon, à défaut de fichier, il savait qu'il devait lancer le menu du jeu.

Voici ce que donnait la partie principale de ce petit programme. ANAMNA est le nom du wargame, de mon univers de jeu de rôle et de ce programme. ANAMNAD est le "début" (présentation animée du jeu "échappable") et ANAMNAM est le menu du jeu.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
BEGIN
   LigneCmd:='';
   NomProgram:='ANAMNAD.EXE';
   SwapVectors;
   Exec(NomProgram, LigneCmd);
   SwapVectors;
   NomProgram:='ANAMNAM.EXE';
   SwapVectors;
   Exec(NomProgram, LigneCmd);
   SwapVectors;
   repeat
      {$I-}
      assign(ff,'ANAMNA.TMP');
      reset(ff);
      {$I+}
      readln(ff,version);
      if version<>ver then begin
         close(ff);
         efface_tous_les_fichiers_inutiles;
         textcolor(15);
         clrscr;
         writeln('ERREUR LANCEMENT PROGRAMME ''LES GUERRES D''ANÄMNA"')
         writeln('LANCEMENT INTERROMPU...');
         writeln;
         writeln('@ DUGUERPF / Les guerres d''AnäMna / 1996-2009 / ver 3.0.2703');
         halt;
      end;
      readln(ff,texte);
      if texte<>'FIN DU JEU' then begin
         NomProgram:=texte;
         SwapVectors;
         Exec(NomProgram, LigneCmd);
         SwapVectors;
      end;
      close(ff);
   until texte='FIN DU JEU';
   efface_tous_les_fichiers_inutiles;
   textcolor(15);
   writeln('@ DUGUERPF / Les guerres d''AnäMna / 1996-2009 / ver 3.0.2703');
END.
Et maintenant, la question : tout cela fonctionnait parfaitement jusqu'à WIN98, mais tout plante sous WINXP et plus. Quelqu'un a-t-il une soluce ?