Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Внизмассивы данных Найти похожие ветки
← →
Игорь_ (2004-09-21 09:38) [0]Есть массив MyArray = array of array of integer;
подскажите, пожалуйста, как его записать в память с помощью указателя?
← →
ЮЮ © (2004-09-21 09:46) [1]type
TMyArray = array of array of integer;
var
arr: TMyArray;
arr - это и есть указатель и находится, как не странно, в "памяти" :-)
← →
Игорь_ (2004-09-21 10:44) [2]Имелось в виду несколько другое:
var BytePtr:^ byte;
чтобы присвоить ей адрес конкретного места памяти используется операция @.
var BytePtr:^ byte;
ByteVal: byte;
begin
ByteVal := 255;
BytePtr :=@ByteVal
можно тоже самое проделать с массивом и, если можно, то как?
← →
Amoeba © (2004-09-21 10:47) [3]А в Help или в книжку заглянуть религия не позволяет? Там даже примеры есть.
← →
Игорь_ (2004-09-21 10:57) [4]Ну наверное заглядывал.
С.Бобровский Delphi7 нашел там про это только загадочную фразу, что одной командой это сделать нельзя.
Никита Культин Delphi6 -Вообще ничего не нашел относительно этого.
В Help тоже найти не могу ИБО изучаю Delphi6 только второй месяц.
← →
Erik1 © (2004-09-21 11:04) [5]А что тебя смущает, конечно можно, но ненужно. Потому, что если у тебя есть указатель на масив, то емеет смвсл выделеть ему память, а после незабыть освободить ее. Пример:
Type
TMyArray = array of array of integer;
PMyArray = ^TMyArray;
...
Var
MyArray: PMyArray;
Begin
New(MyArray);
SetLength(MyArray^, 1);
MyArray[0,0] := 1;
end;
И гдето
SetLength(MyArray^, 0);
Dispose(MyArray);
Хотя непонятно зачем тебе динамически создовать масив. Так с ним неработают.
← →
MBo © (2004-09-21 11:07) [6]>загадочную фразу, что одной командой это сделать нельзя
Это правда - двумерный динамический массив представляет собой отдельные блоки памяти, так что придется каждый массив низшего уровня сохранять отдельно.
type
TA:array of array of Integer;
var a:ta;
begin
SetLength(a,3,3);
теперь a является (неявным) указателем на массив из 3-х указателей на массивы данных, т.е.
a[0] - указывает на первый блок из 3-х чисел и т.д.
← →
MBo © (2004-09-21 11:09) [7]>Erik1 © (21.09.04 11:04) [5]
>PMyArray = ^TMyArray;
обычно такой подход не нужен
← →
Amoeba © (2004-09-21 11:10) [8]Это пример из Help:
The following example uses dynamic arrays (and the IntToStr function declared in the SysUtils unit) to create a triangular matrix of strings.
var
A : array of array of string;
I, J : Integer;
begin
SetLength(A, 10);
for I := Low(A) to High(A) do
begin
SetLength(A[I], I);
for J := Low(A[I]) to High(A[I]) do
A[I,J] := IntToStr(I) + "," + IntToStr(J) + " ";
end;
end;
← →
Игорь_ (2004-09-21 11:12) [9]Вообще-то я учусь на заочных курсах и у меня есть лабораторка в которой написано:
Шаг 9. Создайте обработчик событий для кнопки «Ввод дан-ных». Последовательность действий должна быть такой:
· записать в память сгенерированный двумерный массив вве-денной размерности N;
Вот я и мучаюсь.
← →
КаПиБаРа © (2004-09-21 11:12) [10]Игорь_ (21.09.04 10:44) [2]
можно тоже самое проделать с массивом и, если можно, то как?
С динамическим массивом лучше так не делать, т.к. при увеличении размера он "переедет" по другому адресу и все указатели полученные таким образом будут не действительны.
IntegerPtr := @MyArray[3,5] - указатель на 5 элемент массива в 3 строке.
=================================
Когда у тебя есть только молоток,
все похоже на гвоздь.
=================================
← →
Amoeba © (2004-09-21 11:13) [11]
> Erik1 © (21.09.04 11:04) [5]
Не сбивай молодого человека с панталыку!
← →
MBo © (2004-09-21 11:16) [12]http://www.delphikingdom.ru/lyceum/seminar.asp?partID=4
← →
Игорь_ (2004-09-21 11:35) [13]До того как сформировать массив размерности N*N я дошел
A : array of array of string;
I : Integer;
begin
SetLength(A, N);
for I := 0 to High(A) do
SetLength(A[I], N);
end;
а вот как его записать в память (с помощью @)я так и не понял!
← →
MBo © (2004-09-21 11:49) [14]>Игорь_ (21.09.04 11:35) [13]
1. N*N можно установить одним вызовом SetLength (см [6] )
2. >array of array of string;
речь сначала шла о числах - со строками работы еще добавится лишней
3. Почитай по ссылке в [12]
← →
Игорь_ (2004-09-21 11:56) [15]Спасибо всем за советы :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c