Вверх ↑
Ответов: 2059
Рейтинг: 131
#1: 2022-06-30 04:33:13 ЛС | профиль | цитата
Оказалось всё просто!
function Str2Single( const S: String ): Single;
var I: Integer;
M, Pt: Boolean;
Sn: Single;
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;
Sn := 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
Sn := Sn * 0.1;
Result := Result + (Integer( S[ I ] ) - Integer( '0' )) * Sn;
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;
Но есть решение ещё круче!!! Через Hex чего угодно, во что угодно, хоть массивы. VarToHex и HexToVar.
Потом нарисую, а то уже спать надо.
карма: 6

0