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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2013, 18:34   #1
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию Безразмерный массив

Извиняюсь если тема такая была.
Как в паскаль сделать Динамический массив которому бы не надо было каждый раз задавать размер к примеру сделать массив который будет иметь безграничное число ячеек.
Alexandr17-10 вне форума Ответить с цитированием
Старый 28.10.2013, 19:50   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А не бывает ничего неограниченного в программах и в системе в целом. Это вам не Вселенная. Бесконечность которой тоже спорное понятие. Тем более массивов. Даже так называемый бесконечный цикл рано или поздно заканчивается, с помощью того же диспетчера задач, например
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.10.2013, 20:10   #3
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Ну мне чтобы просто не указывать размер так как количество ячеек неизвестно.
Я пишу скрипт для игры на движке паскаль скрипт так вот нужно сделать массив которому не нужно будет задавать размер
Alexandr17-10 вне форума Ответить с цитированием
Старый 28.10.2013, 20:43   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Так думаю, что место для хранения, и в достаточно большом объёме, можно было бы получить из Heap'а. Но для такого случая, возможно, потребуется переписать уже готовые процедуры/функции.
В общем то есть такая процедура, как getmem(var p : pointer; size :word).
С её помощью можно получить память на size байт.
Эту память можно использовать по разному. Освобождается такая память через процедуру freemem(var p : pointer; size :word).
На сколько много и как много требуется?
В частности, нужное кол-во памяти можно запросить в самый подходящий момент, когда размер известен, а затем расширить, если потребуется.
Только для большой памяти надо использовать и подходящий Паскаль.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 28.10.2013, 20:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Array of тип;
Или используй списки - класс TList, если паскаль поновее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2013, 21:26   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

В Паскале такого нет, в других ЯП встречается.
Arigato вне форума Ответить с цитированием
Старый 29.10.2013, 21:48   #7
Kodzaev
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 1
По умолчанию

Можно отключить контроль выхода за границы диапазона с помощью директивы {$R-}. Вот пример, в котором массив будет заполняться до тех пор, пока пользователь не нажмет клавишу. Думаю, идея ясна?
Код:
uses
  Crt;

type
  MyType = integer;
  vector = array [1..1] of MyType;

var
  x: ^vector;
  i: longint;

begin
  {$R-}
  ClrScr;
  Randomize;
  repeat
    i := i + 1;
    New(x);
    x^[i] := Random(9) + 1;
    Write(x^[i], #32);
    Dispose(x);
  until KeyPressed;
end.
Kodzaev вне форума Ответить с цитированием
Старый 29.10.2013, 21:58   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Что, простите?
Массив нужен в том, и только в том, когда нам необходимо хранить информацию, для её последующей обработки, Ваш вариант эту инфу не хранит..
Poma][a вне форума Ответить с цитированием
Старый 29.10.2013, 22:05   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Kodzaev, вы какую-то ерунду написали...
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} Nickolai47 Помощь студентам 5 16.12.2012 14:51
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
безразмерный одномерный массив SunKnight Общие вопросы C/C++ 1 20.02.2008 04:13