Avatar billede rkb Nybegynder
19. november 2001 - 11:29 Der er 4 kommentarer

TListView Memory leak / CreateFontIndirect..

Hej,

jeg har et problem med et leak i comctrl vcl\'en - TListView får created en \"font\" ressource som den ikke får nedlagt igen - jeg ved at der var en bug i Delphi 5 før update pack 1 - men jeg køre delphi 5 med update pack 1 - og alligvel har jeg dette her leak i følge MemProof - er der nogle der har en ide om hvordan jeg fixer dette så den får det nedlagt igen?

Det kan genskabes ved at lave en ren form smide en tlistview på, og lave en oncustomdrawitem event der fx. ´ændre noget ved fonten fx sender.canvas.font.color := clRed;

og derefter prøver indsætter noget i listen.

MemProof siger :

561  Font                  $D50A0928          0  CreateFontIndirect(...)

- håber der er nogle der kan hjælpe...

mvh

René K.
Avatar billede jenshertz Nybegynder
19. november 2001 - 15:35 #1
Jeg tror selvfølgelig du har prøve det - men hvis ikke så prøv at sige :

procedure ListView1OnDestroy(Sender: TObject);
begin
  sender.canvas.font.free;
end;
Avatar billede rkb Nybegynder
19. november 2001 - 16:03 #2
Der er ikke nogle ondestroy event på tlistview...

Avatar billede dkn Nybegynder
19. november 2001 - 18:59 #3
han mente jo nok:

procedure TForm1.FormDestroy(Sender: TObject);
begin
ListView1.canvas.font.free;
end;

:)
Men det ser ud som om det bare crasher i d6.
Har du prøvet med:

procedure TForm1.FormDestroy(Sender: TObject);
begin
ListView1.free;
end;

Avatar billede rkb Nybegynder
19. november 2001 - 20:57 #4
Problemet er ikke at nedlægge listviewen, problemmet er at tlistviewen opretter noget DEN ikke får nedlagt...

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester