Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
1-1098909707
Garfunkel
2004-10-28 00:41
2004.11.14
Название загруженного в TImage изображения


14-1098276497
Cosinus
2004-10-20 16:48
2004.11.14
Господа, к кому можно обратиться по поводу архивов форумов?


9-1090344678
kruel
2004-07-20 21:31
2004.11.14
расстояние от точки до эллипса


1-1099284575
radix
2004-11-01 07:49
2004.11.14
Как вставить изображение (jpeg) в документ Word ?


3-1097649138
first_may
2004-10-13 10:32
2004.11.14
Yaffil...




   Наверх