yosthegost
Messages postés26Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention17 mai 2006
-
27 mars 2006 à 17:08
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
28 mars 2006 à 17:41
Bonjour
je voudrai enregistrer le contenu de mon ShowMessage dans un fichier.txt ou .msg.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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.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
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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.