Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.13;
Скачать: CL | DM;

Вниз

а как правильно выполнять арифмитические действия в 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);
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;
Все полученные значения я должен умножить на 20 и разделить на 120, если в ячейках у меня данные введены, то все нормально, но если я ввожу не все данные программа вываливается в ошибку, как это исправить?
И ещё вопрос как можно приравнять значение из ячейки к компоненту 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-40077
MV-GROB
2002-06-02 18:13
2002.06.13
Как сделать, чтоб работал BackSpace


1-40096
ION T
2002-06-03 01:06
2002.06.13
траверсия полей в записи


1-40006
SleD
2002-06-03 17:31
2002.06.13
Как реализовать спящий режим под XP


8-40126
Шурик
2002-01-29 11:14
2002.06.13
Работа со звуком на низком уровне


1-39992
ЗЛ
2002-06-03 14:29
2002.06.13
И еще один вопрос (не в тему, но очень нужно) вынужден был постав