Test Foro de elhacker.net SMF 2.1

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