Ел
Елена

Тип указателя динамический массив FreePascal

Как преобразовать указатель типа pointer к типу ppbyte?

type pbyte=^byte;
ppbyte=^pbyte;
procedure RotateMatrixDynamic(pmatrix:pointer);
var i, j: integer; n: word;
begin
n:=byte((pmatrix-4)^);
n:=n+1;

// преобразовать pmatrix из pointer в ppbyte

for i:=1 to n do begin
for j:=1 to n do begin
write(pmatrix^^,' ');
inc(pmatrix^);
end;
inc(pmatrix);
end;

end;

Cоnst N=3;
var ps:array of array of byte;

procedure fill(); // заполнение матрицы
var x:byte;
i,j:integer;
begin
x:=10;
setlength(ps,N);
for i:=0 to N-1 do begin
setLength(ps,N);
for j:=0 to N-1 do begin
ps[j]:=x;
inc(x,10);
end;
end;
end;

procedure out(); // вывод матрицы на экран
var i,j:integer;
begin
writeln;
for i:=0 to N-1 do begin
for j:=0 to N-1 do write(ps[j]:5);
writeln;
end;
end;

begin
fill();
out();
RotateMatrixDynamic(pointer(ps));
end.

Весь код привожу, чтобы понятнее было. В n - хранится размер массива (кол-во строк или столбцов, так как они равны, матрица квадратная) . Это благодаря pointer. А дальше надо работать с типом ppbyte...
Я уже задавала. . http://otvet.mail.ru/comments/answer/426313783/comment/78730156/
Но мне надо конкретный ответ. . Прямо код мне напишите пожалуйста.. .а то я уже столько времени мучаюсь ((

Илья Соловьев
Илья Соловьев

var ps:array of array of byte;

type pbyte=^byte;
ppbyte=^pbyte;

RotateMatrixDynamic(pointer(ps));

Твоя проблема, скорее всего, в том, что это - несовместимые типы. Динамические массивы не являются упакованными и приводить их к указателям и работать через указатели нельзя.

А код такой тебе тут не напишут, не надейся. Так что сама как-нибудь.

Похожие вопросы
динамический массив, delphi
Как задать динамический массив в языке C#
Помогите переделать в динамический массив пожалуйста. язык Си
Массив указателей с++
Как выделить из строки числа.... и запилить их в динамическую очередь ( дин. массив)????
А если выводить значения указателей определенных разными типами ..
c++ динамический массив
Как с помощью записать динамический массив
Как сконвертировать динамический массив в строку (string)? C#
Указатели динамического массива, функции, c++