Проблема StrToInt64 - Криво обрабатывает.

Xenium

Новичок
Всем доброй ночи, проблема следующая:

При использовании функции от Shegorat
конечное значение получается совершенно другим, в чем может быть проблема?
Код:
function StrToInt64(str: String): Extended;
var
  i: Integer;
begin
  Result:= 0;
  for i:= 1 to Length(str) do begin
    Result:= Result*10 + (Ord(str[i]) - Ord('0'));
  end;
end;
Собственно вот о чем я говорю.
str - значение в байтах, после преобразования в integer полученное значение совершенно другое.
integer необходим для дальнейшего подсчета суммы размера файлов в папке.
Код:
...
Size := Размер файла в байтах.
Intg := StrToInt64(Size)
Sum:=Sum+Intg
...
Result:=Sum;
str.png
 

Shegorat

Lord of Madness
Администратор
@Xenium, ну во-первых, там не зря результат считался в Extended, т.к. обычный Integer может хранить значения только до 4 Гб в беззнаковом виде, и до 2 Гб в знаковом.
Во-вторых фукция не предусматривала парсинг чисел с пробелами, а так же с плавающей запятой.
 

Xenium

Новичок
@Xenium, ну во-первых, там не зря результат считался в Extended, т.к. обычный Integer может хранить значения только до 4 Гб в беззнаковом виде, и до 2 Гб в знаковом.
Во-вторых фукция не предусматривала парсинг чисел с пробелами, а так же с плавающей запятой.
Понятно, спасибо за ответ.
Но все же как прийти к необходимому функционалу, поможете в данном вопросе?
 

Xenium

Новичок
@Shegorat, все сделал) Спасибо)
Особенно на размышления натолкнула фраза "фукция не предусматривала парсинг чисел с пробелами, а так же с плавающей запятой. "
Ошибка моя была еще на начале получения размера файла, спасибо.
 
Сверху