Comment enregistrer le contenu d'un ShowMessage

Résolu
yosthegost Messages postés 26 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 17 mai 2006 - 27 mars 2006 à 17:08
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 28 mars 2006 à 17:41
Bonjour

je voudrai enregistrer le contenu de mon ShowMessage dans un fichier.txt ou .msg.

Merci d'avance pour votre aide.

6 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
28 mars 2006 à 17:41
... Perseverare Diabolicum

et je rajouterais de la même manière, pour les objets qui doivent rester disponibles tout au long de l'exécution de l'application, quand vous déclarez un où plusieurs objets dans le OnCreate de la Form d'écrire de suite leurs libérations dans le OnClose :

Procedure TForm1.FormCreate(Sender : TObject);
Begin
Bmp1 : TBitmap.Create;
Bmp2 : TBitmap.Create;
End;

Procedure TForm1.FormClose(Sender : TObject);
Begin
Bmp1.Free;
Bmp2.Free;
End;

Il existe aussi la possibilité de faire savoir au composant que l'on vient de créer qu'il doit se libérer quand la fiche (où le composant parent) est libéré :

Procedure TForm1.FormCreate(Sender : TObject);
Begin
Bmp1 : TBitmap.Create;
Bmp1.FreeNotification(Self); // Self étant ici Form1
Bmp2 : TBitmap.Create;
Bmp2.FreeNotification(Self);
End;

@+
Cirec
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
27 mars 2006 à 19:42
Salut,
tu peux utiliser une TStringList ce qui te permet de charger où de sauvegarger un où plusieurs messages.

TStringList possède des methodes pour la lecture et l'écriture dans un fichier texte.
Var
SL : TStringList;

SL := TStringList.Create;
SL.SaveToFile(Nom de Fichier);
SL.LoadFromFile(Nom de Fichier);
//et tu as accès à chaques lignes par :
SL.Strings[Numéro de ligne]; //en lecture
SL.Add(Nouvelle Ligne); //en écriture

@+
Cirec
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
27 mars 2006 à 20:16
Si c'est pour un faire un genre de fichier log il faut ecrire une methode qui vas te simplifier la tache, par exemple :

function MessageLog(const LogFileName, Msg : string) : boolean;
var
TLST : TStringlist;
begin
TLST := TStringlist.create;

if FileExists(LogFileName) then begin
TLST.LoadFromFile(LogFileName);
end;

TLST.Add('Le '+DateToStr(Date)+' - '+TimeToStr(Time)+' :');
TLST.Add(' '+Msg);
TLST.Add('');

TLST.SaveToFile(LogFileName);

TLST.Free;

Resul := FileExists(LogFileName);


ShowMessage(Msg);
end;

<hr size="2" width="100%">
0
Utilisateur anonyme
28 mars 2006 à 00:04
Si je peux me permettre Cirec :

Pour la stringlist n'oublie pas de la libérer
SL.free;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
28 mars 2006 à 03:20
Oui tu as raison pour moi c'était évident, il faut de façon systématique libérer les objets que l'on a crées dès qu'on en a plus besoin. J'aurais dû le rajouter tu as raison de le préciser tout le monde n'est pas forcément au courant.

@+
Cirec
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
28 mars 2006 à 16:07
errare humanum est, cirec.



en precisant qu'il faut le faire, meme si delphi libere automatiquement les instances a la fin du programme.



car parfois, certain objet necessite d'etre liberé proprement ou dans
un ordre precis, surtout quand il y a des chargements de librairie ou
d'api particuliere (son, video, reseaux).



beaucoup de composants n'ont pas de methodes propre de liberation, et
malheureusement, une fois sur deux on a le droit a l'injure quand on
quitte le programme ou aprés un evenement particulier.



j'ai eu le tours sur une classe utilisant direct sound, nul part dans
la classe il n'y avait de control d'assignation (if assigned(), if not
assigned) et aucune methode de liberation des ressources ouverte ...
une fois sur deux ... c'etait rebootage obligatoire car plus de sons
dans le systeme.



comme quoi ... c'est important de le faire, je conseil meme a tout les
debutants de declarer immediatement dans leurs methode quand ils crées
un objet, de tout de suite ecrire la liberation.



objet := type.create;

// je passe tout de suite quelques lignes



// et je declare tout de suite la liberation pour ne pas l'oublier

objet.free;

// je reviens au dessus et j'ecris ma methode.





rappel egalement, on utiliseras toujours de preference la methode FREE
des objets plutot que DESTROY. Free fait des controls avant d'appeler
Destroy.

<hr size="2" width="100%">
0
Rejoignez-nous