Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив как переменная цикла. Особенность языка или что??? 
V
    Опции темы
ivan219
Дата 17.12.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Отказывается компилить:
Код

var
  Form1: TForm1;
  A: Array[0..1] of Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 for A[0] := 0 to 9 do
  begin

  end;
end;

почему???
PM MAIL ICQ   Вверх
MetalFan
Дата 18.12.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



непонятно, а зачем?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Hang
Дата 18.12.2007, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 16.12.2007
Где: Вологда

Репутация: нет
Всего: 3



Поскольку цикл управляется переменной, то должна быть простая переменная!
PM ICQ   Вверх
skyboy
Дата 18.12.2007, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(Hang @  17.12.2007,  23:22 Найти цитируемый пост)
то должна быть простая переменная! 

j чем компилятор чесно сообщает. странно, ivan219, что ты не увидел надписи "loop variable must be simple variable" в списке сообщений компилятора
PM MAIL   Вверх
ivan219
  Дата 18.12.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Цитата(MetalFan @  18.12.2007,  00:01 Найти цитируемый пост)
непонятно, а зачем?

А почемубы и нет!
Цитата(skyboy @  18.12.2007,  00:36 Найти цитируемый пост)
ivan219, что ты не увидел надписи "loop variable must be simple variable" в списке сообщений компилятора

Увидел вот и спрашиваю почему так нельзя чем обычная переменная лучше чем массив smile 
PM MAIL ICQ   Вверх
skyboy
Дата 18.12.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



в принципе, для программиста - ничем.
у тебя какая версия компилятора? в 2007, вроде бы, такие конструкции вполне работают, а в 7ке - нет.
дело в том, что если обычная переменная имеет адрес, то массивы, свойства объектов и прочий "синтаксический сахар"(например, изменчивые записи) доступны не через адрес, а после некоторых дополнительных операций(арифметические операции для массива, вызов функции для свойства объекта и т.д.), что усложняет процесс компиляции(незначительно) и усложняет процесс проверки правильности кода(для массива - вхождение индекса в пределы границ, для свойства объекта - чтоб свойство имело метод для чтения значения и т.д.), что мне кажется достаточной причиной для отказа от использования.
впрочем, это умозаключения, не подкрепленные ссылками на доверенные источники.
PM MAIL   Вверх
ivan219
  Дата 18.12.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Цитата(skyboy @  18.12.2007,  13:35 Найти цитируемый пост)
у тебя какая версия компилятора?

Delphi 7
PM MAIL ICQ   Вверх
bems
Дата 18.12.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



это ограничение компилятора, связанное с оптимизацией по скорости. Непонятно только, почему бы разработчикам компилятора не делать оптимизацию там, где это возможно, а где невозможно - генерить неоптимальный код, но не ограничивать программиста.

Добавлено через 1 минуту и 36 секунд
Цитата(MetalFan @  18.12.2007,  00:01 Найти цитируемый пост)
непонятно, а зачем? 
ну например если в массиве нужно сохранить последнее значение параметра цикла (в случае досрочного завершения)



--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1741 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.