![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() __кол-1___|___кол-2___|
____1,1___|____2,1_____| ____1,2___|____2,2_____| ____1,3___|____2,3_____| Код:
if (1,2>1,1)and(1,2<2,1) then showmessage('dfgdegf'); if (1,3>1,2)and(1,3<2,2) then showmessage('dfgdegf'); и т.д. ПОМОГИТЕ ПОЖАЛУЙСТА!!! Как это осуществить? |
#2
|
|||
|
|||
![]() Код:
if (StrToInt(StringGrid.Cells[1,2]) > StrToInt(StringGrid.Cells[1,1])) And (StrToInt(StringGrid.Cells[1,2]) < StrToInt(StringGrid.Cells[2,1])) Then ShowMEssage('!!!'); второе усливие по аналогии. Да, еще - если в ячейке будет значение, которое нельзя конвертировать в целое число, то будет ошибка. А вообще, если таких сравнений очень много, то ужобнее будет сразу весь грид перевести в массив (отконвертировать) и уже работать с этим 2-мерным массивом. |
#3
|
|||
|
|||
![]() Да)) В гриде много строк. Вот я делаю так:
Код:
procedure TForm1.Button1Click(Sender: TObject); var BeginDate, EndDate: Tdatetime; r: integer; begin for r:= 1 to StringGrid1.RowCount do begin if (stringgrid1.Cells[0, r]<>'')or(stringgrid1.Cells[1, r]<>'') then begin BeginDate:= StrToDate(Stringgrid1.Cells[0, r]); EndDate:= StrToDate(Stringgrid1.Cells[1, r]); if (StrToDate(StringGrid1.Cells[0,r+1])>BeginDate)and(StrToDate(StringGrid1.Cells[0,r+1])<EndDate) then showmessage(StringGrid1.Cells[0,r+1] + ' входит в период ' + ' от '+ DateToStr(BeginDate) + ' по ' + DateToStr(EndDate)); end; end; end; |
#4
|
|||
|
|||
![]() ЧУВАКИ, ПОМОГИТЕ
![]() ![]() ![]() |
#5
|
|||
|
|||
![]() угу, ошибку выхода за границу списка (Index out of bounds).
Список начинается с 0 и идет до count-1. Цикл поправь. |
#6
|
|||
|
|||
![]() ![]() Последний раз редактировалось vnutr, 06.01.2011 в 08:06. |
#7
|
||||
|
||||
![]() r+1 тоже не помешает на r заменить.
Присмотрелся, судя по алгоритму заменить не выйдет. Значит надо ловить конец списка. По типу: Код:
if r = StringGrid1.RowCount- 1 then Последний раз редактировалось TOJluK, 06.01.2011 в 09:35. |
#8
|
|||
|
|||
![]() ![]() |
#9
|
||||
|
||||
![]() Цитата:
Код:
if r < StringGrid1.RowCount- 1 then begin if (StrToDate(StringGrid1.Cells[0,r+1])>BeginDate)and(StrToDate(StringGrid1.Cells[0,r+1])<EndDate) then showmessage(StringGrid1.Cells[0,r+1] + ' входит в период ' + ' от '+ DateToStr(BeginDate) + ' по ' + DateToStr(EndDate)); end else ShowMessage('Конец списка'); |
#10
|
|||
|
|||
![]() TOJluK не работает всё равно
![]() Я поместил это условее в мой цикл после ввода дат. И та же ошибка. Может я что-то не так делаю? Помоги, плизззз Последний раз редактировалось vnutr, 06.01.2011 в 17:28. |
#11
|
|||
|
|||
![]() ЛЛЛЛЮЮЮЮДДДДДДИИИИИИ!! Христом Богом прошу, кто-небудь мне поможет???
|
#12
|
||||
|
||||
![]() Цитата:
|
#13
|
||||
|
||||
![]() Так попробуйте:
Код:
procedure TForm1.Button1Click(Sender: TObject); var BeginDate, EndDate, WrkDate: TDate; r: integer; begin for r:= 0 to StringGrid1.RowCount-2 do begin if (stringgrid1.Cells[0, r] <> '') and (stringgrid1.Cells[1, r] <> '') and (stringgrid1.Cells[0, r+1] <> '') then begin BeginDate := StrToDate(Stringgrid1.Cells[0, r]); EndDate := StrToDate(Stringgrid1.Cells[1, r]); WrkDate := StrToDate(Stringgrid1.Cells[0, r+1]); if (WrkDate > BeginDate) and (WrkDate < EndDate) then showmessage(StringGrid1.Cells[0,r+1] + ' входит в период ' + ' от '+ DateToStr(BeginDate) + ' по ' + DateToStr(EndDate)); end; end; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#14
|
|||
|
|||
![]() Всем ГРОМАДНОЕ спасибо. Заработало)
|