|
Вопрос # 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.
Чисти код! Чисти код! Чисти код!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|