Неверов Евгений Викторович
Меню сайта
Категории раздела
Программирование на языке Паскаль [27]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [18]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [0]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Прочее [0]
Свободная тематика
Мини-чат
200
Наш опрос
Сколько Вам лет?
Всего ответов: 55
Статистика

Рейтинг@Mail.ru
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Программирование на языке Паскаль [ Добавить статью ]

Безопасный перевод строки в число

1. Перевод строки в число, удаляя посторонние символы, находящиеся в этой строке


function Perewod_w_chislo(s, simwol: string): string;
var i, zap: integer;
begin
   { удаляем посторонние символы }
   For i:=Length(s) downto 1 do
      If Pos(s[i], simwol)=0 then
         Delete(s, i, 1);
   { удаляем - }
   For i:=Length(s) downto 2 do
      If s[i]='-' then
         Delete(s, i, 1);
   { удаляем , }
   zap:=Pos(',', s);
   If zap>0 then
   begin
      For i:=Length(s) downto zap+1 do
         If s[i]=',' then
            Delete(s, i, 1);
      If s[1]='-' then
         If (Length(s)>=2) and (s[2]=',') then
            Delete(s, 2, 1) else
         else
      If s[1]=',' then
         Delete(s, 1, 1);
      If (Length(s)>=1) and (s[Length(s)]=',') then
         Delete(s, Length(s), 1);
   end;
   If (s='') or (s='-') then
      Result:='0' else
      Result:=s;
end;

где

s - исходная строка, содержащий цифры;

simwol - допустимые символы.

Например, Perewod_w_chislo('-8-5d2a12,s4,5', '0123456789-,') выведет '-85212,45'. В данном случае удалились посторонние символы (буквы), и получилось '-8-5212,4,5'. Далее были удалены лишние знаки "-" и ",".


2. Безопасный перевод строки в целое число


function StrToIntA(text: string): int64;
begin
   text:=Perewod_w_chislo(text, '0123456789-');
   Result:=StrToInt64(text);
end;

где

text - целое число, записанное в строковом виде.

Например, StrToIntA('--426w785h,s1') выведет '-4267851'.


3. Безопасный перевод строки в вещественное (десятичное) число


function StrToFloatA(text: string): real;
var e: integer;
    s1, s2: string;
begin
   e:=Pos('e', text);
   If e=0 then
      e:=Pos('E', text);
   If e>1 then
   begin
      s1:=Copy(text, 1, e-1);
      s2:=Copy(text, e+1, Length(text));
      s1:=Perewod_w_chislo(s1, '0123456789-,');
      s2:=Perewod_w_chislo(s2, '0123456789-');
      text:=s1+'E'+s2;
   end else
      text:=Perewod_w_chislo(text, '0123456789-,');
   Result:=StrToFloat(text);
end;

где

text - вещественное (десятичное) число, записанное в строковом виде.

Например, StrToFloatA('32fd12,,d52,ds36') выведет '3212,5236'; StrToFloatA('-8-5d2a12,s4,5E2,2') выведет '-8,521245E26'.

Примечание. В данном примере число '-85212,45E22' преобразовалось в нормальную экспоненциальную форму '-8,521245E26' (путем переноса запятой и увеличением степени).

Категория: Программирование на языке Паскаль | Добавил: newerow1989 (12.03.2016 11:36 )
Просмотров: 121 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Все смайлы
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2018
    Автор этого сайта: Неверов Евгений Викторович

    Мои координаты
    Бесплатный конструктор сайтов - uCozЯндекс.Метрика