|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.11.2008, 20:19 | #1 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
Как очистить массив?
Здравствуйте. Подскажите пожалуйста, как можно быстро очистить массив, чтобы не отнимать много машинного времени? Массив состоит из записей (Record), а запись включает типы String и Extended. Существуют какие-то экономные методы кроме включения массива в цикл for i:=1 to n do ...?
Заранее благодарен.
лучший подарок женщине-программисту
Последний раз редактировалось chandrasecar; 08.11.2008 в 20:22. |
08.11.2008, 21:10 | #2 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
Что есть очистить массив??? обнулить значения элементов массива? Удалить все элементы массива?
Помог? Ну так нажми на весы!
|
08.11.2008, 21:39 | #3 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
|
|
08.11.2008, 21:52 | #5 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
Если массив динамический то тупа сделать длинну массива = 0
Помог? Ну так нажми на весы!
|
09.11.2008, 00:34 | #6 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
Вторя всем выше отписавшимся Length(mas,0) либо mas:=nil
|
09.11.2008, 13:58 | #7 |
Участник клуба
Регистрация: 08.03.2008
Сообщений: 1,537
|
Если обнулить статический массив то:
[code] fillchar(mas,sizeof(mas),0); [code] Значения Extended станут = 0, а строки '' |
09.11.2008, 14:24 | #8 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Если строки короткого типа, то всё будет нормально, но ведь по умолчанию строки имеют тип AnsiString и в массиве они представлены лишь ссылками. Если обнулить ссылки, то получится, что содержимое строк просто останется "висеть" где-то в памяти, для больших массивов или при частой очистке это может создать значительные проблемы. Разве не так?
|
09.11.2008, 14:54 | #9 |
!=
Участник клуба
Регистрация: 08.09.2008
Сообщений: 1,751
|
Память не очистится просто освободятся адреса, в смысле кто захочет тот займёт я прав?
|
09.11.2008, 20:39 | #10 |
Форумчанин
Регистрация: 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; =================================== ====================== Учитывая тот факт, что у вас используется массив записей, в котором фигурируют строки, придется в цикле обнулять все значения. Иначе будет происходить б. утечка памяти (см. высказывания выше) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как очистить экран? | 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 |