![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
Прабовал, не получаеться всё-равно, HELP!Последний раз редактировалось 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
|
|||
|
|||
|
Всем ГРОМАДНОЕ спасибо. Заработало)
|