Цитата:
Сообщение от supernewbie
mikser, попробуй print('Длинна массива : '+intToStr(SizeOf(OpArray) div SizeOf(Integer)));
|
тоже самое получается:
PHP код:
{запустите в именно паксе! а не в делфи }
program tvarTest;
uses SysUtils;
procedure OpenArrayTest(const OpArray: array of Integer);
var
i: Integer;
Len:Integer;
begin
Len:=SizeOf(OpArray) div SizeOf(Integer) ;
print('Длинна массива : '+intToStr(Len));
print('Последний индекс: '+intToStr( Len-1 ));
for i := Low(OpArray) to Len-1 do
begin
print('Array ' +IntToStr( i )+' = '+ IntToStr( OpArray[i] ) );
end;
end;
begin
OpenArrayTest([11,22,33,44,55,66,77]);
end.
SizeOf(OpArray)=4
видимо это указатель
Добавлено через 28 минут
Уря победил!!!
Помогло старое-доброе насилие - преобразование типов
обявляем какойнить тип вроде MyType=array of Integer;
что по существу есть описание динамического массива
а потом преобразуем нашь массив к нему MyType(mass)
Но полученый код будет работать только с массивом из целых чисел
Потому было принято решение юазть Array of Const для универсальности
Вот рабочий код:
DELPHI Код:
{запустите в именно паксе! а не в делфи }
program tvarTest;
uses SysUtils;
type TDAoC=array of const;
procedure OpenArrayTest(const OpArray: array of Integer);
var
i: Integer;
begin
print('Длинна массива : '+intToStr(length(TDAoC(opArray))));
print('Последний индекс: '+intToStr( High(TDAoC(opArray)) ));
for i := Low(TDAoC(opArray)) to High(TDAoC(opArray)) do
begin
print('Array ' +IntToStr( i )+' = '+ IntToStr( OpArray[i] ) );
end;
end;
begin
OpenArrayTest([11,22,33,44,55,66,77]);
end.
Код:
Print: Длинна массива : 7
Print: Последний индекс: 6
Print: Array 0 = 11
Print: Array 1 = 22
Print: Array 2 = 33
Print: Array 3 = 44
Print: Array 4 = 55
Print: Array 5 = 66
Print: Array 6 = 77