Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

очистить массив, удалить или еще чего с ним


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);


У меня "помогает". Что я делаю неправильно ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо