![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к элементу массива.
GEN++ © (2004-12-31 04:47:00)//основная программа
.....
type
pBase=^byte;
var
Base:pBase;
mas:array[0..999] of byte;
implemitation
procedure proc1();
begin
Base:=@(mas[0]);
proc2(base,5);
end;
//в DLL
.....
procedure proc2(X:pointer; i:word);
type
pY=^byte;
var
Y:pY;
begin
Y:=pY(base);
inc(Y,i):=$55;
end;
так проходит
А как обратиться к i-му элементу массива mas
в виде база+смещение, например как в СИ
char *Y;
Y=base;
(Y+i)*=0x55;
GEN++ (2004-12-31 14:01:00) [1]>Digitman ©
>Palladin ©
Спасибо.
Digitman (2004-12-31 08:43:00) [2]вообще-то есть предопределенный указательный тип PByteArray, и изобретать свои типы для указательных целей нет никакого резона
//основная программа
.....
var
mas: array[неважно_чего] of byte;
implemitation
procedure proc1();
begin
proc2(@mas,5);
end;
//в DLL
.....
procedure proc2(Base:PByteArray; Offset:Integer);
begin
Base[Offset] := $55;
end;
Palladin (2004-12-31 08:36:00) [3]1ый способ
procedure proc2(X:pointer; i:word);
type
pY=^array [0..0] of byte;
...
pY(X)[i];
...
2ой способ
pY(Integer(x)+i)^;