![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
очистить массив, удалить или еще чего с ним
bash77 © (2012-03-15 11:01:00)вот код:
Type Ttest = Record
Stranica : boolean;
ID_voprosa : String;
Voprosik : String;
Otvetik : Array [1..6] of String;
Validik : Array [1..6] of boolean;
Pravilno : Array [1..6] of boolean;
end;
var
Testik:array of Ttest;
когда первый раз работаю с массив все норм, но когда мне надо его использовать повторно, так я его очистить не могу (
это не помогает:
SetLength(Testik,0);
и это:
Testik:=nil;
и циклом не получается:(
for i:=low(Testik) to higt(Testik) do
begin
.......
for j:=1 to 6 do
begin
Testik[i].Validik[j]:=false;
.....
end;
end;
причем как-то странно... значение validik не очищается тока у Testik[максимум]
в остальном чисто все. Дельфа ХЕ
помогите плиз
sniknik (2012-03-15 17:21:00) [1]> Господа, это только в Delphi XE так?
судя по всему "заслуга" FastMM, который в последних дельфях стал основным.
bash77 (2012-03-15 16:55:00) [2]походу вернусь на Д7 впоследствии... просто проект IW писал под XE последним, думал и останусь тут... но Д7 непобедима походу )))
begin...end (2012-03-15 15:59:00) [3]> han_malign, icWasya
Господа, это только в Delphi XE так? В D7 в случае динамических массивов (но не строк) выделенная под новые элементы память заполняется нулями вне зависимости от типа элементов, несмотря на аналогичное предупреждение в справке. См. System.DynArraySetLength.
bash77 (2012-03-15 14:29:00) [4]ок, спасибо ребят, не ожидал такого (как обычно у меня нету времени лазать по форумам)... но терь и сам тут пропишусь ! )
icWasya (2012-03-15 14:05:00) [5]Если в элементе массива (в Вашем случае Ttest) есть поля с управляемыми типами - строки, динамические массивы или интерфейсы, то при выделении памяти они будут проинициализированы нулевыми указателями, но поля всех остальных типов, как уже сказано выше, будут иметь неопределённое значение.
han_malign (2012-03-15 12:25:00) [6]For a long-string or dynamic-array variable, SetLength reallocates the string or array referenced by S to the given length. Existing characters in the string or elements in the array are preserved, but the content of newly allocated space is undefined.
Сергей М. (2012-03-15 12:10:00) [7]
> после использования, мне его надо очистить (унижтожить..
> ... и т.д.)
Он сам уничтожится, если он объявлен локальной переменной.
bash77 (2012-03-15 11:40:00) [8]опачки, затуп, сорри
Jeer (2012-03-15 11:38:00) [9]
> Otvetik : Array [1..6] of String;
> Validik : Array [1..6] of boolean;
> Pravilno : Array [1..6] of boolean;
И это динамические массивы ?
bash77 (2012-03-15 11:37:00) [10]Testik - а это не динамический ???
но проблему я решил так - принудительно теперь заполняю заранее.
но все равно не ясно... массив валидик помнил прежнее значение...
даже после прогона по циклу с выставление значений.. странно все это как-то
Anatoly Podgoretsky (2012-03-15 11:32:00) [11]
> bash77 (15.03.12 11:28) [4]
> само собой динамический массив.
Ну тогда покажи реальный код, в данном нет динамических массивов.
bash77 (2012-03-15 11:28:00) [12]само собой динамический массив.
после использования, мне его надо очистить (унижтожить..... и т.д.)
чтобы после установить его длину и заново считывать и заполнять
Anatoly Podgoretsky (2012-03-15 11:23:00) [13]> Сергей М. (15.03.2012 11:13:01) [1]
Ну ты наверно используешь динамические массивы?
bash77 (2012-03-15 11:16:00) [14]дак вот я сам в шоке...
Сергей М. (2012-03-15 11:13:00) [15]
> это не помогает:
> 1
>
> SetLength(Testik,0);
У меня "помогает". Что я делаю неправильно ?