ALTERNATIVE AUX FICHIERS HLP, UN FICHIER AIDE EN .INI

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 12 janv. 2003 à 14:15
AhmedBoudali Messages postés 14 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 13 décembre 2005 - 14 janv. 2003 à 09:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12283-alternative-aux-fichiers-hlp-un-fichier-aide-en-ini

AhmedBoudali Messages postés 14 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 13 décembre 2005
14 janv. 2003 à 09:37
Merci Dalamar pour ces encouragements.

Je livrerai la prochaine version modifiée avec un plus : en focalisant sur un objet puis touche F1-->apparition d'une aide assimilable à du contextuel.
cs_Dalamar Messages postés 63 Date d'inscription samedi 22 décembre 2001 Statut Membre Dernière intervention 22 décembre 2003
14 janv. 2003 à 00:39
Bravo pour l'originalité. Code source unique
AhmedBoudali Messages postés 14 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 13 décembre 2005
13 janv. 2003 à 09:39
Je dois certes relire au calme le propos de Delphiprog mais il a raison sur tout :

- le mot "alternative" est excessif ("une solution dégradée" serait plus exact),

- j'ai oublié de commenter l'indexation du fichier ini (structure des entrées) et la modalité de la recherche qui est faite :

.Chaque début de Section du INI (Chapitre ou sous-chapitre de l'aide) comporte un code alphanum en 4 positions : les 3 premieres (incrémentation numérique base 10) donnent l'ordre de menu, la derniere (alpha) donne le rang dans l'arborescence (chapitre,sous chapitre,definition,...).

.La recherche se fait donc sur les 4 premiers caract. :
- selection du 1er item liste 1 : code 010 A,
- lecture INI de la section 010 A,
- recherche des sous-sections 010 de rang B dans INI,
- selection du 1er item liste 2 : code 010 B,
- recherche des sous-sections 010 de rang C dans INI,
- etc ...

Merci Delphiprog,
Je revois ma copie.
Ahmed.
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
12 janv. 2003 à 14:15
Voilà une initiative intéressante et originale bien qu'elle ne puisse pas constituer une alternative aux fichiers HLP (ou CHM). En effet, les fichiers d'aide au format Windows ont pour vocation première d'apporter une aide contextuelle, ce que ne peut prétendre remplacer ce code.
Néanmoins, comme je l'ai dit, la démarche est intéressante.
[Pour l'auteur] : il serait souhaitable d'externaliser les positions de recherche des valeurs d'index des chapitres et sous-chapitres dans les chaînes lues à partir du fichier .ini, pour rendre plus facilement réutilisable et adaptable ce code.
Au lieu de :
RacTheme := Copy(xx0, 1 3);
Il serait mieux de déclarer des constantes globales indiquant les longueurs de départ de la recherche dans une chaine, etc.

Suggestion :
Dans la procédure lstbxChapClick, il serait préférable de :
1- Déclarer RacPos en Char;
2- De remplacer : RacPos := copy(xx0, 4, 1); par : RacPos := copy(xx0, 4, 1)[1]; ou, mieux encore par RacPos := xx0[4];
3- De remplacer toute la série des If RacPos... par :
if RacPos > 'A' then
RacPos := Pred(RacPos)
else
RacPos := 'A';
La déclaration de RacPos en Char plutôt qu'en string simplifie grandement cette portion de code et est moins limitante puisque nous ne devons pas tester chaque lettre de l'alphabet !
Enfin, la déclaration dans la section Var (partie Interface) contient une déclaration inutile : TFIC: TIniFile;.

Une petite note explicative sur la structure des entrées du fichier .ini serait la bienvenue, pour que l'on ne soit pas obligés de lire et de comprendre le code source pour deviner comment écrire les noms de sections et d'entrées.
Rejoignez-nous