Форум: "Основная";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];
Вниза как правильно выполнять арифмитические действия в StringGrid? Найти похожие ветки
← →
PTE (2002-06-03 12:37) [0]а как правильно выполнять арифмитические действия в StringGrid если нужно складывать и умножать данные по отдельным ячейкам?
← →
Игорь Шевченко (2002-06-03 12:47) [1]Преобразовывать текстовое представления Cells[Col,Row] в числа и выполнять арифметические действия с числами.
← →
Катерина (2002-06-03 12:48) [2]
with StrGrid do
cells[i3,j3]):= FormatFloat("0.000",StrToFloat(cells[i1,j1])+ StrToFloat(cells[i2,j2]));
Примерно так.
← →
PTE (2002-06-03 13:02) [3]огромное человеческое спасибо
← →
PTE (2002-06-03 13:47) [4]Произвожу арифметические действия в ячейках
procedure TForm1.Button15Click(Sender: TObject);
Все полученные значения я должен умножить на 20 и разделить на 120, если в ячейках у меня данные введены, то все нормально, но если я ввожу не все данные программа вываливается в ошибку, как это исправить?
begin
with StringGrid1 do
cells[3,1]:=
FormatFloat("0.000",StrToFloat(cells[1,1])* StrToFloat(cells[2,1]));
with StringGrid1 do
cells[3,2]:=
FormatFloat("0.000",StrToFloat(cells[1,2])* StrToFloat(cells[2,2]));
.......
with StringGrid1 do
cells[3,10]:=
FormatFloat("0.000",(StrToFloat(cells[3,1])+ StrToFloat(cells[3,2])
+StrToFloat(cells[3,3])+StrToFloat(cells[3,4])+ StrToFloat(cells[3,5])
+StrToFloat(cells[3,6])+StrToFloat(cells[3,7])+ StrToFloat(cells[3,8]))
*20/120);
end;
И ещё вопрос как можно приравнять значение из ячейки к компоненту Lable?
← →
PTE (2002-06-03 14:04) [5]как приравнять значение из ячейки к компоненту Lable я сделал, а вот как решить вопрос с ошибкой? Она выскакивает если только не заполнены ячейки по которым происходят ар.действия
← →
Игорь Шевченко (2002-06-03 14:13) [6]if Length(Trim(Cells[Col,Row])) <> 0 then
Делать то, что нужно
← →
AFROLOV (2002-06-03 14:27) [7]
> Игорь Шевченко © (03.06.02 14:13)
> if Length(Trim(Cells[Col,Row])) <> 0 then
> Делать то, что нужно
Надо бы еще проверять является ли строка числом.
← →
Катерина (2002-06-03 14:28) [8]Или так:
var S,S1 : real; i :integer;
begin
S := 0;
with StringGrid1 do
for i := 1 to 9 do
try
S1 := StrToFloat(cells[1,i])*StrToFloat(cells[2,i]);
S := S + S1;
cells[3,i] := FormatFloat("0.000",S1);
except
else
cells[3,i] := "";
end;
StringGrid1.cells[3,10] := FormatFloat("0.000",S*20+120);
end;
← →
PTE (2002-06-03 14:29) [9]так получается мне это условия для каждой ячейке описать нужно? а потом после каждой писать код арифметики?
А может можно как-то проще типа присвоить по умолчанию всем ячейкам 0, и тогда будет все считать нормально или я не прав?
← →
Катерина (2002-06-03 14:38) [10]Приведенный код делает то же самое, что и Ваш, только, если в ячейке не число (пусто или посторонние символы), то в результат ничего не пишется и число не учавствует в суммировании.
← →
Катерина (2002-06-03 14:47) [11]Можно и так, без try...
var c1,c2, S,S1 : real; code1, code2, i :integer;
begin
S := 0;
with StringGrid1 do
for i := 1 to 9 do
begin
val(cells[1,i],c1,code1);
val(cells[2,i],c2,code2);
if (code1 = 0) and (code2 = 0) then
begin
S1 := c1*c2;
S := S + S1;
cells[3,i] := FormatFloat("0.000",S1);
end else
cells[3,i] := "";
end;
StringGrid1.cells[3,10] := FormatFloat("0.000",S*20/120);
end;
← →
PTE (2002-06-03 15:20) [12]Всё равно ошибка осталась
← →
Катерина (2002-06-03 15:50) [13]Пришлите код, лучше на e-mail, т.к. на формум сегодня не выйду
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c