![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамеческие массивы
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]Тоесть, конечно, динам_И_ческие :о)