Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

Недоступность значения свойства типа массив   Найти похожие ветки 

 
AZ ©   (2004-10-30 07:22) [0]

Объясните, пожалуйста, почему при установке свойства AuxParams
из другого модуля при входе в процедуру SetAuxParams массив недоступен?
(В отладке при установке курсора на .Name сообщение "FAuxParams[Index].Name=Inaccessible value)
Как следствие недоступности, Access violation...


type
 TAuxParam = record
   Name: string[63];
   Value: single;
   Module: integer;
   Channel: integer;
   Use: boolean;
 end;

// Форма создается в Runtime

 TfrmAuxParams = class(TForm)
.
.
.
   procedure btAuxExitClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   procedure SetAuxParams(Index: integer; const Value: TAuxParam);
   function GetAuxParams(Index: integer): TAuxParam;
 public
   { Public declarations }
   FAuxParams: array[0..3] of TAuxParam;
   property AuxParams[Index: integer]: TAuxParam read GetAuxParams
                                        write SetAuxParams;
 end;
.
.
.
procedure TfrmAuxParams.SetAuxParams(Index: integer; const Value: TAuxParam);
begin

 FAuxParams[Index].Name:=Value.Name;
//------------------^^^ Место курсора при трассировке
.
.
end;


 
AZ ©   (2004-10-30 07:54) [1]

В догонку.
Если в Project>Options>Forms установить frmAuxParams в Autocreate, то все ОК. Сейчас стоит в Enable forms (мне нужно создавать форму в Runtime).
В чем фокус?


 
DiamondShark ©   (2004-10-30 12:00) [2]

Как создаётся форма?
Чему равен Index?


 
AZ ©   (2004-10-30 20:04) [3]

>DiamondShark ©   (30.10.04 12:00) [2]
>Как создаётся форма?
>Чему равен Index?

Как обычно.
Индекс нормальный, в пределах(равен 0).


 
Игорь Шевченко ©   (2004-10-30 20:50) [4]

AZ ©   (30.10.04 20:04) [3]

Ты будешь удивлен, но у меня все прекрасно работает:

procedure TForm1.Button1Click(Sender: TObject);
const
 MyAuxParam: TAuxParam = (Name: "AuxParam"; Value: 0.0; Module: 0; Channel: 0;
   Use: true);
begin
 with TfAuxParams.Create(Application) do begin
   AuxParams[0] := MyAuxParam;
   AuxParams[1] := MyAuxParam;
   AuxParams[2] := MyAuxParam;
   Show;
 end;
end;


Остальной код скопирован из твоего поста.

Кстати, совет, объявить поле FAuxParams в разделе private :)


 
AZ ©   (2004-10-31 07:11) [5]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
3-1097581615
Term
2004-10-12 15:46
2004.11.14
ERwin как подключиться к базе MSSQL2000


1-1099084127
Ded Moroz
2004-10-30 01:08
2004.11.14
Plugins


1-1098787117
Андерсон
2004-10-26 14:38
2004.11.14
HelpFile


14-1098798518
oldman
2004-10-26 17:48
2004.11.14
Я ЕЕ ТАКИ РЕШИЛ!!!


14-1098896574
Настенька!!!
2004-10-27 21:02
2004.11.14
Корешик "Вика"