Страница 1 из 1

Delphi. ошибка

Добавлено: 30 янв 2009, 00:21
Esgal
Извените, не смог для сообщения более удачного название подобрать.... пишу на делфи, может уже мозг замылился. но в общем такая ошибка


сделанны объявления
[syntax=delphi]
type
DArray=array [0..4] of byte;
{
....
}
var
Form1: TForm1;
name,T,x :D Array;

[/syntax]

Вот реакция нажатия на кнопку
[syntax=delphi]
procedure TForm1.Button1Click(Sender: TObject);
begin
{a} Name[0]:=StrToInt(ComboBox1.text[2]);
{b} Name[1]:=StrToInt(ComboBox2.text[2]);
Name[2]:=StrToInt(ComboBox3.text[2]);
Name[3]:=StrToInt(ComboBox4.text[2]);
Name[4]:=StrToInt(ComboBox5.text[2]);
T[0]:=StrToInt(Edit1.text);
T[1]:=StrToInt(Edit2.text);
T[2]:=StrToInt(Edit3.text);
T[3]:=StrToInt(Edit4.text);
T[4]:=StrToInt(Edit5.text);
Timer1.Enabled:=true;
end;
[/syntax]

в строке "a" ошибка "Element 0 inaccessible - use 'Length' or 'SetLength'
а в строке "b" - "Left side cannot be assigned to"

если это я туплю, покажите где пожалуйста)

Re: Delphi. ошибка

Добавлено: 30 янв 2009, 00:37
Esgal
причём если массив name объявить как локальный параметр, то всё работает

Re: Delphi. ошибка

Добавлено: 30 янв 2009, 01:58
dr.Jekill
Не знаю почему у тебя рабоатет с локальным массивом, а так в строке "a" компилятор ругается, что ты не можешь использовать элемент массива с нулевым индексом.

Re: Delphi. ошибка

Добавлено: 30 янв 2009, 09:40
BBB
Esgal,
объяснение простое. Твоя ошибка возникает внутри метода класса-наследника TForm, в котором имеется property:
Name: TComponentName;

(TComponentName - это string)

Поэтому компилятор воспринимает идентификатор Name как попытку обратиться именно к элементу данного класса, а не к глобальной переменной.
Объявление же одноименной локальной переменной "перекрывает" поле класса (для обращение к тому следут тогда писать что-то вроде self.Name)

Легко понять, что текст твоей ошибки в строке "a" связан с попыткой обратиться к 0-му элементу переменной типа string.

Выход: если нужна глобальная переменная, измени ее наименование так, чтобы оно не совпадало с именем поля/property/метода класса.

Re: Delphi. ошибка

Добавлено: 30 янв 2009, 12:15
Esgal
всё ясно, спасибо большое...

Имя поменял по наитию ещё вчера. а причину ошибки не понял... теперь понял, спасибо