Voici une procédure qui va permettre "d'espionner" un programme écrit en delphi en écrivant les évenements et erreurs dans un fichier texte compatible Excel (.CSV).
Source / Exemple :
// La déclaration
procedure SaveLog(LeTexte:String);
procedure SaveLog(LeTexte:String);
//------------------------------------------------------------------
// Sauvegarde les bugs et évenements dans un fichier texte
// www.dfc-automatisme.fr
//------------------------------------------------------------------
var
Fichier : TextFile;
NomFichier : String;
FichierDesti : String;
LigneEcr : String;
LigneLec : String;
MS : TMemoryStatus;
nLigne : Longint;
begin
NomFichier := ExtractFilePath(Application.ExeName) + 'suivi.csv';
nLigne := 0;
// Création de la ligne a écrire
GlobalMemoryStatus(MS);
LigneEcr := DateToStr(Date) +';'+ // Date
TimeToStr(Time) +';'+ // Heure
TimeToStr((GetTickCount/1000)/(24*3600)) +';'+ // Temps de marche du PC
Format('%d %%', [MS.dwMemoryLoad]) +';'+ // Mémoire vive utilisée
LeTexte; // Description
AssignFile(Fichier, NomFichier); // Ouverture fichier
if not FileExists(NomFichier) then
Rewrite(Fichier) // Création du fichier si innexistant
else
Append(Fichier); // Mode ajout sinon
WriteLn(Fichier, LigneEcr); // Ecriture de la ligne
Reset(Fichier); // Début fichier
While not Eof(Fichier) do
begin
ReadLn(Fichier,LigneLec);
Inc(nLigne); // Compte le nombre de lignes
end;
CloseFile(Fichier); // Fermeture fichier
// Après 1000 ligne on fait une copie de sauvegarde et on supprime le contenu du fichier courant
if nLigne > 1000 then
begin
FichierDesti := LeftStr(NomFichier, Length(NomFichier)-4)+FormatDateTime('_yyyy-mm-dd_hh-nn-ss".csv"', Now);
CopyFile(PChar(NomFichier), PChar(FichierDesti), False);
AssignFile(Fichier, NomFichier); // Ouverture fichier
Rewrite(Fichier); // Supprime le contenu
CloseFile(Fichier); // Ferme le fichier
end;
end;
// L'utilisation
SaveLog('DESCRIPTION');
// Exemple d'utilisation :
try
PortCom.Connected := True;
except
SaveLog('Impossible de connecter le port COM1');
end;
if not FileExists(NomFichier) then
SaveLog('Fichier ' + NomFichier + ' introuvable');
// Aperçu du fichier :
// 27/05/2004;15:40:03;07:22:04;78 %;Démarrage d'Easytrack
// 27/05/2004;15:42:30;07:24:32;79 %;Fermeture d'Easytrack
Conclusion :
Le fichier courant se nomme suivi.csv et au bout de 1000 ligne une archive est créée sous la forme suivi_2004-06-01_10-40-00.csv pour éviter d'avoir de trop gros fichiers.
Si le fichier n'existe pas il est créé automatiquement.
Cette procédure me permet, en autre, de débugger les programmes et de connaitre la source des plantages (erreur de code ou manip client ).
Des questions ou plus d'infos sur
http://www.dfc-automatisme.fr/forums/viewtopic.php?t=11
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.