Вниз
Скачать: CL | DM;

Указатель   Найти похожие ветки 

← →
Василий Кузнецов   (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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.012 c
1-1178179727
Novice
2007-05-03 12:08
2007.07.01
Алгоритм нечеткого сравнения файлов


1-1177832568
Лысеющий Самурай
2007-04-29 11:42
2007.07.01
SetWindowsHookEx


3-1175766680
Rule
2007-04-05 13:51
2007.07.01
удаление файлов и файловых групп в MSSQL сервере 2000 и 2005


15-1179299780
хронос
2007-05-16 11:16
2007.07.01
еклипс_паскаль


15-1180885888
VID
2007-06-03 19:51
2007.07.01
Ребята, подскажите стоит ли СУБД Cache того, что бы ее изучать ?




   Наверх