Обходимся без SysUtils. Строка <-> число

Обходимся без SysUtils. Строка - число
Многие пользуются функциями StrToInt, TryStrToInt и IntToStr из модуля SysUtils для преобразования типов. Это удобно, но когда встает вопрос об отключении лишних модулей (когда пишем на api), непрактично.

Для таких же целей есть стандартные функции val и str из pascal, которые перекочевали в delphi, но о наличии которых в нём многие не подозревают. Писал я как-то одну консольную программу, вот и встал лицом к лицу с этой задачей. Для удобства написал аналоги дельфийский функция с использованием val и str.

StrToInt

function StrToInt(s:string):integer;
var
  t:integer;
  c:integer;
begin
  val(s,t,c);
  if c=0 then
    Result:=t
  else
    Result:=0;
end;

TryStrToInt

function TryStrToInt(s:string;var i:integer):boolean;
var
  t:integer;
  c:integer;
begin
  val(s,t,c);
  if c=0 then begin
    i:=t;
    Result:=True;
  end else
    Result:=False;
end;

IntToStr

function IntToStr(i:integer):string;
var
  s:string;
begin
  Str(i,s);
  Result:=s;
end;

http://parsers.info, crystalbit

5 ответов к «Обходимся без SysUtils. Строка <-> число»

  1. Куль, спасибо. Вот еще :

    function FileExists(param: string): boolean;
    begin
      if _lopen(PChar(param), OF_SHARE_COMPAT) = HFILE_ERROR then
        Result:=False
      else
        Result:= true;
    end;
    

    Да кстати, IntToStr можно использовать и как floatToStr, нужно только заменить процедурку на
    str(i:2:2, s);
    Где 2 — количество значащих цифр после запятой.

    1. Если программу пишешь на чистом winapi, то иногда стремишься уменьшить размер программы. В модуле SysUtils множество других функций, кода, который увеличивает размер нашей программы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *