[Lazarus-es] Fwd: Error al compilar ZEOSDBO-6.6.6-stable
Jose Daboin
metalbox9000 en gmail.com
Mar Mayo 7 00:20:17 CEST 2013
Maxi creo que no me di a entender, el mensaje que yo deje era la respuesta
concreta para resolver ese error, lo que pasa es que la copie directamente
del foro de delphi.
Dejo editado aqui para evitar confuciones
========================================================
El error quiere decir que la implementación del método "QueryInterface"
debe ser idéntica a la declaración en la interfaz IUnknown. Si te fijas en
la interfaz está declarada como.
Unknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; StdCall
y en la implementación está.
function QueryInterface(const IID: TGUID; out Obj): HResult; virtual;
stdcall;
así que en la implemantación debe ser suficiente con cambiar const por
constref
========================
Al corregir el error anterior se produce otro mas que se soluciona de la
siguiente manera
============================
Buscar alguna de estas dos lineas en zeos.inc y arriba de ellas pegar los
define que estan abajo.
{$IFDEF VER2_5}
{$DEFINE FPC2_5UP}
Colocar estas lineas modificando el archivo zeos.inc que se encuentra en la
carpeta scr en la carpeta del componente zeos
{$DEFINE FPC2_5UP}
{$DEFINE FPC2_4UP}
{$DEFINE FPC2_3UP}
{$DEFINE FPC2_2UP}
{$DEFINE FPC2_1UP}
{$DEFINE FPC2_UP}
//linea de separacion (este comentario lo borran)
El 6 de mayo de 2013 15:59, Maxi <maximiliano.duarte en gmail.com> escribió:
> Ismael no puede vavegar por internet. reposteo el contenido sin imagenes
>
> Instalando los componentes
>
> Esta es una parte complicada por lo que debes tener un poco de
> paciencia y leer este apartado cuidadosamente.
>
> Comprueba que tienes al menos la versión 1.0.4 de Lazarus (diciembre
> 2012) y al menos la versión 7.0.3 estable de ZeosLib.
>
> Comenzar una instancia de Lazarus.
>
> Pulsar en Paquete/Abrir archivo de paquete (.lpk) desde el menú principal.
> Ve a .\ZEOSDBO-7.0.3-stable\packages\lazarus y abre zcomponent.lpk
> Presiona [Compilar] solamente si no necesitas instalar los componentes
> en el IDE.
> Presiona [Usar >>] para ver las opciones que ofrece.
> Selecciona Agregar al Proyecto si no quieres añadirlo al IDE o bien
> Instalar para que se añada a la solapa del IDE de Lazaus
> Pregunta si necesitas recompilar Lazarus, en concreto con el mensaje
> emergente El paquete "zcomponent 7.0" se marcó para instalar.
> Actualmente lazarus solo soporta paquetes enlazados estáticamente. La
> instalación completa necesita reconstruir y reiniciar lazarus ¿Desea
> reconstruir ahora Lazarus?
>
> Responde [Si] esta vez.
> Espera a que la compilación termine, la ventana emergente de mensajes
> nos va mostrando la evolución del proceso, Lazarus debería reiniciarse
> después de esto.
> Si todo está bien se debería ver la solapa [Zeos Access] en la paleta
> de componentes.
>
>
> Si se presenta el error "Cannot find unit ZClasses" o algo similar,
> entonces hay que chequear cuidadósamente como están escritos los
> nombres de fichero (en cuanto a mayúsculas/minúsculas) en sus ficheros
> de código fuente.
>
> Incluso si cuadran exactamente, el paquete autogenerado del fichero
> fuente puede dar lugar a un tipificado incorrecto
> (mayúsculas/minúsculas) en la claúsula "uses" (Lazarus 0.9.18), i.e.:
>
> Si lo anterior falla, tal como se explica en el foro de ZeosLib es
> conveniente ir compilando cada uno de los paquetes siguiendo el
> siguiente orden:
>
> - 1º. zcore.lpk
>
> - 2º. zparsesql.lpk
>
> - 3º. zplain.lpk
>
> - 4º. zdbc.lpk
>
> - 5º. zcomponent.lpk
>
> Si el resultado de la compilación individual de todos es correcto,
> entonces ya estaríamos en condiciones de escoger el paquete Zcomponent
> y con la opción de Usar >>> y a continuación Instalar tenerlo en
> nuestro IDE como una solapa más de componentes visuales.
>
>
> { Este fichero ha sido generado automáticamente por Lazarus. ¡No se
> debe editar!
> Esta fuente solo se utiliza para compilar e instalar el paquete.
> }
> unit Zcore;
> interface
> uses
> Zclasses, Zcollections, Zcompatibility, Zexprparser, Zexprtoken,
> Zexpression,
> Zfunctions, Zmatchpattern, Zmessages, Zsysutils, Ztokenizer,
> Zvariables,
> Zvariant;
> implementation
> end.
>
> Fíjate que Lazarus ha renombrado la unit ZClasses como Zclasses, dando
> lugar a un conflicto de nombres. Presumiblemente este es un error en
> Lazarus, no de los paquetes Zeos. Un camino a seguir para solucionarlo
> es renombrar todos los ficheros fuente de Zeos a minúsculas. Accede a
> cada subdirectorio bajo src/ y ejecuta este mandato en una ventana de
> bash (shell) de windows:
>
> rename -v 'y/A-Z/a-z/' *
>
> Entonces, en Lazarus, reabre el paquete (.lpk) y corrige el nombre de
> fichero (mayúsculas/minúsculas) seleccionando en "More..."/"Fix Files
> Case"
> El paquete debería poderse compilar entonces.
>
> Comentarios
>
> En el momento actual Zeos CVS para Lazarus tiene paquetes rotos.
> Algunos comentarios de IgD:
>
> Utilizando una instalación limpia de Lazarus 0.9.12 (última versión
> estable) fuí capaz de instalar ZeosLib (13 Octubre 2005). Primero
> corrige los siguientes errores en ZeosLib:
>
> 1. Cambia ZplainPostgreSql81.pas a ZPlainPostgresSql8x.pas en zplain.lpk
>
> <Item22>
> <Filename Value="../../src/plain/ZPlainPostgreSql81.pas"/>
> <UnitName Value="ZPlainPostgreSql8x"/>
> </Item22>
>
> 2. Fix the following typos in zdbc.lpk:
>
> a. Remove extra "/" from "build/" (remove the one that is inside the
> quotes)
>
> <SearchPaths>
> <OtherUnitFiles Value="../../src/dbc/"/>
> <UnitOutputDirectory Value="build/"/>
> </SearchPaths>
>
> b. Add missing quote to unitname value
>
> <Item43>
> <Filename Value="../../src/dbc/ZDbcASA.pas"/>
> <UnitName Value="ZDbcASA/>
> </Item43>
>
> Ahora, aquí están las instrucciones de instalación:
>
> Antes de la versión 0.9.13 de Lazarus era necesario abrir cada uno de
> los paquetes de Zeos a través de Paquetes/Abrir Paquete en el
> siguiente orden:
>
> zcore.lpk
> zparsesql.lpk
> zplain.lpk
> zdbc.lpk
>
> Entonces finalmente abre zcomponent.lpk para compilarlo e instalarlo.
> En Lazarus 0.9.13 > solamente puede abrir zcomponent.lpk. El IDE
> abrirá el resto automáticamente.
>
> Nota: los cuatro primeros paquetes solamente necesitan ser compilados
> y no pueden ser instalados.
>
> --Forest 17:41, 2 Nov 2005 (CET)
>
> 3. Si compilas e instalas Lazarus con éxito, pero después de
> compilarse, comienza con:
>
>
>
> Entonces se puede hacer:
>
> Dentro del fichero Zeos.Inc reemplazar, en la sección "// Settings for
> Debug mode": {$R-} a {$R+}
>
> --Junior 19:48, 15 Apr 2006 (GMT)
>
> Si aún así después de mostrar un error no recuperable que permita
> arrancar Lazarus, nos queda la alternativa de buscar el fichero
> ejecutable tal como estaba antes de compilar todo y que figura como
> lazarus.old.exe
>
> Hacer la primera aplicación Zeos
>
> Sitúa un componente ZConnection en el formulario.
>
> Establecer las propiedades de User, Password, Host, Port y Protocol (y
> cualquier otro parámetro que se necesite).
> Establecer la propiedad "Set Connected" con el valor True.
>
> Sitúa un componente ZQuery en el formulario (cuidado con confundirlo
> con ZReadOnlyQuery).
>
> Establecer la propiedad "Connection" al valor de ZConnection activo.
> Establecer la propiedad Sql a algo similar a SELECT * FROM MyTable
> (selecciona todo el contenido de la tabla especificada de la base de
> datos que se haya abierto previamente, es una sentencia SQL).
> Establecer la propiedad "ACTIVE" al valor True.
>
> Sitúa un componente DataSource de la solapa [Data Access].
>
> Establecer la propiedad "DataSet" con valor igual a la ZQuery activa.
>
> Sitúa un componente DBGrid de la solapa [Data Controls].
>
> Establece el parámetro Datasource con el valor DataSource.
> Si todo está bien se deberían ver los registros rellenos con datos en la
> tabla.
>
> Más información sobre como trabajar con Zeos
>
> En los siguientes enlaces se pueden encontrar artículos realmente
> útiles explicando el uso de Zeos y su uso interno, alguno de los
> cuales además tratan además sobre materias específicas de Delphi pero
> que pueden ser utilizadas con Lazarus también.
>
>
> Tutorial en español de Zeos+Lazarus+Sqlite:
> ZeosLib DBOs 6.1.5 - con Delphi 7 y Firebird 1.5
> Descripción de la arquitectura de los objetos de ZeosDB
> Una introducción a la API de ZDBC
> También chequea la sección Downloads para encontrar ejemplos reales
> que pueden ser fácilmente portados a Lazarus.
>
>
> Por favor completar esto :)
>
> Posibles fallos e incidencias
>
> He notado que en algunas ocasiones cuando se construye Lazarus no es
> capaz de encontrar algunos ficheros de Zeos, como un método rápido
> puedes probar esto:
>
> Use Components/Package Graph from the main menu.
> Abre el paquete ZComponent.
> Right Click on the Files item in the list.
> Selecciona [Recompile all required].
> Cuando pregunte "Re-Compile this and all required packages?" responder
> [Yes].
> Recompila Lazarus normalmente (con paquetes).
>
> Hay un error en FPC's AnsiStrComp que causa comparación no fiable
> PChar, esto es obvio cuando se utiliza DBGrid para editar datos,
> AnsiStrComp('abc', 'abcd') no puede detectarlo ya que son diferentes
> pero detectaAnsiStrComp('abd', 'abcd') ignorando múltiples caracteres
> de la segunda cadena. Este error fue encontrado por Jesusrmx. Este
> error probablemente será subsanado pronto, ver Bug Report.
>
> [Ya arreglado en trunk 1013] Tratando de compilar la revisión 903 de
> ZeosDBO trunk (20110806) sobre GNU/Linux amd64 x86_64 da errores en el
> archivo ZClasses.pas como los siguientes:
>
> Error: No matching Implementation for interface method
> "IUnknown.QueryInterface (constref TGuid, out <Formal type>) LongInt;
> Cdecl;"
> El problema se debe a cambios en FPC relacionados con la
> compatibilidad entre plataformas
> (
> http://wiki.freepascal.org/User_Changes_2.6.0#IInterface.QueryInterface.2C_._AddRef_and_._Release_definitions_have_been_changed
> )
> y la solución es editar el archivo ZClasses.pas como en el siguiente
> parche:
>
> - function QueryInterface({$IFDEF
> FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj):
> HResult; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; virtual;
> - function _AddRef: Integer; {$IFNDEF
> WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
> - function _Release: Integer; {$IFNDEF
> WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
> + function QueryInterface({$IFDEF
> FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj):
> HResult; {$IF (not defined(WINDOWS)) AND
> (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND}; virtual;
> + function _AddRef: Integer; {$IF (not defined(WINDOWS)) AND
> (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};
> + function _Release: Integer; {$IF (not defined(WINDOWS)) AND
> (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};
> public
> constructor Create(const Controller: IInterface);
> property Controller: IInterface read GetController;
> @@ -89,7 +93,8 @@
> TContainedObject = class(TAggregatedObject, IInterface)
> protected
> - function QueryInterface({$IFDEF
> FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj):
> HResult; {$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; override;
> + function QueryInterface({$IFDEF
> FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} IID: TGUID; out Obj):
> HResult; {$IF (not defined(WINDOWS)) AND
> (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND}; override;
> end;
> {$ENDIF}
> @@ -221,7 +226,8 @@
> Result := IInterface(FController)._AddRef;
> end;
> -function TAggregatedObject._Release: Integer; {$IFNDEF
> WINDOWS}cdecl{$ELSE}stdcall{$ENDIF};
> +function TAggregatedObject._Release: Integer; {$IF (not
> defined(WINDOWS)) AND
> (FPC_FULLVERSION>=20501)}cdecl{$ELSE}stdcall{$IFEND};
>
>
> [Ya arreglado en trunk 1013] Tratando de compilar la revisión 903 of
> ZeosDBO trunk en GNU/Linux con FPC 2.6.0 o superior, da el siguiente
> error en ZAbstractRODataset.pas: "Error: Expected another 2 array
> elements". El problema es que FPC2_1UP no está definido porque el
> archivo src/Zeos.inc no verifica las versiones nuevas. Si estamos
> usando solo versiones nuevas de FPC (2.6, 2.7 o superiores) podemos
> modificar src/Zeos.inc agregando las lineas siguientes justo antes de
> {$IFDEF VER2_5}, y el error no aparece mas.
>
> + {$DEFINE FPC2_5UP}
> + {$DEFINE FPC2_4UP}
> + {$DEFINE FPC2_3UP}
> + {$DEFINE FPC2_2UP}
> + {$DEFINE FPC2_1UP}
> + {$DEFINE FPC2_UP}
> +
> {$IFDEF VER2_5}
> {$DEFINE FPC2_5UP}
>
>
>
> 2013/5/6 José Mejuto <joshyfun en gmail.com>
> >
> > El 06/05/2013 20:14, Ismael L. Donis Garcia escribió:
> >
> >> Error: No matching implementation for interface method
> >> "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt;
> >> StdCall;" f
> >
> >
> > Hola,
> >
> >
> http://wiki.freepascal.org/Zeos_tutorial/es#Posibles_fallos_e_incidencias
> >
> > --
> >
> >
> > _______________________________________________
> > Lazarus-es mailing list
> > Lazarus-es en lists.lazarus.freepascal.org
> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
>
> --
> El que pregunta aprende, y el que contesta aprende a responder.
>
> No a la obsolecencia programada:
>
> http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html
>
> Linux User #495070
> http://domonetic.com/blog
>
>
>
> --
> El que pregunta aprende, y el que contesta aprende a responder.
>
> No a la obsolecencia programada:
>
> http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html
>
> Linux User #495070
> http://domonetic.com/blog
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
--
*Saludos.
Jose Daboin*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130506/5f27154f/attachment-0002.html>
More information about the Lazarus-es
mailing list