dubois77
Messages postés675Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention19 février 201914 25 juil. 2011 à 14:37
Bonjour Pierrefo
Bien sur tu as raison, à la mise à jour j'ai mis le dcu au lieu du pas
je modifie de suite
pierrefo
Messages postés54Date d'inscriptionmardi 22 juin 2004StatutMembreDernière intervention29 décembre 2008 25 juil. 2011 à 10:23
Bonjour Dubois77,
Il pourrait être utile de joindre le fichier Systus.pas dans ton ZIP!
Sans doute un oubli lors de la dernière mise à jour.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 19 juil. 2011 à 18:06
Salut Dubois77,
juste quelques mots sur ton unité fétiche Systus.pas
procedure INI(var O:TstringList);
begin
O := TstringList.Create;
end;
//--------------------------------------- FRE(O)
procedure FRE(var O:TstringList);
begin
O.Destroy;
end;
pour le premier si O est déjà crée pfuuut, fuite de mémoire
procedure INI(var O:TstringList);
begin
if Assigned(O) then
O.Clear
else
O := TstringList.Create;
end;
pour le deuxième c'est juste pas possible ... il ne faut jamais appeler destroy directement sinon le composant n'est pas correctement libéré.
Il faut appeler la méthode Free de l'objet qui elle appelle Destroy en interne.
procedure FRE(var O:TstringList);
begin
if Assigned(O) then
begin
O.Free;
O := nil;
end;
end;
à partir de D7 (je crois) on peut faire plus court:
procedure FRE(var O:TstringList);
begin
if Assigned(O) then
FreeAndNil(O);
end;
25 juil. 2011 à 14:37
Bien sur tu as raison, à la mise à jour j'ai mis le dcu au lieu du pas
je modifie de suite
25 juil. 2011 à 10:23
Il pourrait être utile de joindre le fichier Systus.pas dans ton ZIP!
Sans doute un oubli lors de la dernière mise à jour.
19 juil. 2011 à 18:06
juste quelques mots sur ton unité fétiche Systus.pas
procedure INI(var O:TstringList);
begin
O := TstringList.Create;
end;
//--------------------------------------- FRE(O)
procedure FRE(var O:TstringList);
begin
O.Destroy;
end;
pour le premier si O est déjà crée pfuuut, fuite de mémoire
procedure INI(var O:TstringList);
begin
if Assigned(O) then
O.Clear
else
O := TstringList.Create;
end;
pour le deuxième c'est juste pas possible ... il ne faut jamais appeler destroy directement sinon le composant n'est pas correctement libéré.
Il faut appeler la méthode Free de l'objet qui elle appelle Destroy en interne.
procedure FRE(var O:TstringList);
begin
if Assigned(O) then
begin
O.Free;
O := nil;
end;
end;
à partir de D7 (je crois) on peut faire plus court:
procedure FRE(var O:TstringList);
begin
if Assigned(O) then
FreeAndNil(O);
end;
sinon pour fonction PosEx je te conseille de regarder du coté de FastCode:
http://fastcode.sourceforge.net/challenge_content/rtl_replcmnt_pkg.html
leurs codes font parties des nouvelles versions de Delphi c'est dire si ils sont bons.