Ром, скажу откровенно, так считать - зло.
Но, в твоём случае можно использовать StrToInt
Def(Строка, 0);
Ноль будет возвращаться в том случае, если конвертировать строку не получится.
Код:
for i:=3 to stringgrid1.ColCount-1 do // по всем предметам, кроме учебных работ
begin
for j:= 2 to stringgrid1.RowCount do // по всем ученикам
begin
ok := Boolean(StrToInt(stringgrid1.Cells[8,j]));
if stringgrid1.Cells[i,j] = '3' and ok then k := 1.00 // если появилась хоть одна тройка, но всё ок с общ работой, то степуха будет
else if stringgrid1.Cells[i,j] = '4' then k := 1.25 // если троек нет, но есть 4ка то степухе + 25%
else k := 1.5; // если ни 3ек ни 4ок и с работой ок то к степухе 50%
end;
stringgrid1.Cells[9,i] := FormatFloat('0.00', StrToFloat(Edit1.Text) * k);
end;