Показать сообщение отдельно
  #20  
Старый 11.11.2010, 08:39
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от ilyas09
У меня немного другая задача. Нужно в процедуре заполнить значения элементов массива, изменив его размер.
Как я понял, в этом случае нужно в основной программе "обновить" указатель на массив, примерно следующем образом:
Код:
var
DATA : array of Float; 
p:pointer;

procedure MassEdit(var pMass : Pointer);
var
mass: array of Float;
begin
  Pointer(mass) := pMass;
  SetLength(mass,3);
  mas[0]:=1;
  mas[1]:=1;
  mas[2]:=1;
  pMass:=@mass[0];
  Pointer(mass) :=nil;
end;

//далее  идёт кусок из текста, в котором обращаюсь к процедуре
...
p:=@DATA[0];
MassEdit(p);
pointer(DATA):=p;
...
//далее обращаемся к элементам массива DATA

Я правильно делаю?
обьяви тип
Код:
TDataArr = array of Float
процедуру обьяви так:
Код:
procedure MassEdit(var pMass : TDataArr);
...
внутри компилятора это будет такая же работа с адресом, но в коде так удобнее
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием