Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: ¡Micronet! en 2 Febrero 2011, 03:53 am



Título: problemas con el strtoint en pascal
Publicado por: ¡Micronet! en 2 Febrero 2011, 03:53 am
Código
  1. procedure EstadoT2;
  2. var
  3.  c : char;
  4. begin
  5. {$ifdef DEBUG}
  6.  writeln(stderr,'Estado T2');
  7. {$endif}
  8.  Avanzar;
  9.  c := Leer;
  10.  while c in ['a'..'z'] do
  11.  begin
  12.    S := S + c;
  13.    Avanzar;
  14.    c := Leer;
  15.  end;
  16.  strtoint (const S: string): LongInt;  //Problema aqui 57 / 19
  17.  writeln('Token ID reconocido: ', S);
  18. end;
  19.  


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.


Título: Re: problemas con el strtoint en pascal
Publicado por: Khronos14 en 2 Febrero 2011, 15:39 pm
Estas usando mal la función. Sería algo así:

Código
  1. var
  2. Numero: integer;
  3. Cadena: string;
  4. begin
  5.  
  6. Cadena:= '14';
  7. Numero:= StrToInt(Cadena);
  8. 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.


Título: Re: problemas con el strtoint en pascal
Publicado por: ¡Micronet! en 2 Febrero 2011, 17:39 pm
Estas usando mal la función. Sería algo así:

Gracias khronos14 oye disculpa otras 2 preguntas.

Código
  1. procedure EstadoT3;
  2. var
  3.  c : char;
  4.  Numero : integer;
  5. begin
  6. {$ifdef DEBUG}
  7.  writeln(stderr,'Estado T3');
  8. {$endif}
  9.  Avanzar;
  10.  while c in ['0'..'7'] do
  11.  begin
  12.    S := S + c;
  13.    Avanzar;
  14.    c := Leer;
  15.  end;
  16.  case c of
  17.  'x': EstadoT4;
  18.  else
  19.  end;
  20.  
  21.  Numero:= OctToInt(S);     {error aqui 175/12}
  22.  writeln('Token OP reconocido: ', Numero);
  23. 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.


Título: Re: problemas con el strtoint en pascal
Publicado por: Khronos14 en 2 Febrero 2011, 19:28 pm
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
  1. function OctToInt(Value: string): Longint;
  2. var
  3.  i: Integer;
  4.  int: Integer;
  5. begin
  6.  int := 0;
  7.  for i := 1 to Length(Value) do
  8.  begin
  9.    int := int * 8 + StrToInt(Copy(Value, i, 1));
  10.  end;
  11.  Result := int;
  12. end;
  13.  

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

Saludos.


Título: Re: problemas con el strtoint en pascal
Publicado por: ¡Micronet! en 2 Febrero 2011, 19:55 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.


Título: Re: problemas con el strtoint en pascal
Publicado por: Khronos14 en 3 Febrero 2011, 00:16 am
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.