Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Windows 7 delphi 2010 y las jedi problema con sizeInt (https://www.clubdelphi.com/foros/showthread.php?t=75309)

José Luis Garcí 12-08-2011 10:16:07

Windows 7 delphi 2010 y las jedi problema con sizeInt
 
Hola compañeros, estoy probando el componente JvDbgrid, tengo instaladas la misma versión de delphi y de componentes Jedi, en la empresa y en casa, lo único que varia es el sistema operativo que uno es Vista y el otro es windows 7, en la empresa no he tenido problemas con la los compenetes Jedi, el probklema lo tengo en casa exactamente en el jclbase.pas, y el mensaje de error que me da es :

Cita:

JclBase.pas(95):E2003 Undeclared idetifier exepcted
La versión de las JEdi que tengo instalada es la JVLC340CompleteJCL221-Build3845.

Espero podáis ayudarme

duilioisola 12-08-2011 13:15:15

Parece que no encuentra esa unidad.
Verifica los path y esas cosas...

José Luis Garcí 12-08-2011 13:19:16

Perdonar al copiar me equivoque de linea el problema es el SizeInt

duilioisola 12-08-2011 13:37:15

Vi que esa unidad define:
Código Delphi [-]
type
  {$IFDEF FPC}
  Largeint = Int64;
  {$ELSE ~FPC}
  {$IFDEF CPU32}
  SizeInt = Integer;
  {$ENDIF CPU32}
  {$IFDEF CPU64}
  SizeInt = Int64;
  {$ENDIF CPU64}
  PSizeInt = ^SizeInt;
...
Solo compila esto si está definido CPU32 o CPU64.
Supongo que en algún lugar deberás definir esto...

duilioisola 12-08-2011 13:41:14

Buscando un poco más, encontré que esto se define en jvcl\common\jedi.inc

Código Delphi [-]
{$DEFINE BORLAND}

{ Set FreePascal to Delphi mode }
{$IFDEF FPC}
  {$MODE DELPHI}
  {$ASMMODE Intel}
  {$UNDEF BORLAND}
  {$DEFINE CPUASM}
   // FPC defines CPU32, CPU64 and Unix automatically
{$ENDIF}

{$IFDEF BORLAND}
  {$IFDEF LINUX}
    {$DEFINE KYLIX}
  {$ENDIF LINUX}
  {$IFNDEF CLR}
    {$DEFINE CPU386}  // For Borland compilers select the x86 compat assembler by default
    {$DEFINE CPU32}   // Assume Borland compilers are 32-bit (rather than 64-bit)
    {$DEFINE CPUASM}
  {$ENDIF ~CLR}
{$ENDIF BORLAND}

Depende de que esté definido BORLAND y CLR...

José Luis Garcí 12-08-2011 15:20:56

Muchas Gracias duilioisola, pero donde lo defino, o mejor dicho como lo hago??

duilioisola 12-08-2011 15:50:16

El como es fácil... igual que la primera línea de código anterior:
Código Delphi [-]
{$DEFINE BORLAND}
{$DEFINE CLR}

El dónde es una cuestión que no te puedo decir con seguridad.
Yo pondría la línea al principio de mi aplicación. Entre interfaces y uses

Código Delphi [-]
interface

{$DEFINE BORLAND}
{$DEFINE CLR}

uses Windows, Classes, ...

José Luis Garcí 12-08-2011 17:58:08

Muchas gracias Duilioisola. pero me persiste el error, he hecho lo que comentabas y nada, te pongo una imagen con el error Exacto.


duilioisola 12-08-2011 18:42:32

No es la opción más elegante, pero seguramente funciona:
Pone SizeInt = integer; justo antes de la definicion de PSizeInt.

Código Delphi [-]
{$ IFDEF CPU32} // Aquí supongo que no entra porque de lo contrario SizeInt estaría definido
SizeInt = Integer;
{$ENDIF CPU32}
{$ IFDEF CPU64} // Aquí tampoco entra 
SizeInt = Int64;
SizeInt = Integer; // Como no se definió anteriormente, lo defino a la fuerza
{$ENDIF CPU64}
FSizeInt = ^SizeInt;

Nota: Este código va a fallar si se define CPU32 o CPU64, pero servirá para probar.

Supongo que habría que hacer algo así:
Código Delphi [-]
{$IFDEF CPU32}
   SinzeInt=Integer;
{$ELSE}
   {$IFDEF CPU64}
      SizeInt=Int64;
   {$ELSE}
      SizeInt=Integer;
   {$ENDIF}
Pero no conozco la sintaxis de las directivas de compilación.

José Luis Garcí 13-08-2011 08:48:00

Nada sigue sin funcionar, por lo que he visto en internet tiene que ver con el tema de 64bits, sabes si existe la posibilidad de que la compilación se haga directamente en 32 bits?


La franja horaria es GMT +2. Ahora son las 09:24:05.

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