Composant tlog utilisant une dll

Soyez le premier à donner votre avis sur cette source.

Vue 4 591 fois - Téléchargée 590 fois

Description

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 !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Bon voilà, améliorations du code et ajouts :
- 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 !
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
En revanche je n'ai pas encore modifié tous les commentaires, mis en forme et tout, j'ai déjà réparé le fonctionnement, je m'occupe de la mise en page dans peu de temps.

Cordialement, Bacterius !
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Et voilà f0xi tout marche bien, en revanche j'ai dû enlever la lecture des lignes du log par "pointeurs incrémentés" (à défaut d'un autre mot), car ça ne marchait pas du tout, je ne lisais que des caractères bizarres et il semblerait que le pointeur se balade partout dans la mémoire du processus puisqu'à un moment, le log contenait une ligne "Quel événement voulez-vous ajouter (252 caractères max)", bref il a pris le libellé du InputQuery ...
En tout cas ça marche :)

Cordialement, Bacterius !
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Ok pour tes 2 derniers commentaires f0xi. Je vais lire ça attentivement c'est interessant je trouve.

Cordialement, Bacterius !
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Bon plus rien ne marche, il faut que je remette tout en forme.
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 !
Afficher les 13 commentaires

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.