Форум: "Начинающим";
Текущий архив: 2013.07.28;
Скачать: [xml.tar.bz2];
ВнизОперации с данными в ячейках StringGrid а Найти похожие ветки
← →
adept © (2012-11-27 23:18) [0]Всем доброго времени суток !
Столкнулся с проблемой и не могу понять почему не работает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]
Уж не осудите если что не так, новичек я тут :)
← →
Игорь Шевченко © (2012-11-27 23:36) [1]надо посмотреть, чему в момент ошибки равно strc и не превышает ли оно число строк - 1 в гриде
← →
adept © (2012-11-27 23:42) [2]
> надо посмотреть, чему в момент ошибки равно strc и не превышает
> ли оно число строк - 1 в гриде
Спасибо!!!
вставил строку:
showmessage(IntToStr(strc));
перед проблемной строкой, оказывается оно дальше копает вместо того чтобы по кругу пойти!
Естественно находит пустую ячейку и в то время как пытается взять первый символ пустой ячейки - вылетает.
Все гениальное просто... )
еще раз спасибо !!
← →
adept © (2012-11-27 23:45) [3]гм... проблема была не в этом, а в том, что присваивание символов надо было начинать после проверки, что символы вообще есть, а не то неё.....
← →
Германн © (2012-11-28 01:38) [4]
> adept © (27.11.12 23:45) [3]
>
> гм... проблема была не в этом, а в том, что присваивание
> символов надо было начинать после проверки, что символы
> вообще есть, а не то неё.....
Проблема была скорее всего именно в "этом".
← →
O'ShinW © (2012-11-28 09:11) [5]Время запуска задания надо хранить как время, а не как строки в стринггриде.
ветер - причина
Качания деревьев
не наоборот
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.07.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c