Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 007

/ вопрос решён /

Здравствуйте, уважаемые эксперты! подскажите пожалуйста, в чем может быть проблема. При компиляции выдает сообщение об ошибке: For loop control variable must be simple local variable. Переменная описана в этом же блоке. В связи с чем может возникать эта ошибка?

Приложение:
  1. procedure TForm1.StringGrid4Enter(Sender: TObject);
  2. var
  3.  
  4.  
  5. begin
  6. s:= 0;
  7.  
  8. if StringGrid4.Cells[1,i]='' then s := s+0
  9. else s := s + StrToFloat(StringGrid4.Cells[1,i]);
  10. end;


Михаил Лебедев Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Михаил Лебедев (статус: Посетитель)
Вопрос отправлен: 8 февраля 2011, 22:08
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: Паровоз

Здравствуйте, Михаил Лебедев!
Замените
for i = 1
на
for i := 1

Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 8 февраля 2011, 22:51
Оценка за ответ: 5

Комментарий к оценке: Спасибо, помогло!

Мини-форум вопроса

Всего сообщений: 15; последнее сообщение — 13 июня 2011, 12:18; участников в обсуждении: 6.
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 8 февраля 2011, 22:50 [#1]:

Видимо, у вас есть ещё глобальная переменная i. Удалите её или переименуйте.
Михаил Лебедев

Михаил Лебедев (статус: Посетитель), 8 февраля 2011, 23:24 [#2]:

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

Паровоз (статус: 10-ый класс), 8 февраля 2011, 23:28 [#3]:

"Видимо, у вас есть ещё глобальная переменная"

Локальная переменная закрывает глобальную. Поэтому это ошибкой быть не может.
Михаил Лебедев

Михаил Лебедев (статус: Посетитель), 8 февраля 2011, 23:29 [#4]:

Спасибо пользователю Паровоз! Помогло
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 8 февраля 2011, 23:38 [#5]:

Цитата (Паровоз):

Локальная переменная закрывает глобальную. Поэтому это ошибкой быть не может.

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

8 февраля 2011, 23:38: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.)

min@y™

min@y™ (статус: Доктор наук), 9 февраля 2011, 11:23 [#6]:

Блин, индусы кругом! Ну что это за безобразие?
if StringGrid4.Cells[1,i]='' 
  then s := s + 0 // <----- o_O
  else s := s + StrToFloat(StringGrid4.Cells[1,i]);
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 9 февраля 2011, 19:50 [#7]:

Цитата (Михаил Лебедев):

за грубость

Может я чего-то не понимаю?
Потрудитесь, сударь, объясниться за оценку "-1". Между прочим, моё высказывание относительно Вашего "кода" является ВОПРОСОМ.
Итак, за что "-1"? Где тут грубость?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Михаил Лебедев

Михаил Лебедев (статус: Посетитель), 9 февраля 2011, 23:43 [#8]:

Прошу прощения, но вопрос я задавал со всем не про то, о чем Вы меня спрашивали. Я получил ответ на поставленный мною вопрос, а насчет остального кода, так с ним проблем не было. Я далеко не профессионал в деле программирования, и пока что только учусь. И вопрос, который задали Вы, мне не совсем понятен. Может это и безобразие, но для меня главное чтобы работало.
min@y™

min@y™ (статус: Доктор наук), 10 февраля 2011, 08:30 [#9]:

Цитата (Михаил Лебедев):

Может это и безобразие, но для меня главное чтобы работало.

За такое отношение к работе надо руки отрывать.
То, что ты "только учусь", это я понял и, поэтому пытался наставить тебя на П.И. своим указанием на "безобразие". Учись дальше.
var
  Sum, Temp: Double; // Сумма и временная переменная
  ARow: Integer; // счетчик (номер строки)
begin
  Sum:= 0;
 
  with StringGrid4 do
    for ARow:= 1 to RowCount - 1 do
      if TryStrToFloat(Cells[1, ARow], Temp)
        then Sum:= Sum + Temp;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Михаил Лебедев

Михаил Лебедев (статус: Посетитель), 10 февраля 2011, 11:01 [#10]:

Спасибо за помощь. Признаю, что действительно погорячился. Теперь буду стараться исправится :-)
min@y™

min@y™ (статус: Доктор наук), 10 февраля 2011, 11:17 [#11]:

Цитата (Михаил Лебедев):

Признаю, что действительно погорячился.

Ты тут такой далеко не первый.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 13 июня 2011, 05:42 [#12]:

min@y™: А что за венгерская нотация? Почему ARow?
Чисти код! Чисти код! Чисти код!
bugmenot

bugmenot (статус: 3-ий класс), 13 июня 2011, 06:46 [#13]:

Цитата (Gooddy):

что за венгерская нотация? Почему ARow?

Это скорее индийская нотация, 'A' призвано обозначать аргумент. (префикс локальных переменных - 'L')
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 13 июня 2011, 10:16 [#14]:

Нашли, к чему придраться. Заняться больше нечем?
var
  Sum, Temp: Double; // Сумма и временная переменная
  Index: Integer; // счетчик (номер строки)
begin
  Sum:= 0;
 
  with StringGrid4 do
    for Index:= 1 to RowCount - 1 do
      if TryStrToFloat(Cells[1, Index], Temp)
        then Sum:= Sum + Temp;
end;
Так лучше?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 13 июня 2011, 12:18 [#15]:

Я не придирался, просто не понял почему A.
Чисти код! Чисти код! Чисти код!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.03 сек.