Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические массивы. Вставка элементов. Добавление элементов в серидину массива. 
:(
    Опции темы
Sunspot
Дата 4.9.2006, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.9.2006

Репутация: нет
Всего: нет



Господа специалисты, пожалуйста, помогите добавить новые элементы в середину динамического массива. 
Делаю следующим образом:

Код

type
  TArrayString = array of integer;
...
Procedure InArrayIndex( var X: TArrayString; Index: integer; ANew: integer );
begin
   if Index >= Length(X) then Index := Length( X );
   setLength(X, Length(X)+1);
   move(X[Index], X[Index+1], (Length(X)-Index) * sizeof(Integer)+1);
   X[Index] := ANew;
end;


В конец массива добавляется без проблем, а вот в любое другое место не получается. Что не так???

PM MAIL   Вверх
Kuvaldis
Дата 4.9.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Sunspot, 
Код

Procedure InArrayIndex( var X: TArrayString; Index: integer; ANew: integer );
var
  i, len : integer;
begin
   len := Length(X);
   if Index >= Length(X) then Index := len;
   setLength(X, len + 1);
   for i := len downto Index + 1 do
       X[i] := X[i - 1];  
   X[Index] := ANew;
end;


А вообще такие вопросы задавай или в специальный раздел, посвященный конкретному языку (в данном случае Pascal), или в центр помощи
 smile 

Это сообщение отредактировал(а) Kuvaldis - 4.9.2006, 09:46


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
maxim1000
Дата 4.9.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



насколько я понял, проблема была с использованием move...
тогда, действительно, лучше в Delphi


--------------------
qqq
PM WWW   Вверх
Alexeis
Дата 4.9.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Sunspot @  4.9.2006,  08:21 Найти цитируемый пост)

move(X[Index], X[Index+1], (Length(X)-Index) * sizeof(Integer)+1);

Что же мы делаем на место n+1-элемента записываем n-й и тем самым затирем его, потом n+1-й (там уже записан n-й)  записываем в n+2, т.о. вся концовка заполняется значениями n-го элемента.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Romikgy
Дата 4.9.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



А Tlist не лучше юзать?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Sunspot
Дата 5.9.2006, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.9.2006

Репутация: нет
Всего: нет



А как Tlist использовать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0899 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.