Главная страница
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.018 c
1-20040
Anonimus
2003-06-25 14:01
2003.07.07
Как отловить нажатие клавиш.....


14-20226
AlexTregubov
2003-06-19 12:24
2003.07.07
HTML Help Workshop - создание справочной системы


1-20095
Mihey
2003-06-24 00:45
2003.07.07
Общее событие OnClick для нескольких контролов...


3-20018
Max_
2003-06-11 13:36
2003.07.07
Экспорт TQuery результата в Paradox и Access!


6-20185
DeadMeat
2003-04-29 15:26
2003.07.07
FTP без компонентов