![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамический массив.
kj © (2004-08-26 17:16:00)Как отчистить память от динамического массива?
Суслик (2004-08-26 17:45:00) [1]как всегда молодеж не любит range check error
и почему он по умолчанию не стоит в опциях проекта?
Anatoly Podgoretsky (2004-08-26 17:41:00) [2]kj (26.08.04 17:29) [10]
Пальчиками посчитай сколько эдементов выделено и скольким ты пытаешься присвоить значения.
Amoeba (2004-08-26 17:35:00) [3]
> kj (26.08.04 17:29) [10]
> Код:
>
> M: array of array of Integer;
> SetLength(M, 1, 2);
> M[0, 0]:= 0;
> M[0, 1]:= 0;
> M[0, 2]:= 1;
> M:= nil; -сдесь появляется ошибка
Правильно, будет ошибка! Как нужно делать есть в любом руководстве по Delphi или в Help на топик Multidimensional dynamic arrays.
Семен Сорокин (2004-08-26 17:34:00) [4]галочку range check error в Options проекта поставь
kj (2004-08-26 17:33:00) [5]Ошибся. Спасибо всем.
kj (2004-08-26 17:32:00) [6]Массив глобальный.
Семен Сорокин (2004-08-26 17:32:00) [7]SetLength(M, 1, 2); вместо 2 надо 3
M[0, 0]:= 0;
M[0, 1]:= 0;
M[0, 2]:= 1;
Amoeba (2004-08-26 17:31:00) [8]Все уже сказал Семен сорокин в посте [1]
или
SetLength(massiv, 0);
или
massiv := nil;
Оба варианта эквивалентны.
P.S. Если динамический массив является локальной переменной процедуры/функции, то специально ничего освобождать не нужно - память будет автоматически освобождена при выходе из процедуры.
kj (2004-08-26 17:29:00) [9]Код:
M: array of array of Integer;
SetLength(M, 1, 2);
M[0, 0]:= 0;
M[0, 1]:= 0;
M[0, 2]:= 1;
M:= nil; -сдесь появляется ошибка
MegaVolt (2004-08-26 17:29:00) [10]Упс.... Стормозил. Видать сегодня не мой день :)
Amoeba (2004-08-26 17:27:00) [11]
> MegaVolt (26.08.04 17:24) [6]
> RTFM :)
> procedure Dispose(var P: Pointer); Releases memory allocated
> for a dynamic variable.
Не путай динамический массив с динамической переменной. Не надо пачкать молодежи мозги, если сам не знаешь.
LMD
Суслик (2004-08-26 17:26:00) [12]Эх молодо-зелено.
(я о 3)
Автору.
Динамический массив в записи, а запись ты копируешь командой move...
или что-то такое...
В общем препятствуешь дельфи осуществлять корректный подсчет ссылок.
Amoeba (2004-08-26 17:26:00) [13]
> antonn © (26.08.04 17:23) [3]
> Запихай в try...except
В данном случае так делать "не есть хорошо". Такие исключения надо не отлавливать, а просто их не допускать. Пусть товарищь приведет свой код.
MegaVolt (2004-08-26 17:24:00) [14]RTFM :)
procedure Dispose(var P: Pointer); Releases memory allocated for a dynamic variable.
jack128 (2004-08-26 17:24:00) [15]antonn © (26.08.04 17:23) [3]
спаси боже от таких програмистов..
Amoeba (2004-08-26 17:23:00) [16]
> На это появляется ошибка "Invalid pointer operation".
Значит ошибка в 17-й строке. Код в студию!
antonn (2004-08-26 17:23:00) [17]Запихай в try...except
kj (2004-08-26 17:22:00) [18]На это появляется ошибка "Invalid pointer operation".
Семен Сорокин (2004-08-26 17:18:00) [19]SetLength(massiv, 0);
massiv := nil;
?