Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > перевод String -> Float


Автор: Fast 15.8.2006, 09:27
Как мне из переменной типа стринг сделать типа Float ?
Я имею ввиду что в стринг у меня числа типа 32.32 , 987.20 тоесть с точкой, а для флоата нужна запятая!!!
Что делать ???7

M
Snowy
Название темы должно отражать ее суть!

Автор: Romikgy 15.8.2006, 09:29
StrToFloat

Добавлено @ 09:32 
Цитата(Fast @  15.8.2006,  08:27 Найти цитируемый пост)
 для флоата нужна запятая

sx:=StringReplace(sx,'.',',',[rfReplaceAll]);

Автор: dvamaster 15.8.2006, 09:33
DecimalSeparator := '.' и StrToFloat(str) и усе

Автор: Romikgy 15.8.2006, 09:36
Код

var sx: string;
fl: float;
begin
sx:='32.32';
sx:=StringReplace(sx,'.', DecimalSeparator,[rfReplaceAll]);
sx:=StringReplace(sx,',', DecimalSeparator,[rfReplaceAll]);
fl:=StrToFloat(sx);
end;

всегда работать будет smile

Автор: Guedda 15.8.2006, 09:39
Но это уменьшает быстродействие, поэтому лучше использовать вариант, предложенный dvamaster

Автор: Fast 15.8.2006, 09:44
Не получается =((((
 
Код
procedure TForm1.Button4Click(Sender: TObject);
var i: integer;
s: string;
begin
ADOTable1.Filtered := False;
ADOTable1.First;
For i:= 0 to ADOTable1.RecordCount do
begin
s := ADOTable1.Fields.Fields[4].AsString;
s:=StringReplace(s,'.', DecimalSeparator,[rfReplaceAll]);
s:=StringReplace(s,',', DecimalSeparator,[rfReplaceAll]);
ADOTable1.Edit;
ADOTable1.Fields.Fields[1].Value := s;
ADOTable1.Next;
end;
end;


Добавлено @ 09:44 
Почему то ничего не меняется =(


M
z-END
кнопка код, для кого?
еще раз и в глаз! :)

Автор: Romikgy 15.8.2006, 09:55
Цитата(Fast @  15.8.2006,  08:44 Найти цитируемый пост)
Почему то ничего не меняется =(

что не меняется?

Автор: z-END 15.8.2006, 09:57
Модератор: Название темы должно отражать ее суть!

Автор: dvamaster 15.8.2006, 10:06
Метод post забыл

Код

ADOTable1.Fields.Fields[1].Value := s;
ADOTable1.Post; // вот тут
ADOTable1.Next;

Автор: Fedia 15.8.2006, 10:09
Цитата(Romikgy @  15.8.2006,  09:36 Найти цитируемый пост)
sx:=StringReplace(sx,'.', DecimalSeparator,[rfReplaceAll]);    
sx:=StringReplace(sx,',', DecimalSeparator,[rfReplaceAll]);

ИМХО, так пошустрее будет:
Код

  if DecimalSeparator = ',' then
  sx:=StringReplace(sx,'.', DecimalSeparator,[rfReplaceAll]) else
  sx:=StringReplace(sx,',', DecimalSeparator,[rfReplaceAll]);

Автор: Fast 16.8.2006, 06:17
Нет там всё в порядке ))
Просто в эти числа заносились в другую колонку и я их не замечал  smile  smile 

Автор: kostas 16.8.2006, 06:26
Есть еще функции AnsiReplaceStr из модуля strutils

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)