Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2013-01-24 07:30:30 ЛС | профиль | цитата
У себя я Kol-ы напильником подпилил.

#pas
//[function Str2Double]
function Str2Double( const S: String ): Double;
var I: Integer;
    M, Pt: Boolean;
    D: Double;
    Ex: Integer;
begin
  Result := 0.0;
  if S = '' then Exit;
  M := FALSE;
  I := 1;
  if S[ 1 ] = '-' then
  begin
    M := TRUE;
    Inc( I );
  end;
  if S[ 1 ] = '+' then Inc( I );  //+добавил Галков
  Pt := FALSE;
  D := 1.0;
  while I <= Length( S ) do
  begin
    case S[ I ] of
    '.': if not Pt then Pt := TRUE else break;
    '0'..'9': if not Pt then
                 Result := Result * 10.0 + Integer( S[ I ] ) - Integer( '0' )
              else
              begin
                D := D * 0.1;
                Result := Result + (Integer( S[ I ] ) - Integer( '0' )) * D;
              end;
    'e', 'E': begin
                Ex := Str2Int( CopyEnd( S, I + 1 ) );
                Result := Result * IntPower( 10.0, Ex );
                break;
              end;
    else break;  //+добавил Галков
    end;
    Inc( I );
  end;
  if M then
    Result := -Result;
end;

чего и всем советую
карма: 9

0