[Delphi] Skracanie tablicy dynamicznej

0

Witam,

mam oto taką tablice


type
  TSlowko = record
  slowo           : string[50];      
  odpowiedzi      : array [1..10] of string[50];  
  ile_dobrze      : integer;                      
  nowe            : integer;
  edytowane       : integer;
  ile_odp : integer;                          

end;


type
  Tzestaw = record
  name        : string;  
  Autor       : string;
  id          : integer;
  ile         : integer;
  DU          : string;
  DM          : String;
  Slowo       : array of TSlowko;
  Komentarz   : TStringS;
end;

Var
Slownik : Tzestaw // (typ zawiera dynamiczną tablice Tslowko) <===========================

Wszystko pięknie działa dopóki nie chce obciąć jej o jeden element (ostatni), mianowicie :


SetLength(Slownik.Slowo, Length(Slownik.Slowo) - 1) ;

Zostaje pełno śmieci - tablica ma dalej tyle samo elementów, tylko jakby został wykasowany element Slownik.Slowo[n].Slowo ;(
ale już Slownik.Slowo[n].Odpowiedzi pozostają

Po tej feralnej operacji gdy zamykam aplikacje wyskakuje jakis runtime error ...

Pozdrawiam,
Łukasz.

0

Po pierwsze - czy bezpośrednia korzystarz z pola Komentarz?
To ma być TStringList, a nie TStrings! TStrings, to klasa abstrakcyjna, której nie można utworzyć. TStringList dziedziczy po TStrings.

Twoje problemy jasno wskazują na konkretne memory leaki.
A, żeby to naprawić, MUSISZ prześledzić cały kod.

Upewnij się, czy zawsze zwalniasz obiekt, gdy go wcześniej utworzyłeś.
Zwalniaj obiekty używając procedury FreeAndNil, a nie metody Free.
Jeśli dynamicznie alokujesz pamięć, upewnij się, że ją później zwalniasz.

Gdy prześledzisz cały kod i poprawisz te rzeczy, powinno być dobrze.

0

Testnij to: http://delphi.about.com/gi/dynamic/offsite.htm?zi=1/XJ&sdn=delphi&cdn=compute&tm=5&f=00&su=p284.9.336.ip_p504.1.336.ip_&tt=3&bt=1&bts=1&zu=http%3A//v.mahon.free.fr/pro/freeware/memcheck/

Uzywamy tego w pracy i powiem ze bardzo się przydaje.
Biblioteka jest typu freeware, więc śmiało można stosować nawet do komercyjnych zastosowań.

0

SBzyku a czytales moja odpowiedz do Twojego poprzedniego posta?

1 użytkowników online, w tym zalogowanych: 0, gości: 1