Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамеческие массивы


Miwa ©   (2002-04-03 21:42:00) 

Возможна ли работа с subj в Паскале 7.0 или более ранних версиях? Если да, то как?


Anatoly Podgoretsky   (2002-04-04 09:57:00) [1]

Var arr:array[1..i] of sometype;
А ыт пробовал проверить в компиляторе, если у тебя I константа, то какое это отношение имеет к динамике, если переменная, то попробуй сначала.


Miwa   (2002-04-03 23:42:00) [2]

2 Malder © (03.04.02 22:55)

> Miwa, ты уверен в том, что говоришь ?

Вообще-то после твоего вопросса - нет. Кажется, я делал немного не так. Было что-то вроде

Procedure SomeProc;
Var arr:array[1..i] of sometype;

Все-таки, лет 5 назад делал, так что прости уж...

2 KaPaT ©
По-моему, хватит. Спасибо большое.


KaPaT   (2002-04-03 23:02:00) [3]

Кстати можно в Паскале 7 в процедурах делать массивы открытого типа:
Function Name(var Mas:array of Integer) : Integer;


KaPaT   (2002-04-03 22:56:00) [4]

И еще чуть-чуть:
For i:=1 to 100 do GetMem(example_mas^[i],SizeOf(Integer)) - выделение памяти под массив

example_mas^[2]:=5 -обращение к элементу массива (к его значению)


Malder   (2002-04-03 22:55:00) [5]

Miwa, ты уверен в том, что говоришь ?

Procedure MyProc(arr:array [a..b]of sometype)<>/code

По моему, объявление размерности массива при объявлении подпрограмы невозможно. В Delhi так нельзя. Неужели в Pascal 7 так можно ?!


KaPaT   (2002-04-03 22:49:00) [6]

1)Надо создать новый тип в разделе type, где будет описываться этот массив.
type
massive = array [1..100] of Integer;
2)А дальше как с динамическими переменными
var
example_mas : ^massive
Вот! Что-нибудь еще?


Лёша   (2002-04-03 22:21:00) [7]

Вот у Кулибы пример:


Const

MaxBooleans = (High(Cardinal) - $F) div sizeof(boolean);

Type

TBoolArray = array[1..MaxBooleans] of boolean;
PBoolArray = ^TBoolArray;

Var

B : PBoolArray;
N : integer;

BEGIN

N := 63579;
{= получение памяти под динамический массив.. =}

GetMem(B, N*sizeof(boolean));
{= работа с массивом... =}

B^[3477] := FALSE;
{= возвращение памяти в кучу =}
{$IFDEF VER80}

FreeMem(B, N*sizeof(boolean));
{$ELSE}

FreeMem(B);
{$ENDIF}
END.


Miwa   (2002-04-03 22:16:00) [8]

В принципе, можно вроде создавать массивы в процедуре типа

Procedure MyProc(arr:array[a..b]of sometype)

Но это не очень красиво, по-моему. Никто ничего получше не знает?


lipskiy   (2002-04-03 22:06:00) [9]

Имхо, нет.
Тоже была такая потребность - не нашел способа, кажется, никак нельзя.


Miwa   (2002-04-03 22:00:00) [10]

Тоесть, конечно, динам_И_ческие :о)


Наверх

Титульная страница Поиск, карта сайта Написать письмо