| 
| 
 | Вопрос # 5 007/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты! подскажите пожалуйста, в чем может быть проблема. При компиляции выдает сообщение об ошибке: For loop control variable must be simple local variable. Переменная описана в этом же блоке. В связи с чем может возникать эта ошибка? Приложение:Переключить в обычный режим procedure TForm1.StringGrid4Enter(Sender: TObject);var  begin  s:= 0;     if StringGrid4.Cells[1,i]='' then s := s+0    else s := s + StrToFloat(StringGrid4.Cells[1,i]);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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 9 февраля 2011, 19:50 [#7]: Цитата (Михаил Лебедев): за грубость Может я чего-то не понимаю?
 Потрудитесь, сударь, объясниться за оценку "-1". Между прочим, моё высказывание относительно Вашего "кода" является ВОПРОСОМ.
 Итак, за что "-1"? Где тут грубость?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Михаил Лебедев (статус: Посетитель), 9 февраля 2011, 23:43 [#8]:Прошу прощения, но вопрос я задавал со всем не про то, о чем Вы меня спрашивали. Я получил ответ на поставленный мною вопрос, а насчет остального кода, так с ним проблем не было. Я далеко не профессионал в деле программирования, и пока что только учусь. И вопрос, который задали Вы, мне не совсем понятен. Может это и безобразие, но для меня главное чтобы работало. |  
|   | 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™ (статус: Доктор наук), 10 февраля 2011, 11:17 [#11]: Цитата (Михаил Лебедев): Признаю, что действительно погорячился. Ты тут такой далеко не первый.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 13 июня 2011, 05:42 [#12]:min@y™: А что за венгерская нотация? Почему ARow? Чисти код! Чисти код! Чисти код! |  
|   | bugmenot (статус: 3-ий класс), 13 июня 2011, 06:46 [#13]: Цитата (Gooddy): что за венгерская нотация? Почему ARow? Это скорее индийская нотация, 'A' призвано обозначать аргумент. (префикс локальных переменных - 'L')
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | 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 (статус: 3-ий класс), 13 июня 2011, 12:18 [#15]:Я не придирался, просто не понял почему A. Чисти код! Чисти код! Чисти код! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |