Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME I. Les programmes

36. SCR4_APP : ajoute des données à la suite d'un programme

Ce programme concatène un fichier de données à programme exécutable. Cela permet de faire en sorte que données et programme fasse partie du même fichier. Ce programme est notamment utilisé pour construire le programme install.exe à l'aide de scr4_mki.

En fin de de fichier, l'adresse du début des données est stocké de façon à pouvoir ouvrir l'exécutable, à pointer sur cette adresse et à lire les données.

Un "magic number" placé en fin de fichier permet de vérifier que le fichier est bien construit par scr4_app.

Syntaxe

scr4_app progname.exe filename

Fonction C

La fonction C SCR_get_app_pos() permet de placer un FILE descriptor à la bonne position dans un fichier créé par scr4_app.

Suppression des fichiers .cmt et .scr

Les fichiers .scr et .cmt générés par scr4_e sont parfois perçus comme gênants pour la distribution d'applications simples. Il en va de même pour le fichier d'erreurs scr_err.txt.

Il est possible de se passer du .scr en compilant l'application avec l'option -c qui fournit un code C pour les données. Dans certains cas, si les données sont en trop grand nombre, cela reste cependant impossible (segment size exceeded p.ex).

Le fichier .cmt pour sa part n'est pas évitable dans 2 situations au moins :

Pour résoudre ce problème, un truc simple est de concaténer ces fichiers à l'exécutable et, dans l'exécutable, de positionner correctement la lecture.

Dans le cadre des applications SCR, 3 nouvelles variables ont été définies à cet effet :

        int     SCR_CMT_FILE_NB;
int SCR_SCR_FILE_NB;
int SCR_ERR_FILE_NB;

Ces variables indiquent le numéro d'ordre du fichier à partir de la fin de l'exécutable. On pourra procéder comme suit pour intégrer dans son exécutable les fichiers .scr et .cmt. Si ces variables sont nulles, le fonctionnement est identique à ce qu'il était auparavant.

Exemple

1. Modification au niveau du makefile

        scr4_app myexe.exe myfile.scr
scr4_app myexe.exe myfile.cmt
scr4_app myexe.exe scr_err.txt

2. Modifications au niveau du main()

    main(argc, argv)
....
strcpy(SCR_NAME_ERR, argv[0]); /* Nom de l'exécutable */
SCR_ERR_FILE_NB = 1; /* Dernier fichier */
strcpy(SCR_NAME_SCR, argv[0]); /* Nom de l'exécutable */
SCR_SCR_FILE_NB = 3; /* 3ème à partir de la fin */
SCR_init();
strcpy(SCR_CMT_FILE, argv[0]); /* Nom de l'exécutable */
SCR_CMT_FILE_NB = 2; /* 2ème à partir de la fin */
...

Notez que SCR_init() doit absolument précéder la définition de SCR_CMT_FILE.

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be