![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | 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.  |