Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Demo de la libreria Allegro.pas (https://www.clubdelphi.com/foros/showthread.php?t=49474)

Delphius 25-10-2007 16:56:40

Hola Nuño! Quise probar lo que ofrece Alegro y me he dado con unos errorsitos pequeños.
No se lo que hice estará bien, intenté correr el proyecto del demo.
Para ello hice esto:
1. Copiar las dll al \system32
2. Añadir al Search Path el directorio lib

Bueno, quise probarlo y me topé con esto:
Código:

[Warning] alfixed.pas(99): Combining signed and unsigned types - widened both operands
[Error] aljstick.pas(153): Undeclared identifier: 'STRPAS'
[Fatal Error] demo.dpr(25): Could not compile used unit 'aljstick.pas'

Tal vez hice mal... o es a lo mejor la versión de Delphi que uso (6).
Porque si dicen que funciona en Delphi... el error soy yo.

NOTA: Empleando la última versión disponible de Alegro (allegro.pas-4.2.1b4-src-pas)

No sabía si reportar esto por aquí, en el sitio de Alegro...
Si puedes darte una vuelta (o algún otro iluminado) corrige a este curioso idiota (lo digo por mi)

Muchas gracias.
Saludos,

Ñuño Martínez 25-10-2007 19:16:36

Código:

[Warning] alfixed.pas(99): Combining signed and unsigned types - widened both operands
[Error] aljstick.pas(153): Undeclared identifier: 'STRPAS'
[Fatal Error] demo.dpr(25): Could not compile used unit 'aljstick.pas'

¡Repámpanos! No debería dar error, porque STRPAS es del lenguaje Pascal de toda la vida, o eso pensaba yo. :confused:

Da lo mismo. El aviso de alfixed.pas puede obviarse (creo :rolleyes:). Simplemente avisa de que va a utilizar un tipo de dato diferente al puesto para evitar errores de desbordamiento.

El de aljstick.pas tiene fácil solución: elimina STRPAS en esa línea y que asigne diréctamente la variable TMP. Error no da y parece funcionar correctamente. Si aparece más veces pues lo mismo, pero avísame.

Delphius 25-10-2007 20:33:21

OK.
Te mantendré al tanto si surgen otras "novedades"
Probaré lo que comentas en algún tiempo libre que pueda darme.

Saludos,

egostar 25-10-2007 20:40:39

Cita:

Empezado por Delphius (Mensaje 241203)
OK.
Te mantendré al tanto si surgen otras "novedades"
Probaré lo que comentas en algún tiempo libre que pueda darme.

Saludos,

Esto que comentas es después de algún nivel :confused:, yo solo he podido capturar a lo mas 5 monedas y no he tenido ningún problema, no se si hay mas niveles, uso WindowsXP Profesional, tengo instalado Delphi4.

Yo descompacte el zip en un solo directorio y nadamás.

Salud OS

Delphius 25-10-2007 20:45:54

Hola Egostar.
Lo que había comentado se debía a un error cuando he probando compilar la demo.

No me refería a un error del juego, mientras lo esuve jugando un rato no he visto error.

Saludos,

egostar 25-10-2007 20:47:41

Cita:

Empezado por Delphius (Mensaje 241211)
Hola Egostar.
Lo que había comentado se debía a un error cuando he probando compilar la demo.

No me refería a un error del juego, mientras lo esuve jugando un rato no he visto error.

Saludos,

A vaya, eso si es distinto, bueno, creo que debo ponerme a compilar y dejar de jugar :D:D:D

Salud OS

Héctor Randolph 26-10-2007 04:54:52

Hola nuevamente!

También estoy tratando de compilar el demo en Delphi 7. Lo primero es comentar que el problema con STRPAS, STRALLOC y STRDISPOSE se soluciona colocando en los uses la unidad SYSUTILS. Sin embargo, después de solucionar esto surge otros problema en la unidad tile.pas, en específico en la línea 72

Código Delphi [-]
  Palette := Data[TITLE_PAL].dat;

y más adelante en la línea 115

Código Delphi [-]
IF al_joy[0].button[0].b <> 0 THEN

Cita:

[Error] title.pas(72): Array type required
[Error] title.pas(115): Array type required
bueno, por aquí sigo investigando, a ver si pueden echarme una mano.

Saludos

dec 26-10-2007 05:23:19

Hola,

Echa un vistazo a este hilo Héctor.

Actualización: Ahí se ve que Seoane propuso algunas soluciones, que parecen estar implementadas ya en Allegro, empero, probando a compilar en Delphi 2007 aún aparecen los problemas que tú has mencionado Héctor, y no sé muy bien cómo podrían solucionarse, la verdad. Me temo que me he adelantado al enlazar el hilo como la solución a dichos problemas, digo. :o

Ñuño Martínez 26-10-2007 19:38:52

Menos mal que no se me a ocurrido decir que estaba terminado :rolleyes:. Ahora estoy liado con la documentación (acabo de subir nuevas secciones y correcciones ;)) pero cuando la termine, si no me lían con otra cosa, reviso todo lo que pongáis en este hilo a ver si puedo solucionarlo.

Por el momento, si hay problemas con los punteros a listas (Arrays), prueba poniendo el acento circunflejo a ver:
Código Delphi [-]
IF al_joy^[0].button[0].b <> 0 THEN

Puede que Free Pascal haga la conversión de forma automática pero Delphi no.

Gracias.

egostar 26-10-2007 20:59:42

Bueno, les dejo mis primeras observaciones.

Estoy usando Delphi4, al abrir Allegro.dpr me mandó un error de que la línea era muy larga, verificando el archivo encontré algo curioso, tuve que invertir los caracteres de LF y CR no recuerdo ahora como estaban pero los invertí de posición y ya pude compilarlo.

Al compilarlo me mando error de que no tenia una dcu.

Por desgracia no estoy en la maquina donde hice las pruebas para darte los detalles, pero en cuanto tenga acceso a esa computadora te los dejo saber.

Salud OS

Héctor Randolph 29-10-2007 07:01:39

Conseguí hacerlo funcionar en Delphi 7, aquí está la prueba

Para corregir el problema con los arreglos, la explicación que da la ayuda es la siguiente:

Cita:

[Error] title.pas(72): Array type required
[Error] title.pas(115): Array type required
Cita:

We try to apply an index to a pointer to integer - that would be legal in C, but is not in Delphi.

In The Delphi language, we must tell the compiler that we intend P to point to an array of integers.
A continuación pongo el código que tuve que modificar:

Código Delphi [-]
//  AL_DATAFILEptr = ^AL_DATAFILE;
  AL_DATAFILE = RECORD
    dat : AL_PTR;    { pointer to the data  }
    ftype : AL_INT;    { object type  }
    size : AL_INT;    { size of the object  }
    prop : AL_DATAFILE_PROPERTYptr; { object properties  }
  END;
  type
  TDataFile_Array = array [0..80] of AL_DATAFILE; // Se declara como un arreglo
  AL_DATAFILEptr =^TDataFile_Array; // Apuntador al arreglo



Código Delphi [-]
(* information about an entire joystick *)
//  AL_JOYSTICK_INFOptr = ^AL_JOYSTICK_INFO;
  AL_JOYSTICK_INFO = RECORD
    flags : AL_INT;
    num_sticks : AL_INT;
    num_buttons : AL_INT;
    stick : ARRAY [0..(AL_MAX_JOYSTICK_STICKS)-1] OF AL_JOYSTICK_STICK_INFO;
    button : ARRAY [0..(AL_MAX_JOYSTICK_BUTTONS)-1] OF AL_JOYSTICK_BUTTON_INFO;
  END;
type
  TJoyInfo_Array = array [0..100] of AL_JOYSTICK_INFO; // Se declara como un arreglo
  AL_JOYSTICK_INFOptr = ^TJoyInfo_Array; // Apuntador al arreglo

Por último envía un error en tiempo de ejecución en la línea que pone el título en la ventana, simplemente la comenté.

Código Delphi [-]
//al_set_window_title ('Allegro.pas Demo Game');

Ahora sí puedo intentar hacer algo con la librería.

Saludos.

Ñuño Martínez 29-10-2007 17:42:38

Gracias por la información, Hector. De momento la solución puede funcionar, aunque creo que no debería ser definitivamente así. He visto proyectos de Allegro con datafiles de más de 100 elementos.

Ya avisaré para que lo probéis y me digáis si funciona.

Héctor Randolph 29-10-2007 18:02:08

Estoy de acuerdo, la solución fue provisional. En este caso pusé el número de elementos de manera arbitraria, pero antes eché un ojo sobre el archivo demo.inc para ver cuántos elementos había en el archivo demo.dat

Supongo que se tendrá que crear el arreglo dinámicamente o algo así, para ello necesitariamos saber de antemano cuántos elementos hay en el archivo DAT.

Lo importante es que ya estoy compilando y en cuanto tenga un espacio estaré jugando con la librería a ver que se me ocurre.

Nuevamente te digo Ñuño que has hecho un excelente trabajo.

Saludos

Ñuño Martínez 18-11-2007 21:34:37

Me puse el viernes y el sábado y he hecho algunos cambios, tanto al juego como a la librería. He subido un nuevo archivo. Este tiene, además, algunos archivos del directorio "lib" que he modificado para solucionar algunos errores. Tal vez haya que moverlos al directorio lib antes de probarlos.

Decidme qué os parece que Alex tenga tres vidas, si realmente es algo más fácil y si da menos problemas al compilar con Delphi.

Aunque he modificado el enlace del primer mensaje, lo pongo aquí para que no os quejéis.

Estoy currando en la documentación, a ver si puede estar terminada esta semana (en inglés, eso sí :(). Todavía estáis a tiempo de hacer sugerencias.

Gracias de nuevo.


La franja horaria es GMT +2. Ahora son las 09:59:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi