Форум: "Начинающим";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
ВнизУказатель Найти похожие ветки
← →
Василий Кузнецов (2007-06-06 23:46) [0]Здравствуйте, а нельзя как в Си...
var
P : ^integer;
a : array of integer;
b : array of integer;
begin
SetLength(a, 10);
SetLength(b, 10);
P := a;
^(P) := 1;
^(P+1) := 2;
P := b;
//........
end;
такая задумка, в Делфи не моуг перевести.
Спасибо.
← →
Плохиш © (2007-06-06 23:58) [1]Прикольно, вместо изучения основ, пытаются засандалить какой-то указатель, туда, где он нафик не нужен
a[0] := 1;
a[1] := 2;
и т.д.
аналогично для другого массива
А ещё тайну приоткрою, в паскале есть три типа циклов...
← →
Василий Кузнецов (2007-06-07 00:09) [2]
> А ещё тайну приоткрою, в паскале есть три типа циклов...
Спасибо большое - приоткрыли
суть не в том чтобы элементу массива значение присвоить а чтобы на указатель ссылался сначала на один массив а потом на другой
← →
DrPass © (2007-06-07 00:17) [3]p:=@a[0];
p^:= 1;
inc(integer(p), 4);
p^:= 2;
p:=@b[0];
← →
DrPass © (2007-06-07 00:20) [4]P.S. Вдогонку... как не знающему основ, на всякий случай напомню, что в строке inc(integer(p), 4) слово integer не имеет никакого отношения к слову integer в строке a : array of integer;
← →
Василий Кузнецов (2007-06-07 00:51) [5]
> P.S. Вдогонку... как не знающему основ, на всякий случай
> напомню, что в строке inc(integer(p), 4) слово integer не
> имеет никакого отношения к слову integer в строке a : array
> of integer;
Спасибо за ответ
Я так полагаю перевели физический адрес в байты, добавили 4
← →
DrPass © (2007-06-07 01:00) [6]
> Я так полагаю перевели физический адрес в байты, добавили
> 4
Верно ;)
← →
Германн © (2007-06-07 01:30) [7]
> Я так полагаю перевели физический адрес в байты, добавили
> 4
Имхо, лучше не полагаться на текущий размер типа Integer. Он ведь и изменится может. Такое уже однажды было.
← →
Defunct © (2007-06-07 02:18) [8]Василий Кузнецов (07.06.07 00:09) [2]
Может надо нечтно навроде такого (чуть-чуть ближе к C получится):const
WHO_CARES = 1024 * 1024;
type
PArray = ^TArray;
TArray = array[0..WHO_CARES] of integer;
var
P : PArray;
A : Array[1..20] of integer;
B : Array[0..10] of integer;
...
begin
P := PArray( @A[Low(A)] );
P[0] := 10;
P[1] := 15;
...
P := PArray( @B[Low(B)] );
P[0] := 20;
P[1] := 30;
...
end;
← →
begin...end © (2007-06-07 14:35) [9]> DrPass © (07.06.07 00:17) [3]
> inc(integer(p), 4)
Inc(p)
← →
SpellCaster (2007-06-07 15:08) [10]> [3] DrPass © (07.06.07 00:17)
чтобы уж совсем коротко:p:=@a;
p^:= 1;
inc(p,4);
p^:= 2;
p:=@b;
← →
Германн © (2007-06-07 16:53) [11]
> SpellCaster (07.06.07 15:08) [10]
>
> inc(p,4);
>
А если хелп почитать?
← →
KSergey © (2007-06-08 08:44) [12]> Василий Кузнецов (07.06.07 00:09) [2]
> а чтобы на указатель ссылался сначала на один массив а потом
> на другой
А можно узнать зачем это вообще надо? ну т.е. задача-то какая?
← →
SpellCaster (2007-06-08 19:06) [13]> [11] Германн © (07.06.07 16:53)
Млин, сорри - именно это и хотел удалить, но забыл :(
Разумеется,inc(p);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c