Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизУказатель на массив. Найти похожие ветки
← →
Kolan © (2006-02-02 23:04) [0]Здравствуйте,
Простой вопрос:var
P: Pointer;
Arr: array of Byte;
begin
SetLEngth(Arr, 10);
P := Arr;
end;
Впрос - как добраться до элементов массива имеяP
?
← →
Loginov Dmitry © (2006-02-02 23:09) [1]Byte(Pointer(P + ElemIdx - 1)^) := Value;
← →
Loginov Dmitry © (2006-02-02 23:14) [2]Поправочка :)
Byte(Pointer(Integer(P) + ElemIdx - 1)^) := Value;
(-1 - если первый индекс единица. Можно и без нее)
← →
Eraser © (2006-02-02 23:17) [3]val := Byte(Pointer(integer(P) + ElemIdx)^);
← →
Eraser © (2006-02-02 23:17) [4]
> Loginov Dmitry © (02.02.06 23:14) [2]
эх... зря исправлял :)
← →
Kolan © (2006-02-02 23:31) [5]Loginov Dmitry © (02.02.06 23:14) [2]
Eraser © (02.02.06 23:17) [3]val := Byte(Pointer(integer(P) + ElemIdx)^);
А обяснить можно? :)
Типа:integer(P)
преобразуем указательв число длятого чтобы...
Благодарю за помошь....
← →
Eraser © (2006-02-02 23:36) [6]
> Kolan © (02.02.06 23:31) [5]
> nteger(P) преобразуем указательв число длятого чтобы...
к этому числу можно было прибавить смещение, по которому находится нужный элимент. Т.к. длина типа байт равна одному байту, то просто прибавляем индекс элимента к указателю на массив и всё.
← →
Almaz © (2006-02-03 00:38) [7]
> Впрос - как добраться до элементов массива имея P?
Как альтернатива предложенному варианту, особенно, если не задумываться о размере элемента массива, можно сделать так:type
TDynByteArray = array of byte;
...
var
Arr: TDynByteArray;
P: Pointer;
begin
SetLength(Arr, 10);
P := Arr;
...
TDynByteArray(P)[5] := Value;
...
end.
Удачи.
← →
begin...end © (2006-02-03 08:14) [8]PByte(PAnsiChar(Arr) + ElemIdx)^
← →
Pointer (2006-02-04 01:01) [9]procedure TForm1.Button1Click(Sender: TObject);
VAR P: Pointer; Arr: array[0..10] of Byte;
I:word;
begin
FOR I:=0 TO 10 DO Arr[i]:=i;
P := @Arr[0];
FOR I:=0 TO 10 DO
BEGIN
Caption:=Caption+" "+inttostr(PByte(P)^);
INC(PByte(P));
END;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.083 c