Главная страница
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.011 c
14-20300
Фагот
2003-06-20 16:28
2003.07.07
Ищу литературу по логике программирования


1-20109
Goga
2003-06-24 10:41
2003.07.07
Подскажите, как реализовать обратный вызов от MIDAS сервера


1-20097
Brain Force
2003-06-24 15:19
2003.07.07
Помогите разобраться со StringGrid


14-20188
KaLGaN
2003-06-19 02:59
2003.07.07
У кого-нить есть примеры алгоритмов для обмена данными по сети?


14-20272
race1
2003-06-18 15:54
2003.07.07
lan