Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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);
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
4-40204
lucky
2002-04-11 15:15
2002.06.13
Формой закрыть все, в т.ч. панель задач


8-40113
3d[Power]
2002-01-28 22:38
2002.06.13
direct3dim


3-39972
Руслан Хайбуллин
2002-05-22 09:53
2002.06.13
Сортировка данных в TADOTable


3-39958
Proton
2002-05-18 09:10
2002.06.13
DB Combo box


14-40169
DeMoN-777
2002-05-11 14:27
2002.06.13
Win-Xp Professional виснет при первой загрузке.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский