problemas con el strtoint en pascal

Iniciado por ¡Micronet!, 2 Febrero 2011, 03:53 AM

0 Miembros y 1 Visitante están viendo este tema.

¡Micronet!

Código (PASCAL) [Seleccionar]
procedure EstadoT2;
var
 c : char;
begin
{$ifdef DEBUG}
 writeln(stderr,'Estado T2');
{$endif}
 Avanzar;
 c := Leer;
 while c in ['a'..'z'] do
 begin
   S := S + c;
   Avanzar;
   c := Leer;
 end;
 strtoint (const S: string): LongInt;  //Problema aqui 57 / 19
 writeln('Token ID reconocido: ', S);
end;



Disculpen esque en devpascal no me reconoce esa funcion me dice

57 / 19 automa~1.pas
Fatal: Syntax error, ) expected but identifier S found

y

tambien este error

57 / 20 automa~1.pas
Error: Illegal expression


y segun yo esta bien como lo quiero transformar... o esta mal :/ ¿?
ya que lo que quiero es imprimir la constante en entero.

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

Khronos14

Estas usando mal la función. Sería algo así:

Código (delphi) [Seleccionar]
var
Numero: integer;
Cadena: string;
begin

Cadena:= '14';
Numero:= StrToInt(Cadena);
end;


En FreePascal y en Delphi la función StrToInt está declarada en la unidad SysUtils. Debes tener en cuenta, que si intentas convertir una cadena de texto a integer vas a producir un error. Para ese caso puedes usar la función TryStrToInt().

Saludos.

¡Micronet!

Cita de: Khronos14 en  2 Febrero 2011, 15:39 PM
Estas usando mal la función. Sería algo así:

Gracias khronos14 oye disculpa otras 2 preguntas.

Código (pascal) [Seleccionar]
procedure EstadoT3;
var
  c : char;
  Numero : integer;
begin
{$ifdef DEBUG}
  writeln(stderr,'Estado T3');
{$endif}
  Avanzar;
  while c in ['0'..'7'] do
  begin
    S := S + c;
    Avanzar;
    c := Leer;
  end;
  case c of
  'x': EstadoT4;
  else
  end;

  Numero:= OctToInt(S);     {error aqui 175/12}
  writeln('Token OP reconocido: ', Numero);
end;


Disculpa este error me sale para pasar de octal a entero.
175 / 12 avanze~1.pas  Error: Identifier not found OCTTOINT

lo que veo esque no estoy ingresando un numero octal si no una cadena, entonces estoy intentando pasar de una cadena a octal pero no me funciona entonces como seria pasar eso ¿? si se puede saber

entonces tambien intetne usar el octtoint(08) intentando usar un numero y tampoco me funciono me salio el error de el identificador no encontrado.

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

Khronos14

Hola ¡Micronet!, la función OctToInt no existe o al menos no está definida en el estándar de Pascal. Si buscas por google encontrarás algo como esto:

Código (delphi) [Seleccionar]

function OctToInt(Value: string): Longint;
var
  i: Integer;
  int: Integer;
begin
  int := 0;
  for i := 1 to Length(Value) do
  begin
    int := int * 8 + StrToInt(Copy(Value, i, 1));
  end;
  Result := int;
end;


Esta función te convertiría un número octal, almacenado como cadena, a integer.

Saludos.

¡Micronet!

Cita de: Khronos14 en  2 Febrero 2011, 19:28 PM
Hola ¡Micronet!, la función OctToInt no existe o al menos no está definida en el

Gracias... am am y ya para dejarte de molestar crees que me puedas ayudar con los hexadecimales. ¿?

tambien los tengo en una cadena.  :-[

porque tambien me dijieron que tengo que usar el HextoInt.

59 / 12 avanze~1.pas  Error: Identifier not found HEXTOINT

e igual me sale error :/ el mismo.

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

Khronos14

HexToInt tampoco forma parte del estándar de Pascal. En programación, más que en cualquier otro tema, google es un gran amigo  ;D

Saludos.