- mots clé: adresse mémoire - ordre d'initialisation - mise au point
- logiciel utilisé: Windows 98, Delphi 5.0
- matériel utilisé: Pentium 500Mhz, 128 M de mémoire
- champ d'application: Delphi 1 à 6 sur Windows, Kylix
- niveau: débutant en Pascal et Delphi
- uses: u_c_log, (u_types_constants, u_c_basic_file,
u_c_basic_object, u_c_file_name, u_c_display, u_dir,
u_strings)
- plan:
1 - Introduction
Cette unité permet se savoir à quelle adresse mémoire approximative a été chargée une unité. Elle indique aussi dans quel ordre les partie d'initialisation des unités ont été appelées.
Cette unité est historique, et a été utilisé lorsque certaines classes ne s'initialisaient pas dans le bon ordre. Je ne l'utilise pas très souvent. 2 - Utilisation 2.1 - Interface
L'interface est la suivante:
var g_log_unit_loading: boolean= False;
procedure display_loaded(p_unit_name: String; p_start_address: Pointer);
| Et: - g_log_unit_loading valide on supprime l'écriture du log
- display_loaded reçoit deux paramètres:
- un texte (en général le nom de l'unité)
- l'adresse d'une procédure de l'unité (en général la première qui se trouve après IMPLEMENTATION)
- les données envoyées à display_loaded sont écrites dans un fichier c:\log.txt
L'appel de display_loaded est placé entre le BEGIN et le END de l'unité (ou dans INITIALIZATION, ce qui revient au même). L'unité u_loaded doit être la première unité non-Delphi dans le USES du
.DPR. Elle crée en effet le fichier de log utilisé par les autres unités 2.2 Exemple En basculant g_log_unit_loading à True dans l'initialisation de u_loaded, voici le journal obtenu:
// -- c:log.txt 23/12/01 09:23:23 loaded 446584: u_loaded loaded 446784: u_c_file_name loaded 447250: u_c_basic_file loaded 447AE8: u_c_log |
Ceci signifie: - que pour les unités utilisées par p_test_u_loaded, les seules qui, au jour de ce test, comportent encore u_loaded dans leur USES sont
u_c_file_name, u_c_basic_file, u_c_log
- le journal indique l'ordre de chargement et l'adresse dans le code de la première procédure de l'IMPLEMENTATION
2.3 - Répertoires
L'unité est prévue pour être placée dans: C: programs colibri_helpers units
Vous pouvez naturellement changer cette organisation par Projet | Options | Directories 2.4 - Directives de compilation Les directives de compilation sont: - R+ (vérification des intervalles)
- S+ (vérification de la pile)
- pas d'optimisation
3 - Programmation 4 - Améliorations 5 - Télécharger Vous pouvez télécharger:
- u_loaded.zip: l'unité seule (4 K)
- test_u_loaded.zip: le projet de test (18 K) qui contient:
- l'unité
- toutes les unités qu'elle utilise
- le projet de démonstration
Avec les mentions d'usage: - j'apprécie tous les commentaires, remarques ou critiques
- signalez-moi les bugs que vous trouverez.
L'auteur
John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le
conseil (composants, architecture, test) et la
formation. Son site contient des articles
avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et
UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client. |