![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Операции с данными в ячейках StringGrid'а [D7, XP]
adept © (2012-11-27 23:18:00)Всем доброго времени суток !
Столкнулся с проблемой и не могу понять почему не работает
procedure TForm1.Timer1Timer(Sender: TObject);
var
Nac,dh,dh1,dh2,dh3,dh4,dh5,dh6,dh7: string;
//strc прописана глобально как интегер, переменной присваивается значение 1 при создании формы
begin
Nac:=StringGrid1.Cells[0,strc]; //присваеваем переменной начинку первой строки
dh1:=StringGrid1.Cells[0,strc][1]; // присваивание переменной значения 1-го символа с проверяемой ячейки
dh2:=StringGrid1.Cells[0,strc][2]; // присваивание переменной значения 2-го символа с проверяемой ячейки
dh3:=StringGrid1.Cells[0,strc][3]; //и т.д.
dh4:=StringGrid1.Cells[0,strc][4];
dh5:=StringGrid1.Cells[0,strc][5];
dh6:=StringGrid1.Cells[0,strc][6];
dh7:=StringGrid1.Cells[0,strc][7];
dh:=dh1 + dh2 + dh3 + dh4 + dh5 + dh6 + dh7; //обьеденяем значения воедино
showmessage(dh); //смотрим че вышло
if Nac='' Then strc:=1 else // если начинка пустая - просто переводим счётчик на начало
begin //если начинка чем-то заполнена - то работаем дальше
if dh='0д. 0ч.' then //проверятеся столбик СтрингГрида, в котором происходит обратный отсчёт
begin //если до выполнения задачи осталось 0 дней и 0 часов - проверяем минуты и выдаём сообщение (последнее пока не надо, тут первое не пашет ))))
showmessage('0д. 0ч.'); //если нашло - показало что нашло (работает)
strc:=strc + 1; //переход на след строку
end
else
begin
strc:=strc + 1;
end;
end;
end;
при первом "прохождении круга" всё прекрасно работает и всё показывает, однако при переходе "на второй круг" вылетает ошибка:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004756DF in module 'Project1.exe'. Read of address 00000000'. Process stopped. Use Step or Run to contineu.
И выделяется строка:
dh1:=StringGrid1.Cells[0,strc][1]
Уж не осудите если что не так, новичек я тут :)
O'ShinW (2012-11-28 09:11:00) [1]Время запуска задания надо хранить как время, а не как строки в стринггриде.
ветер - причина
Качания деревьев
не наоборот
Германн (2012-11-28 01:38:00) [2]
> adept © (27.11.12 23:45) [3]
>
> гм... проблема была не в этом, а в том, что присваивание
> символов надо было начинать после проверки, что символы
> вообще есть, а не то неё.....
Проблема была скорее всего именно в "этом".
adept (2012-11-27 23:45:00) [3]гм... проблема была не в этом, а в том, что присваивание символов надо было начинать после проверки, что символы вообще есть, а не то неё.....
adept (2012-11-27 23:42:00) [4]
> надо посмотреть, чему в момент ошибки равно strc и не превышает
> ли оно число строк - 1 в гриде
Спасибо!!!
вставил строку:
showmessage(IntToStr(strc));
перед проблемной строкой, оказывается оно дальше копает вместо того чтобы по кругу пойти!
Естественно находит пустую ячейку и в то время как пытается взять первый символ пустой ячейки - вылетает.
Все гениальное просто... )
еще раз спасибо !!
Игорь Шевченко (2012-11-27 23:36:00) [5]надо посмотреть, чему в момент ошибки равно strc и не превышает ли оно число строк - 1 в гриде