|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проверка содержимого ячейки TStringGrid
Здравствуйте, нужна помощь, необходимо при вычислении наибольшей суммы строки таблицы, выдавать сообщение при наличии пустой ячейки или неверного символа, что то наподобие VAL только с таблицей. Не могу реализовать, помогите..
Код:
procedure max_sum(Tabl_Sg:TStringGrid;N_Out:TEdit;Stolb_Ed,Str_Ed:TLabeledEdit); Var i,j,x,max,k:integer; begin Tabl_Sg.ColCount:=StrToInt(Stolb_Ed.text)+1; {Присвоение количества столбцов} Tabl_Sg.RowCount:=StrToInt(Str_Ed.text)+1; With Tabl_Sg do begin max:=0; K:=1; {присвоение значение переменной} For i:=1 to ColCount-1 do {нахождение строки с максимальной суммой} max:=max+StrToint(Cells[i,1]); for j:=2 to RowCount-1 do begin x:=0; For i:=1 to ColCount-1 do x:=x+StrToInt(Cells[i,j]); if x>max then begin max:=x; K:=j; end; end; N_Out.Text:=FloatToStr(k); {присвоение значения k компоненту N_Out} exit; end; end; |
#2
|
||||
|
||||
Используй TryStrToInt.
Если нужно проигнорировать неверное значение - StrToIntDef. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
Цитата:
Код:
function trs(ds: string; var vs: integer): boolean; var i: integer; begin Result:= false; if ds = '' then exit; for i:= 0 to Length(ds) do case ds[i] of '0'..'9': Result:= true; else Result:= false; end; if Result then vs:= StrToInt(ds); end; procedure max_sum(Tabl_Sg:TStringGrid;N_Out:TEdit;Stolb_Ed,Str_Ed:TLabeledEdit); Var i,j,x,max,k, t:integer; begin Tabl_Sg.ColCount:=StrToInt(Stolb_Ed.text)+1; {Присвоение количества столбцов} Tabl_Sg.RowCount:=StrToInt(Str_Ed.text)+1; With Tabl_Sg do begin max:=0; K:=1; {присвоение значение переменной} For i:=1 to ColCount-1 do {нахождение строки с максимальной суммой} if trs(Cells[i,1],t) then max:= max + t else begin ShowMessage('Пустая ячека!'); Exit; end; for j:=2 to RowCount-1 do begin x:=0; For i:=1 to ColCount-1 do if trs(Cells[i,j],t) then x:= x + t else begin ShowMessage('Пустая ячека!'); Exit; end; if x>max then begin max:=x; K:=j; end; end; N_Out.Text:=FloatToStr(k); {присвоение значения k компоненту N_Out} exit; end; end; З.Ы. Угу, УК angvelem, хоршая мысля приходит опосля Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 22.04.2013 в 03:23. |
#5
|
||||
|
||||
И зачем такие сложности (отдельная функция)?
Код:
var z : Integer; ... For i := 1 to ColCount - 1 do {нахождение строки с максимальной суммой} if TryStrToInt(Cells[i, 1], z) then inc(max, z); else begin ShowMessage('Пустая ячека!'); Exit; end; ... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
|||
|
|||
Отлично_)
Спасибо вам) |