![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте, нужна помощь, необходимо при вычислении наибольшей суммы строки таблицы, выдавать сообщение при наличии пустой ячейки или неверного символа, что то наподобие 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. |
|
#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;
... |
|
#6
|
|||
|
|||
|
Отлично_)
Спасибо вам) |