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

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

Объявление предела массива


Motion ©   (2005-06-04 18:06:00) 

При объявлении массива с количеством элементов X[1..n] необходимо сначала задать n, а n берётся с компонента spinedit.
Но сначала, объявляется массив, о потом считывается n. Можно ли зделать наоборот? Пример кода:

var n:integer;
var X: array[1..n] of real;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
n:=spinedit1.value;
end;


begin...end   (2005-06-04 18:54:00) [1]

> Motion ©   (04.06.05 18:06)

type
 TMyArray = array [1..MaxInt div sizeof(Real)] of Real;
var
 X: ^TMyArray;
 N: Integer;
begin
 N := ...;
 GetMem(X, N * sizeof(Real));
 try
   X[1] := ...
   ...
 finally
   FreeMem(X)
 end
end.


Недостаток: необходимо строго следить за корректностью индексов массива.


Anatoly Podgoretsky   (2005-06-04 18:43:00) [2]

Motion ©   (04.06.05 18:26) [6]
Как обращался к нулевому?


Motion   (2005-06-04 18:26:00) [3]

Получилось как посоветовал MBo, а теперь необходимо обратится не к нулевому а к первому элементу.


KilkennyCat   (2005-06-04 18:22:00) [4]

[4] - фигня.
можно просто неиспользовать нулевой элемент.


KilkennyCat   (2005-06-04 18:21:00) [5]

нет, но что мешает использовать нужный коэффициент при обращении к элементу? n[x+k], где k = 1 в требуемом случае. Разумеется, необходимо также учитывать, что некорректное обращение к последнему элементу вызовет ошибку.


Anatoly Podgoretsky   (2005-06-04 18:19:00) [6]

Motion ©   (04.06.05 18:14) [2]
А зачем? Можешь эмулировать.


Motion   (2005-06-04 18:14:00) [7]

А можно с 1-цы?


MBo   (2005-06-04 18:13:00) [8]

Можно использовать динамические массивы
X:array of Double;
...
SetLength(X,spinedit1.value);
нумерация с нуля!


Наверх

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