Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Конвертация строк



Вернуться к списку функций
 Преобразование строки в Float с очисткой. Пример '10 000 руб . 10 коп' = '10000.10'

 Прислал: Black_Phoenix (Алматы) ( 4 июля 2008 г. )
©  Phoenix Software
 Описание:
Функция для преобразования строки с левым числом в Float значение
Передаем в функцию любую строку и integer значение количество знаков после точки
Если в настройках Windows стоит запятая заместо точки то меняем в коде . на ,

Пример '10 000 руб . 10 коп' = '10000.10'

 Зависимости:
Стандартные

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Преобразование строки в Float с очисткой. Пример '10 000 руб . 10 коп' = '10000.10'

Функция для преобразования строки с левым числом в Float значение
Передаем в функцию любую строку и integer значение количество знаков после точки
Если в настройках Windows стоит запятая заместо точки то меняем в коде . на ,

Пример '10 000 руб . 10 коп' = '10000.10'

Зависимости: Стандартные
Автор:       Black_Phoenix, Phoenix@astalavista.ru, ICQ:211785945, Алматы
Copyright:   Phoenix Software
Дата:        4 июля 2008 г.
***************************************************************** }

{
Функция для преобразования строки с левым числом в Float значение
Передаем в функцию любую строку и integer значение количество знаков после точки
Если в настройках Windows стоит запятая заместо точки то меняем в коде . на ,

Пример '10 000 руб . 10 коп' = '10000.10'
}
function GetErrorStrForNumber(ErrStr:string; Decimals:integer = 2):real;
function RoundFloat(R: Extended; Decimals: Integer): Extended;
var
  Factor: Extended;
begin
  Factor := Int(Exp(Decimals * Ln(10)));
  Result := Round(Factor * R) / Factor;
end;
var
  Drob:Boolean;
  i:integer;
  sT:string;
begin
  for i := 0 to Length(ErrStr) do
   if i < 20 then
   case ErrStr[i] of
     '0'..'9': sT:=sT + ErrStr[i];
     '.': // Дробный знак
       if not Drob then
        begin
         sT:=sT + ErrStr[i];
         Drob:=true;
        end;
   end;
   if sT = '' then sT:='0'; // Проверка на то что вообще цифры есть :)
   result := RoundFloat(StrToFloat(sT),Decimals); // округляем
end;

 Пример использования:
edit2.Text := FloatToStr(GetErrorStrForNumber(edit1.text));

или

edit2.Text := FloatToStr(GetErrorStrForNumber('10 000 руб . 12 коп'));


Вернуться к списку функций

Наверх ▲