Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.07;
Скачать: CL | DM;

Вниз

Глюк!   Найти похожие ветки 

 
BJValentine ©   (2003-06-20 13:35) [0]

Код:

var
A: array of ShortString;
begin
SetLength(A,10);
Finalize(A,10);
end;

должен работать, но не работает! Что это может быть за глюк?


 
panov ©   (2003-06-20 13:47) [1]

И как заметно, что не работает?


 
BJValentine ©   (2003-06-20 13:50) [2]

Выдаёт ошибку при попытке выполнить Finalize


 
BJValentine ©   (2003-06-20 14:13) [3]

Что это может быть? Help!


 
Danilka ©   (2003-06-20 14:19) [4]

хех:
SetLength, F1:
Sets the length of a string or dynamic-array variable.

Finalize F1:
Uninitializes a dynamically allocated variable.

найди, плиз, во втором хелпе слово "string"


 
Юрий Зотов ©   (2003-06-20 14:21) [5]

В данном случае не нужно никаких Finalize. Напишите A := nil и все.


 
Danilka ©   (2003-06-20 14:22) [6]

хех, что-то я ступил..


 
han_malign ©   (2003-06-20 14:22) [7]

>Danilka © (20.06.03 14:19)

Dynamic arrays can never be deallocated using the Dispose procedure, but can be freed by passing them to Finalize.


 
han_malign ©   (2003-06-20 14:26) [8]

>Юрий Зотов © (20.06.03 14:21)
- но работать то, по идее, должно...

>BJValentine © (20.06.03 13:50)
- кроме отладки с подключенными отладочными DCU (Project Options->Compiler->Use Debug DCU), ничего посоветовать не могу...


 
Palladin ©   (2003-06-20 14:27) [9]

Finalize(A) и все...


 
BJValentine ©   (2003-06-20 15:04) [10]

Пробовал и A:=nil и Finalize(A) - и отлаживать пробовал. Именно когда я освобождаю память, выдаёт ошибку, а если не освобождать память, то ошибка всё равно появляется при закрытии программы.


 
han_malign ©   (2003-06-20 15:15) [11]

значит ошибка не там - где то память засираешь, а то и стек...


 
McSimm ©   (2003-06-20 15:40) [12]


> должен работать, но не работает!

Finalize(A,10);
и должно в этом случае приводить к AV.
Finalize(A) - работать должно, но в приведенном примере это лишнее.

Все прочие возникающие AV происходят по причине другой ошибки


 
Юрий Зотов ©   (2003-06-20 15:42) [13]

И вот сейчас выяснится, что этот код находится в DLL, а массив передается из Exe через параметры процедуры (или наоборот - код в Exe, а массив передается из DLL). А ошибка вылетает 216.

Я угадал?


 
HolyGlory   (2003-06-20 15:56) [14]

Обычно вместо Finalize хватает сделать SetLength(A,0);



Страницы: 1 вся ветка

Текущий архив: 2003.07.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-20057
avkiev
2003-06-25 16:55
2003.07.07
Преобразование строковой даты к TFileTime


3-19992
kaif
2003-06-10 18:38
2003.07.07
Как ловить причину зависания сервера?


1-20034
Andrew_kv
2003-06-24 08:28
2003.07.07
Как передать параметры в форму


1-20054
INTAARI
2003-06-25 11:25
2003.07.07
Освобождение памяти при завершении работы с Tlist


14-20243
Soft
2003-06-19 18:09
2003.07.07
Уязвимость в Win2000