Moduły » System

Finalize

  • 2010-10-31 18:27
  • 0 komentarzy
  • 574 odsłony
  • Oceń ten tekst jako pierwszy
Finalize
Moduł: System

procedure Finalize(var V [; Count: Integer] );

Procedura Finalize deinicjalizuje alokowaną dynamicznie zmienną V.
Należy jej używać w sytuacjach, gdy dynamicznie alokowana zmienna jest zwalniana innym sposoben niż za pomocą procedury Dispose. Tablice dynamiczne nie zostaną zdealokowane procedurą Finalize lecz tylko wyczyszczone.

Dla zmiennych globalnych, zmiennych lokalnych, obiektów i zmiennych dynamicznych dealokowanych przez Dispose, kompilator automatycznie generuje kod, który finalizuje (czyści) łańcuchy znaków, varianty i interfejsy gdy instancja jest niszczona.

Jeżeli zmienna jest dealokowana inaczej niż przez użycie procedury Dispose (np przez użycie FreeMem) lub jeżeli zmienna zawiera ciągi łańcuchowe które nie są puste bądź varianty i/lub interfejsy które są różne od wartości Unassigned wymagane jest wcześniejsze ich zfinalizowanie procedurą Finalize.

Finalize ustawia wszystkie łańcuchy znaków na puste, oraz wszystkie interfejsy i varianty na wartość Unassigned, w ten sposób poprawnie zwalniając pamięć do których łańcuchy i varianty te się odwoływały.

W wypadku gdy zmienne znajdują się w ciągłym bloku pamięci takim jak tablicy dynamicznej łancuchów znaków, można określić dodatkowy parametr Count w celu sfinalizowania wszystkich zmiennych w jednej operacji.

Jeżeli zmienna nie zawiera żadnych łancuchów znaków, variantów lub interfejsów, kompilator usuwa z kodu wywołanie tej procedury.

Zobacz też: