Function CharToInt (caracter: char) : integer;
Begin
CharToInt:=Ord(caracter)-48;{Devuelve un integer correspondiente con el número guardado en char}
End;
FUNCTION potencia( numero, exponente : integer ) : real;
VAR resultado:integer VALUE 0;
expNeg:boolean;
begin
resultado := 1;
If exponente<0 then
begin
exponente:=-(exponente);
expNeg:=true;
end;
while exponente > 0 do
begin
resultado := resultado*numero;
exponente:=exponente-1;
end;
If Not expNeg Then potencia:=resultado
Else
potencia:=1/resultado;
end;
FUNCTION StringToReal(cadenaNum:tCadenaFuncion):real;
VAR cadenaEntera:string(length(cadenaNum));
cadenaDecimal:string(length(cadenaNum));
parteEntera:real VALUE 0;
AuxEntero:real VALUE 0;
parteDecimal:real VALUE 0;
AuxDecimal:real VALUE 0;
puntoEncontrado:boolean VALUE FALSE;
i:integer VALUE 0;
BEGIN
cadenaEntera:='';
cadenaDecimal:='';
For i:=1 To length(cadenaNum) Do
begin
If (cadenaNum[i]='.') then puntoEncontrado:=TRUE
Else
begin
If Not puntoEncontrado Then cadenaEntera:=cadenaEntera+cadenaNum[i]
Else
cadenaDecimal:=cadenaDecimal+cadenaNum[i];
end;
end;
For i:=length(cadenaEntera) downto 1 Do
begin
AuxEntero:=parteEntera;
parteEntera:=(CharToInt(cadenaEntera[i])*potencia(10,(i-1)))+AuxEntero;
end;
If puntoEncontrado Then
begin
For i:=1 To length(cadenaDecimal) Do
begin
AuxDecimal:=parteDecimal;
parteDecimal:=(CharToInt(cadenaDecimal[i])*potencia(10,(-i)))+AuxDecimal;
end;
StringToReal:=parteEntera+parteDecimal;
end
Else
StringToReal:=parteEntera;
END;