Текущий архив: 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.47 MB
Время: 0.007 c