Bonjour,
voici une nouvelle idée farfelue : je me suis dit que j'avais envie de faire une DLL pour me faire la main dessus, et j'ai convenu de faire ça :
Une DLL qui permette de gérer un fichier "log" efficacement. Pour ceux qui ne savent pas ce qu'est un log, il s'agit d'un fichier, généralement du texte, qui contient des lignes relatives à une action ou à un événement en particulier. Une sorte de "rapport", en gros.
Alors j'ai fait cette DLL, avec un style très "API", vous verrez.
J'ai également conçu une interface Delphi avec la DLL (initialiser la DLL, la libérer, et appeller ses fonctions le tout dynamiquement OU statiquement).
Ensuite, je me suis dit que pour aller plus vite, je pourrais faire un composant TLog, encapsulant cette DLL. Donc, je l'ai fait, il fonctionne plutôt pas mal, et est assez simple d'usage.
De plus, j'ai conçu une application d'aide pour les fonctions de la DLL, tout ça sous forme de RTF en ressources ... pas trop mal ! (dossier Help)
Et pour finir, j'ai fait une application d'exemple sur comment utiliser le composant correctement : une application qui permet de tenir un journal, qui contient des lignes comportant une date et un évènement. Comme le log géré par la DLL ne permet pas d'inclure une date d'un claquement de doigts, il a fallu se débrouiller. J'ai donc incrusté la date dans les 3 premiers octets de chaque ligne, le reste étant consacré au texte d'événement. Pour vous montrer les fonctionnalités du log sans trop que vous vous fatiguiez, j'ai mis un log d'exemple (ExampleLog.jnl).
Je vous laisserai découvrir tout le contenu de cette source par vous-même, je vous dirai juste qu'il n'y a pas besoin d'installer le composant pour tester, il est créé dynamiquement. Evidemment, vous pouvez, si vous avez envie, utiliser directement les fonctions de la DLL sans le composant. Vous pouvez même contourner l'interface que j'ai faite pour vous. Mais a moins que vous n'ayez envie de refaire le même composant TLog en mieux, il est beaucoup plus aisé de passer par ce dernier (ou au moins par l'interface ...).
Vous allez probablement me demander, après avoir testé, "et comment on supprime une ligne ?". Je vous répondrai simplement : on ne supprime pas de ligne, et c'est là d'où vient tout le charme d'un log : l'impossibilité de supprimer des lignes, juste pouvoir en ajouter. Accessoirement vider tout le log. Cela vous paraîtra peut-être bizarre au début, mais vous comprendrez après quelques utilisations de ce composant.
Instructions de compilation :
- Ouvrir LogDLL.dpr.
- Compiler. Vous devriez obtenir une DLL.
- Lancez LogDLLExample.dpr.
- Ouvrez eventuellement le fichier ExampleLog.jnl.
- Et voilà !
L'utilisation de la DLL peut se faire soit en mode statique ou dynamique au choix (merci à f0xi pour cette fonctionnalité supplémentaire).
Merci d'avoir testé ma source :)
Source / Exemple :
// In the ZIP !
Conclusion :
Je sais, toute cette source se résume à ajouter des lignes dans un fichier. Mais ça peut servir à tout le monde qui cherche à faire des DLL, des callback, à comprendre comment se servir des API fichier de Windows, etc ...
Tous commentaires, critiques, remarques, conseils, etc ... ici !
Codé sous Delphi 6 Personal Edition !
Cordialement, Bacterius !
15 mars 2009 à 15:48
- nouvelle unité LogLineFmtUtils, qui permet de formater une chaîne de caractères avec divers types dedans (pour l'instant, inclure une date, ou un entier sur 32 bits).
Cordialement, Bacterius !
14 mars 2009 à 11:53
Cordialement, Bacterius !
14 mars 2009 à 11:52
En tout cas ça marche :)
Cordialement, Bacterius !
12 mars 2009 à 21:12
Cordialement, Bacterius !
12 mars 2009 à 21:11
Je verrai tout ça demain, merci f0xi pour toutes ces nouvelles choses, je vais voir tout ça demain et faire refonctionner la source demain.
Cordialement, Bacterius !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.