Problem de destruction d'objet

Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008 - 23 mars 2004 à 17:24
Pornman Messages postés 20 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 20 janvier 2006 - 31 oct. 2005 à 15:02
hello,

J'ai creer un objet comme suis:

interface
type
TBestCost = class(TObject)
private
{ Private declarations }
T0:double;
T1:double;
public
{ Public declarations }
property Time0:double read T0 write T0;
property Time1:double read T1 write T1;

end;

Dans mon programme, a la creation de la forme je creer mon objet comme suis:

var BestCost:TBestCost;//var public de ma forme
procedure TForm1.FormCreate(Sender: TObject);
begin
BestCost: =TbestCost.Create;
end;

Et je le detruit dans la formeClose:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
BestCost.Destroy;
end;

au cours de mon programme je passe mon objet en parametre de fonction (je sais pas si ca joue)
Le probleme c'est que a chaque fois que mon appli ce ferme j'ai un message ''EAccessViolation'' lors de l'execution de cette ligne en mode pas a pas....

j'ai beau chercher je ne vois pas d'ou vient le probleme...

si vous avez une idée merci de m'aider

3 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
23 mars 2004 à 20:59
Et à aucun moment au cours de l'exécution tu ne détruis l'objet BestCost ?
Soit cela provient d'ailleurs, soit tu essaies de détruire un objet qui n'existe plus ou alors, l'objet est en cours d'utilisation par un processus parallèle...
Tu peux toujours essayer ceci :
if Assigned(BestCost) then
  BestCost.Free;


Je suis d'accord pour dire que cela soigne les conséquences mais pas la cause, mais bon... :)
May Delphi be with you
0
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008
23 mars 2004 à 22:34
je viens d'essayer

if Assigned(BestCost) then
BestCost.destroy;

et le message ''AccesViolation'' arrive toujours!

en mode pas a pas, je vois que l'objet existe, Assigned(BestCost) est vrai, mais au moment du destroy, ca plante....

Ca peut venir d'ou sinon?

Merci de l'aide...
0
Pornman Messages postés 20 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 20 janvier 2006
31 oct. 2005 à 15:02
Essaye simplement un FreeAndNil(TaChose);



Une belle Procedure de Free qui verify si les object sont assigner avant et plus .. ( tres Interessant)
0
Rejoignez-nous