Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
1-20040
Anonimus
2003-06-25 14:01
2003.07.07
Как отловить нажатие клавиш.....


14-20311
johny
2003-06-21 06:37
2003.07.07
ищу компонент как в delphi 6


14-20235
allvin
2003-06-17 19:07
2003.07.07
Апдейт к Делфи 7


1-20041
SkySlider
2003-06-23 18:27
2003.07.07
Печать листа Exel из Delphi?


14-20191
Leech
2003-06-21 11:16
2003.07.07
Безопасность. Криптография. help....




   Наверх