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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытые массивы 
:(
    Опции темы
ilyuha
Дата 10.7.2007, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здрасьте
ситуация такая:
я пишу прогу по обработке БД. заранее, естественно, количество ее элементов не известно. я решил заюзать открытые массивы, но до этого я их не использовал... только читал про них. и тут же возникла проблема.
к примеру, если я пишу
... 
mytype=array of integer;
...

то компилятор материться на отсутствие индексов...

подскажите плиз, в чем трабла?

ЗЫ юзаю я BP7
PM MAIL   Вверх
nmn
Дата 10.7.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в паскале нет открытых массивов, можно использовать списки
PM Skype   Вверх
ilyuha
Дата 10.7.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nmn, как так? везде пишут, что открытые массивы введены с 7-ой версии
PM MAIL   Вверх
Throne
Дата 10.7.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в трех разных изданиях (на бумаге) посмотрел статьи про массивы. нигде такого нет.
--------------------
Компьютер — это наредкость тупая вещь, но считает с феноменальной скоростью. 
PM MAIL   Вверх
nmn
Дата 10.7.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



при передаче массива параметром индексы не указываются это правда, но сколько я писал на паскале на 7 версии массивов без индексов не встречал   smile 

Это сообщение отредактировал(а) nmn - 10.7.2007, 21:56
PM Skype   Вверх
ilyuha
Дата 10.7.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nmn, блин. а как же быть? под мою задачу списками довольно геморно будет smile и довольно медленно(((
PM MAIL   Вверх
greenpc
Дата 11.7.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ilyuha
типа того 
Код

Type 
  TMyArray=Array[1..1] of Integer;
  PTMyArrayr=^TMyArray;

Var 
  MyArray: PTMyArray;
  Count,  i: integer;

Begin
  Write('размерность: ');
  ReadLn(Count);
  GetMem(MyArray,Count*SizeOf(Integer));
  for i:=1 to Count do begin
     MyArray^[i]:=i;
     write(MyArray^[i]);
  end;
  FreeMem(MyArray, Count*SizeOf(Integer));
end;

PM   Вверх
ilyuha
Дата 11.7.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хм, такое мне и в голову не приходило smile а не будет материться на выход за пределы индексов???
PM MAIL   Вверх
Nite
Дата 11.7.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В BP7 нельзя выходить за границы сегмента. Поэтому максимальное число элементов массива, если они integer, будет порядка 32700. В общем случае, размер данных не должен превышать 65520 байт. Это число надо разделить на размер одного элемента (2 байта для integer), получишь максимальный размер массива.

Чтобы не ругалось про выход за границы массива, можно описать тип так

TMyArray=Array[1..32700] of Integer;

И при обращениях к элементами придется индекс проверять явно, чтобы не было выхода за границы.
PM MAIL   Вверх
ilyalyu
Дата 11.7.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Странно, что нет открытых масивов. Пиши на Delphi или на FreePascal - там есть.
PM MAIL   Вверх
ilyuha
Дата 11.7.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Nite @  11.7.2007,  16:03 Найти цитируемый пост)
TMyArray=Array[1..32700] of Integer;

имхо, не лучший способ... я хочу грамотно юзать память

Цитата(ilyalyu @  11.7.2007,  17:05 Найти цитируемый пост)
Пиши на Delphi или на FreePascal 

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


народ, помогите организовать данные плиз smile 
PM MAIL   Вверх
nmn
Дата 13.7.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну так используй списки или как сказал greenpc, чем не открытый массив?

Добавлено через 4 минуты и 58 секунд
Цитата(Nite @  11.7.2007,  16:03 Найти цитируемый пост)
TMyArray=Array[1..32700] of Integer;

чем неграмотно данное использование памяти?
ведь это будет не статический массив, ты сам будешь выделять память, а данная запись только что бы успокоить компилятор.
PM Skype   Вверх
ilyuha
Дата 13.7.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nmn, тогда прошу прощения у Nite... я его не правильно понял


а вообще, посоветуйте, с чем гемора менььше будет, со списками или с таким массивом?
PM MAIL   Вверх
nmn
Дата 13.7.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



списки гибче, но там нужно время для поиска элемента, у массивов же время поиска отсутствует - там сразу известно где находится элемент, но отсутствует та гибкость, которая присуща спискам, нельзя так же легко поменять расположение элементов(это справедливо для структуированых типов), нельзя передавать элементы из одного массива в другой как в списках, там можно очень лего перебросить элемент из одной записи в другую и др.
PM Skype   Вверх
volvo877
Дата 15.7.2007, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(ilyalyu @  11.7.2007,  17:05 Найти цитируемый пост)
Странно, что нет открытых масивов.

Может быть уже можно научиться называть вещи своими именами? Есть в Паскале открытые массивы (a.k.a open arrays), только автору нужны не открытые, а динамические - это разные вещи.

Код

procedure p(var a: array of integer); { <-- Вот A - это открытый массив }
begin
  ...
end;

nmn, теперь о твоем перле:

Цитата(nmn @  13.7.2007,  21:26 Найти цитируемый пост)
нельзя так же легко поменять расположение элементов (это справедливо для структуированых типов)
Пример таких структурированных типов, которые не позволяют обменивать элементы массива между собой, можно привести?

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

2. Публиковать ссылки на варез

3. Оффтопить

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

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




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


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

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