Sylvainlefou
Messages postés43Date d'inscriptionvendredi 27 décembre 2002StatutMembreDernière intervention15 février 2006
-
16 janv. 2004 à 21:34
yvemoreau
Messages postés308Date d'inscriptionmardi 11 juin 2002StatutMembreDernière intervention26 septembre 2008
-
16 mai 2005 à 23:24
Je debute en Pascal sur Delphi 7 (je vien du vb ;-))
J'ai un problem de "plantage" a cause d'une TStrings !
C'est surement moi qui ne sais pas m'en servir mais bon je vous met quand même le code :
var
Aaa: TStrings;
procedure TForm1.FormCreate(Sender: TObject);
begin
Aaa.add('essai');
end;
Il me met EAccessViolation.... at adresse : 00467A68
Voila j'aimerai savoir si cette erreur est normal vu mon code et surtout comment reparer ce bug ??
Merci
PS : J'ai besoin d'une TStrings pour ce que je veu faire malheureusement
yvemoreau
Messages postés308Date d'inscriptionmardi 11 juin 2002StatutMembreDernière intervention26 septembre 2008 16 janv. 2004 à 22:27
procedure TForm1.FormCreate(Sender: TObject);
var
Aaa: TStringList;
begin
Aaa:=TStringList.Create;
Aaa.add('essai');
Aaa.add('essai1');
//Aaa.Strings[0]=essai
//Aaa.Strings[1]=essai1
Aaa.Clear;
Aaa.Free;
end;
évidemment pour voir le résultat faudra l'associer à quelque chose exemple: label1.caption:=Aaa.Strings[0];
en delphi il ne suffit pas d'énumérer certaines variables pour pouvoir s'en servir ,
un Integer est par défaut indéfini
un booléen est par défaut à false
etc...
mais pour les objets il faut en général appeler le constructeur
et tenter de les détruires lorsque l'on a terminé à la limite dans l'événement OnClose de la fiche
mais dans l'exemple que tu envois la variable utilisé n'est visible que pour la procédure FormCreate alors il faut la détruire à la fin de cette procédure (nb.pour les listes il faut en plus vider avant)...
tu peux déplacer la variable Aaa au niveau de l'unité pour qu'elle soit visible par toutes les procédures que tu créeras...
var
Form1: TForm1;
Aaa: TStringList;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
//attention !!! ne jamais créer 2 fois le même objet
if(Aaa=nil)then
begin
Aaa:=TStringList.Create;
Aaa.add('essai');
Aaa.add('essai1');
//Aaa.Strings[0]=essai
//Aaa.Strings[1]=essai1
end;
// test d'affichage
{ label1.Caption:=Aaa.Strings[0]; }
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//attention !!! ne jamais libérer 2 fois le même objet
if(Aaa<>nil)then
begin
Aaa.Clear;
Aaa.Free;
end;
end;