Показать сообщение отдельно
Старый 26.07.2012, 18:04   #7
Местный
 
Аватар для mikser
 
Регистрация: 26.01.2009
Сообщений: 1,097
Сказал Спасибо: 178
Имеет 119 спасибок в 84 сообщенях
mikser пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
mikser, попробуй print('Длинна массива : '+intToStr(SizeOf(OpArray) div SizeOf(Integer)));
тоже самое получается:
PHP код:
{запустите в именно паксеа не в делфи }
program tvarTest;
uses SysUtils;


procedure OpenArrayTest(const OpArray: array of Integer);
var
  
iInteger;
  
Len:Integer;
begin
  
  
  Len
:=SizeOf(OpArraydiv SizeOf(Integer) ;
  
  print(
'Длинна массива  : '+intToStr(Len));
  print(
'Последний индекс: '+intToStrLen-1  ));
  
  
  for 
:= Low(OpArrayto Len-do
  
begin
    
print('Array ' +IntToStr)+' = 'IntToStrOpArray[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] ) );    endend;    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
__________________
Играю по фэншую используя /allblock, созерцая красоту игрового мира, сосредоточившись на получении энергии Ци при убийстве мобов.
icq=((2*3*(19^2)*37)-1)*9

Последний раз редактировалось mikser, 26.07.2012 в 18:33. Причина: Добавлено сообщение
mikser вне форума   Ответить с цитированием