![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Подскажите пожалуйста в чем тут проблема не могу сделать чтобы в ячейках пересчитывал и дробные числа
если заменить integer на real то происхдит ошибка. Код:
procedure TMainForm.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var a,b,y:array [1..7] of integer; j,summ:integer; begin for j:=1 to 7 do if not TryStrToint(StringGrid1.Cells [1,j],A[j]) then A[j]:=0; for j:=1 to 7 do if not TryStrToint(StringGrid1.Cells [2,j],B[j]) then B[j]:=0; for j:=1 to 7 do begin summ:=A[j]*B[j]; Y[j]:=summ; StringGrid1.Cells[3, j]:=intToStr(Y[j]); end; end; |
#2
|
||||
|
||||
![]() Ну вы сами указываете дельфи использовать только целые числа, вот он и отбрасывает дробную часть. Используйте Real, TryStrToFloat, StrToFloat
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() я про это и пишу что если заменяю то вся процедура не работает.
Код:
procedure TMainForm.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var a,b,y:array [1..7] of real; j,summ: real; begin for j:=1 to 7 do if not TryStrToFloat(StringGrid1.Cells [1,j],A[j]) then A[j]:=0; for j:=1 to 7 do if not TryStrToFloat(StringGrid1.Cells [2,j],B[j]) then B[j]:=0; for j:=1 to 7 do begin summ:=A[j]*B[j]; Y[j]:=summ; StringGrid1.Cells[3, j]:=FloatToStr(Y[j]); end; end; Не работает ((( в чем проблем? помогите. |
#4
|
||||
|
||||
![]() А какую ошибку пишет?
Как вариант можнт быть, что разделителем дробной и целой части у тебя точка стоит, а Delphi больше заятую любит. P.S. Если я правильно понял суть задачи, что весь код можно заменить на Код:
for i:=1 to 7 do try; stringgrid1.cells[3,i]:=floattostr(strtofloat(stringgrid1.cells[1,i])*strtofloat(stringgrid1.cells[2,i])); except stronggrid1.cells[3,i]:='0'; end; Последний раз редактировалось Nikitiy_II, 13.02.2011 в 12:30. |
#5
|
|||
|
|||
![]() расскажу проблему в краце у меня таблица 3 строки и 7 столбцов надо что бы сумма 1 и 2 столбца писалась в 3 столбце при этом если в какую то ячейку вдруг не ввели данные или данные введены не корректно то в ту ячейку ставился 0 то есть суммы третьего столбца той строки становилась
0. |
#6
|
||||
|
||||
![]() Так нечего велосипед изобретать, смысл использовать 3 одноуровневых массива.... мой код тебе подойдет в самый раз...
P.S. Индексация Строк и Столбов StringGrid начинается с "0" , то цикл будет у тебя Код:
for i:=0 to 6 do И еще, если тебе сумму надо найти, так чего ты умножаешь значения? -------------------------- И если ты так хочешь, чтоб твой код работал, то индекс j должен быть не real, а integer! Последний раз редактировалось Nikitiy_II, 13.02.2011 в 13:50. |