AhmedBoudali
Messages postés14Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention13 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és63Date d'inscriptionsamedi 22 décembre 2001StatutMembreDernière intervention22 décembre 2003 14 janv. 2003 à 00:39
Bravo pour l'originalité. Code source unique
AhmedBoudali
Messages postés14Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention13 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és4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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.
14 janv. 2003 à 09:37
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.
14 janv. 2003 à 00:39
13 janv. 2003 à 09:39
- 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.
12 janv. 2003 à 14:15
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.