Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Недоступность значения свойства типа массив [D6, WinXP]


AZ ©   (2004-10-30 07:22:00) 

Объясните, пожалуйста, почему при установке свойства 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-31 07:11:00) [1]

Спасибо!


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

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-30 20:04:00) [3]

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

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


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

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


AZ   (2004-10-30 07:54:00) [5]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо