![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код: 
	var
  f1,k1,a1,b1,c1,d1: real;
begin
 a1:=StrToFloat(Edit1.Text);
b1:=StrToFloat(Edit2.Text);
c1:=StrToFloat(Edit3.Text);
d1:=StrToFloat(Edit4.Text);
  k1:=(a1+b1+c1+d1);
      f1:=(2* a1+3* b1+4* c1+5* d1)/k1;
       label1.Caption:=FloatToStrF(f1,ffFixed,1,1);Как мне сделать, чтобы если значения a1=1, b1=1, c1=1, d1=1, то в Label выводлися бы ответ не «3,5», а ответ был бы равен «3.5»? Подскажите пожалйста на моем примере!  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Не понятно, у тебя при таком условии результат в Label  будет 3.5 , а какой нужен? Если разделитель точка нужна "." - это в настройках Windows меняется 
		
	
		
		
		
		
		
		
			Последний раз редактировалось PashaXP, 05.08.2008 в 13:53.  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 А если програмно, то 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	procedure TForm1.Button1Click(Sender: TObject);
var
  f1,k1,a1,b1,c1,d1: real;
  str:string;
begin
a1:=StrToFloat(Edit1.Text);
b1:=StrToFloat(Edit2.Text);
c1:=StrToFloat(Edit3.Text);
d1:=StrToFloat(Edit4.Text);
  k1:=(a1+b1+c1+d1);
      f1:=(2* a1+3* b1+4* c1+5* d1)/k1;
      str:=FloatToStrF(f1,ffFixed,1,1);
     if Pos(',',str)<>0 then str[Pos(',',str)]:='.';
     label1.Caption:=str;
end; | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Ответ будет не в виде "3.5", а в виде "3,5"(. Если у меня будет стоять FloatToStrF(f1,ffFixed,1,1), то ответ будет с запятой. Например, если даже ответ целый получается, то в Label ответ выведется  например так: "4,0". А если написать просто FloatToStr(f1), то будет выводится дробь длинная. Но мне нужно, чтобы я в StringGrid-е мог сложить по столбцам. Эту сумму мне надо разделить на четыре и вывести в ячейку таблицы. Но мне программа выдает ошибку: "3,5 is not valid integer value". Что мне сделать, чтобы заработало? Подскажите пожалуйста!)). А как изменить в настройках Windows? 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Как выше сделал не подходит? 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Пуск -> Настройка -> Панель управления -> Язык и региональные стандарты. Нажми кнопку "настройка", там увидешь 
		
	
		
		
		
		
		
		
			Но тебе, так понял, не это нужно. Тебе округлять что-ли значения до цеглого нужно? Последний раз редактировалось PashaXP, 05.08.2008 в 14:19.  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 1. Label3.Caption := StringReplace(Str, ',', '.', []); 
		
	
		
		
		
		
		
	
		
		
	
	
	2. Системные настройки лучше не трогать, потому как глюков не меряно можно схватить при использовании других программ, которые под русскую локаль настроены.  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 это точно!  | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 PashaXP, код попробовал). Теперь он дробную часть отделяет точкой. Это хорошо. Но получится ли у меня в StringGrid-e сложить столбец с  дробями и разделить на 4? Про настройки я понял. Не буду менять. Phedor, а что делает функция StringReplace?) 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 тоже что и у меня только - "в один присест "  | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Код я на Delphi сделал и выложил, меняет запятую в слове на точку... Напиши подробнее, что ты хочешь в результате получить, на примере... 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#12  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 1. Нужно просто разделить отображение и арифметику. 2. function StringReplace(const S: string; const OldPattern: string; const NewPattern: string; Flags: TReplaceFlags): string; S - Исходная строка OldPattern - подстрока NewPattern - на что заменить Flags - TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase); rfReplaceAll - заменить все frIgnoreCase - игнорировать регистр 3. a1:=StrToFloat(Edit1.Text); Такие вещи лучше в try ... except ... включать. Очень часто человеки ставят и запятую и точку как разделитель, кто что хочет то пишет (особенно любители Excel), еще бывает ставят разделители тыс. части типа: "1 200,20", "1,200.20", "1'200,20". Вообще смотря кто будет пользоваться :-) Последний раз редактировалось Phedor, 05.08.2008 в 15:30.  | 
| 
		 
			 
			#13  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 PashaXP, вот код:  
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	{1}
    if Form1.Label7.Caption='' then SG3.Cells[2,1]:='0'
    else SG3.Cells[2,1]:=Form1.Label7.Caption; (это получение данных с первой формы)
   summ:=(StrToFloat(SG3.cells[2,1])+StrToFloat(SG3.cells[8,1])+StrToFloat(SG3.cells[14,1])+StrToFloat(SG3.cells[20,1]))/4;
  SG3.Cells[26,1]:=FloatToStr(summ);
Мне надо, чтобы например в первой строчке можно было сложить четыре дробных числа и разделить на 4. Ответ снова получится дробь и этот / ответ надо вывести в указанную ячейку). Кто что может предложить?) Цитата: 
	
  | 
| 
		 
			 
			#14  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Люди! Для таких простых целей есть две глобальных переменных - DecimalSeparator - разделитель цело и дробной части и ThousandSeparator - разделитель тысяч. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	пример: DecimalSeparator:='.' - разделитель бедет точка '.' DecimalSeparator:=',' - разделитель бедет запятая ','  | 
| 
		 
			 
			#15  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
  |