Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2008, 20:19   #1
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
Вопрос Как очистить массив?

Здравствуйте. Подскажите пожалуйста, как можно быстро очистить массив, чтобы не отнимать много машинного времени? Массив состоит из записей (Record), а запись включает типы String и Extended. Существуют какие-то экономные методы кроме включения массива в цикл for i:=1 to n do ...?

Заранее благодарен.
лучший подарок женщине-программисту

Последний раз редактировалось chandrasecar; 08.11.2008 в 20:22.
chandrasecar вне форума Ответить с цитированием
Старый 08.11.2008, 21:10   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Что есть очистить массив??? обнулить значения элементов массива? Удалить все элементы массива?
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 08.11.2008, 21:39   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от chandrasecar Посмотреть сообщение
Здравствуйте. Подскажите пожалуйста, как можно быстро очистить массив, чтобы не отнимать много машинного времени? Массив состоит из записей (Record), а запись включает типы String и Extended. Существуют какие-то экономные методы кроме включения массива в цикл for i:=1 to n do ...?

Заранее благодарен.
Присутствие String все меняет... всеравно прийдется переберать все в цикле.
BOBAH13 вне форума Ответить с цитированием
Старый 08.11.2008, 21:46   #4
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Если удалить все элементы массива, то как это сделать?
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 08.11.2008, 21:52   #5
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Если массив динамический то тупа сделать длинну массива = 0
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 09.11.2008, 00:34   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Вторя всем выше отписавшимся Length(mas,0) либо mas:=nil
vovk вне форума Ответить с цитированием
Старый 09.11.2008, 13:58   #7
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,603
По умолчанию

Если обнулить статический массив то:
[code]
fillchar(mas,sizeof(mas),0);
[code]

Значения Extended станут = 0, а строки ''
Gorychev вне форума Ответить с цитированием
Старый 09.11.2008, 14:24   #8
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от Gorychev Посмотреть сообщение
Если обнулить статический массив то: fillchar(mas,sizeof(mas),0);
Если строки короткого типа, то всё будет нормально, но ведь по умолчанию строки имеют тип AnsiString и в массиве они представлены лишь ссылками. Если обнулить ссылки, то получится, что содержимое строк просто останется "висеть" где-то в памяти, для больших массивов или при частой очистке это может создать значительные проблемы. Разве не так?
Jeni вне форума Ответить с цитированием
Старый 09.11.2008, 14:54   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
По умолчанию

Память не очистится просто освободятся адреса, в смысле кто захочет тот займёт я прав?
vovk вне форума Ответить с цитированием
Старый 09.11.2008, 20:39   #10
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

Функция FillChar заносит в объект указанное число указанных байтов

Модуль System

Объявление

procedure FillChar(var X; Count: Integer; Value: Byte);

Описание
Функция FillChar заносит в объект, на который ссылается X, Count значений Value. Value может иметь тип Byte или Char. Никакой проверки того, сколько значений может вместить объект, не производится. Так что надо следить, чтобы объект не переполнился и не нарушилось в результате распределение памяти.

Пример
Следующий код заполняет массив символов S пробелами:

var S: array[0..79] of char;
begin
FillChar(S, SizeOf(S), Ord(' '));
end;

=================================== ======================

Учитывая тот факт, что у вас используется массив записей, в котором фигурируют строки, придется в цикле обнулять все значения.
Иначе будет происходить б. утечка памяти (см. высказывания выше)
MalexG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как очистить экран? dimorik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 01.10.2008 18:29
Как очистить буфер обмена? StasSv Microsoft Office Excel 2 11.08.2008 17:38
Как очистить Canvas? beegl Общие вопросы Delphi 4 30.05.2008 02:51
Как очистить Canvas? Pro_BerSerK Общие вопросы Delphi 9 30.01.2008 16:03
как очистить экран doncova1 Общие вопросы C/C++ 3 18.03.2007 09:50