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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многомерный динамический массив, Удаление из массива элемента 
:(
    Опции темы
Radist121079
Дата 7.6.2006, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте...
         Помогите пожалуйста, как удалить из многомерного массива указанный столбец или строку?

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

Спасибо! 

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  DynArray.pas 2,02 Kb
PM MAIL   Вверх
Yanis
Дата 7.6.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Radist121079 @  7.6.2006,  10:10 Найти цитируемый пост)
может там ощибки есть

Может быть. Ты напиши, что тебя не устраивает в своей реализации. 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Radist121079
Дата 7.6.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В моей версии, при удалении из массива с двумя столбцами возникает ощибка...
и я понятия не имею как удалять строку из массива 
PM MAIL   Вверх
Yanis
Дата 7.6.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Radist121079 @  7.6.2006,  10:39 Найти цитируемый пост)
В моей версии, при удалении из массива с двумя столбцами возникает ощибка...
и я понятия не имею как удалять строку из массива  

Во первых тебе нужно сначала его создавать, что бы было к чему обращаться. Поотому что 
Код
fArray: array of array of Byte;

по сути пустое место, пока ему не задашь длину. Длину наверное можно к конструктору прикрутить. Тогда конструктор будетиметь приблизительно такой вид:
Код
constructor Create(Width, Height: Byte);
{ ... }
constructor TArray.Create(Width, Height: Byte);
begin
  SetLength(fArray, Width, Height);
end;
  

Это сообщение отредактировал(а) Yanis - 7.6.2006, 09:49


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
skyboy
Дата 7.6.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



А зачем тебе такие проблемы? Реализовал бы хранение в списке списков... А RowCount/ColCount хорошо бы сделать не только читаемыми, но и "писаемыми", с забивкой создаваемых ячеек каким-нить "значением по умолчанию"... 
PM MAIL   Вверх
Yanis
Дата 7.6.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А деструктор это вообще шедевр smile нужно же за собой убирать то, что намусорили... Значит переделываем деструктор:
Код
destructor TArray.Destroy;
begin
  SetLength(fArray, 0, 0);
end;
 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Radist121079
Дата 7.6.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Конечно, я не пытаюсь не удалять что то не создавая!
Код

procedure TArray.SetRowCol(Col, Row: Integer);
begin
  SetLength(fArray,Col,Row);
end;

процедуру я так назвал потому что мне придется много раз менять размер массива, не буду же я каждый раз вызывать метод Create, они у меня остались как мусор smile, а медот SetRowCol он более понятен на мой взгляд..., а то что в методе Destroy написано - это я эксперименторовал, а потом про это забыл...

А собственно на мой вопрос то вы ребята не ответили.....   
PM MAIL   Вверх
Yanis
Дата 7.6.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Radist121079 @  7.6.2006,  11:07 Найти цитируемый пост)
не буду же я каждый раз вызывать метод Create

И не надо. Но было бы логичнее созавать массив не пустой. А потом по мере надобности менять его размеры.

Цитата(Radist121079 @  7.6.2006,  11:07 Найти цитируемый пост)
а медот SetRowCol он более понятен на мой взгляд...

Я бы переименовал в SetArraySize. 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Radist121079
Дата 7.6.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да, я переименую именно так...
а можно ли класс без методов Create и Destroy создавать? 
PM MAIL   Вверх
Yanis
Дата 7.6.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Radist121079 @  7.6.2006,  11:39 Найти цитируемый пост)
а можно ли класс без методов Create и Destroy создавать?  

Можно. Они уже там есть. Только вызывать их всё равно придётся.... 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
skyboy
Дата 7.6.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Radist121079, шутник smile Задействовал динамическую структуру, а чистить память, занимаемой её, отказываешься smile А чем тебя конструкторы/деструкторы напрягают? 
PM MAIL   Вверх
Radist121079
Дата 7.6.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вообщето они меня не напрягяют, но я думаю не правильно будет каждый раз когда надо изменить размер массива вызывать конструктор..., но я думаю один раз создать, а потом вызывать 
Код

procedure TArray.SetArraySize(Col, Row: Integer);    
begin    
  SetLength(fArray,Col,Row);    
end;

 
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.1404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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