PDA

Ver la Versión Completa : Problema al ejecutar el programa ( Unit SysUtils ).


chelejuan
13-10-2005, 11:34:20
Buenas y sorry si soy un poco novato, solo he tocado delphi 5.0 y ahora me estoy peleando con delphi 7.0.

Tenemos un programa hecho y funcionando en delphi 5.0, ahora hay que pasarlo a delphi 7.0.

Nada mas intentar arrancar el programa en delphi 7.0 ( al darle a f8 ) me dice :

(Fatal Error) Interiura.dpr (117); Unit sysutils was compiled with a different version os sysconst.SinvaidGuid.


¿Que tengo qeu volver a recompilar? Es que no me deja compilar ni hacer nada ...

Venga un saludo.

Neftali [Germán.Estévez]
13-10-2005, 11:39:20
Revisa los path de librerías que tienes en el proyecto; Me da la impresión de que te está encontrando librerías (DCUs) que no corresponden a la versión 7 de Delphi.

chelejuan
13-10-2005, 11:44:27
Eh .. ¿y como reviso eso?.

Me esta dando error en la linea de cargar los formularios, he creado uno nuevo ( para comparar si hay diferencia ) y me da error ahora en este formulario.

En la linea pone esto :

Unit32 in 'Unit32.pass' {Form32};


Justo encima de este tengo todo declarado, en el mismo formato.

Al principio pone :

uses
Form,

Y asi bastantes.

Neftali [Germán.Estévez]
13-10-2005, 12:04:22
Unit32 in 'Unit32.pass' {Form32};

Las dos S's (eses -letra s-) de Unit32.pass son un poco raras...
De todas formas y violviendo al tema anterior; Revisa las opciones del proyecto que te falla; En Project/options
Verás que hay un directorio donde tienes definidos los directorios de busqueda de librerías.
Revisa también los path definidos en el Delphi para todos los proyectos: Tool/Environment Option/Pestaña Library.

Preguntas:
¿Tienes instalados Delphi 5 y delphi 7 en la misma máquina -en la del error-?
Busca en el ordenador el fichero sysconst.* ¿Encuentras más de uno? Si es así, ¿tu programa no estará encontrando el que no debe? (revisar paths)

chelejuan
13-10-2005, 12:38:51
Las dos S's (eses -letra s-) de Unit32.pass son un poco raras...


No lo escribi bien, sorry.

[QUOTE=Neftali]
De todas formas y violviendo al tema anterior; Revisa las opciones del proyecto que te falla; En Project/options
Verás que hay un directorio donde tienes definidos los directorios de busqueda de librerías.

Ok entro en Project/options.

Veo Directories/Conditionals

Esta todo en blanco salvo abajo en aliases que tiene datos escritos, el resto esta en blanco.

He mirado el de delphi 5 y tambien esta en blanco. ¿es aqui? ¿Que deberia poner? ¿La ruta donde tengo el codigo del programa?.



Revisa también los path definidos en el Delphi para todos los proyectos: Tool/Environment Option/Pestaña Library.


Esto lo estuve mirando y son todas rutas relativas, en plan $(DELPHI)\lib asi que supongo que estan bien, no las toque.



Preguntas:
¿Tienes instalados Delphi 5 y delphi 7 en la misma máquina -en la del error-?
Busca en el ordenador el fichero sysconst.* ¿Encuentras más de uno? Si es así, ¿tu programa no estará encontrando el que no debe? (revisar paths)


No tengo ahora mismo dos pc en la mesa, en uno windows xp con delphi 5.0 y en otro windows 2000 con delphi 7.0. No queria tocar el de desarrollo por si el cliente me pide algun cambio o prueba del programa, poder hacerselo por ahora en delphi 5.0.


Sobre el archivo sysconst.* me aparecen varios en este pc, me aparecen en el directorio raiz de delphi, despues en mi programa hay uno que es una traduccion.

Puede ser que el problema es que me detecte uno pero no me lo termine de cargar ???

Venga gracias por la info, al menos ya se que ir mirandome.

chelejuan
13-10-2005, 12:44:40
Ok he copiado el archivo que aparece en delphi en mi carpeta y ahora me da otro error:

Unit controls was compiled with a different version of Consts.SparentgivenNotAParent.

¿Que archivo es? Por que busco controls en mi carpeta de trabajo y no me aparece.

Lo que hice fue cambiar el archivo sysconst de la carpeta de delphi por el mio, ahora aparece en ingles pero al menos funciona, es un paso.

Neftali [Germán.Estévez]
13-10-2005, 13:10:21
Parece claro que el problema son las versiones de DCUs, pero no debes copiar archivos de Delphi a tus directorios, porque aunque inicialmente puede funcionar a la larga puedes tener problemas como el que te ha sucedido ahora (que se desfasen las versiones).
Debes revisar los (1)path del sistema, (2)los paths de librerías de tu proyecto y los (3)path de librerías de Delphi y modificarlos para que encuentren las librerías donde deben.

(1) El path de Windows; Control Panel, Sistema, Iniciao y recuperación.
(2) En las opciones de tu projecto.
(3) En Tool/Environment Option/Pestaña Library.

En Search path añade el directorio donde estén los DCU´s correctos.

chelejuan
13-10-2005, 15:27:13
Parece claro que el problema son las versiones de DCUs, pero no debes copiar archivos de Delphi a tus directorios, porque aunque inicialmente puede funcionar a la larga puedes tener problemas como el que te ha sucedido ahora (que se desfasen las versiones).
Debes revisar los (1)path del sistema, (2)los paths de librerías de tu proyecto y los (3)path de librerías de Delphi y modificarlos para que encuentren las librerías donde deben.

(1) El path de Windows; Control Panel, Sistema, Iniciao y recuperación.
(2) En las opciones de tu projecto.
(3) En Tool/Environment Option/Pestaña Library.

En Search path añade el directorio donde estén los DCU´s correctos.

¿Cuales son los dcu correctos? ¿Los de delphi?.

Mi problema es que no se que cambiar, te voy comentando que tengo en cada lado y a ver si asi vemos uqe tengo mal.


(1) Aqui no se que tengo que ver, en Inicio y recuperacion ... n veo nada de delphi ni nada extraño.

En variables de entorno no aparece nada de delphi.

(2) Las opciones de mi proyecto :

Aqui el unico que tengo con datos es aliases que pone esto :

WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

El resto esta vacio. ¿Que tengo que poner la direccion de delphi en todos?.


(3) Opciones de delphi :

Me pone esto :

Library path : WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;


BPL output directory :
$(DELPHI)\Projects\Bpl

DCP output directory :
$(DELPHI)\Projects\Bpl

Browsing path :
$(DELPHI)\source\vcl;$(DELPHI)\Source\Rtl;$(DELPHI)\source\rtl\Corba45;$(DELPHI)\source\rtl\Sys;$(DE LPHI)\source\rtl\Win;$(DELPHI)\source\rtl\common;$(DELPHI)\source\Internet;$(DELPHI)\source\clx;$(DE LPHI)\source\websnap;$(DELPHI)\Source\WebMidas;$(DELPHI)\Source\Indy;$(DELPHI)\Source\IntraWeb;$(DEL PHI)\Source\Samples;$(DELPHI)\Source\Soap;$(DELPHI)\Source\ToolsAPI;$(DELPHI)\Source\Xml


Yo tengo mi codigo fuente en d:\programacion\interiura


¿Cual tengo que cambiar de los 4?, voy a ir haciendo pruebas, por ejemplo poner en los 4 esto ",d:\programacion\interiura"

Espero me podais ayudar. Un saludo.

chelejuan
13-10-2005, 16:27:35
No lo entiendo, cambie las direcciones y me empezo a dar otro error, es este :


Unit not found: 'System.pas' or binary equivalents( DCU, DPU )


Asi que vuelvo a ponerlo como estaba antes y me sigue dando el mismo error.

¿Que me he cargado?.

Neftali [Germán.Estévez]
13-10-2005, 16:47:17
El problema sigue siendo que tienes Units repetidas en varios sitios. De esa forma nunca podrás saber exactamente cual te está cogiendo Delphi y si es la versión correcta.
Para tenerlo correcto sólo debería haber una de esas units en el ordenador por cada versión de Delphi instalada(en el caso de las DCU's a veces se repiten porque unas están "repetidas" en el directorio debug, aunque no son las mismas).
El problema es que eliminar las que no son es algo que no me atrevo a proponerte.

dec
13-10-2005, 16:58:03
Hola,

A lo mejor la descripción del mensaje del error/compilador sirve de algo:



Unit <element> was compiled with a different version of <element>.<element>

This fatal error occurs when the declaration of symbol declared in the interface part of a unit has changed, and the compiler cannot recompile a unit that relies on this declaration because the source is not available to it.

There are several possible solutions - recompile Unit1 (assuming you have the source code available), use an older version of Unit2 or change Unit2, or get a new version of Unit1 from whoever has the source code.

This error can also occur when a unit in your project has the same name as a standard Delphi unit.

For example, this may occur is when compiling a project written in a previous version of Delphi that did not have a unit of this name (for example, search.pas was not in Delphi 3).

To solve the problem in this case:

1. Open <Unit2> and save it with a new name.
2. Alter all references to <Unit2> in uses clauses to refer to the new name.
3. Delete the old <Unit2>.pas AND <Unit2>.dcu versions of this unit.
4. Rebuild the project.

chelejuan
13-10-2005, 16:58:04
El problema sigue siendo que tienes Units repetidas en varios sitios. De esa forma nunca podrás saber exactamente cual te está cogiendo Delphi y si es la versión correcta.
Para tenerlo correcto sólo debería haber una de esas units en el ordenador por cada versión de Delphi instalada(en el caso de las DCU's a veces se repiten porque unas están "repetidas" en el directorio debug, aunque no son las mismas).
El problema es que eliminar las que no son es algo que no me atrevo a proponerte.

Por borrarlas no hay problema, la cosa es probar hasta que funcione ¿no?.

En este ordenador no tengo nada, si se "rompe" algo no es importante, es copia.

El que me da ahora error es system.pas

He hecho la busqueda y lo tenia en dos lados, he borrado y dejado UNICAMENTE la que esta en delphi, pero me sigue dando el mismo error.

¿Que hago mal?.

Estoy por reinstalar el delphi para que vuelva a pichar los datos de inicio ¿que me recomiendas?.

chelejuan
13-10-2005, 18:49:30
Comento mis ultimas pruebas, he reinstalado delphi, ya que me daba errores por toquetear demasiado.

Vale encontre en ingles varios con el mismo problema y la solucion era borrar todos los .dcu de la carpeta del programa, segun parece funciona por que ahora me da otro error pero ya en un formulario no en el inicio como antes.

El error es :

Unit sqltimst was compiled with a different version of Dbconsts.Scouldnotparecetimeslamp.

¿Sabeis que tengo mal? ya que este archivo no lo encuentro.

Venga un saludo

marcoszorrilla
13-10-2005, 19:33:09
O mucho me equivoco o esa Unit sqltimst no pertenece a Delphi. No será que has utilizado componentes de terceros y has cambiado de versión de Delphi?

Un Saludo.

chelejuan
14-10-2005, 11:23:41
La cosa es que esa unidad no la encuentro en todo el pc.

El error me lo da en el uses entre extctrls, DBCtrls

¿Como puedo quitar esta unidad si no me aparece?

Neftali [Germán.Estévez]
14-10-2005, 11:56:12
O mucho me equivoco o esa Unit sqltimst no pertenece a Delphi. Sí que pertenece a Delphi; Implementa el tipo TSQLTimeStam y funciones y procedimientos relacionados con éste. Lo utilizan algunas uniots relacionadas con Base de Datos (DB, DBLocal,...).

La cosa es que esa unidad no la encuentro en todo el pc.
El error me lo da en el uses entre extctrls, DBCtrls ¿Como puedo quitar esta unidad si no me aparece?
NOTA (edito): Busca tanto el .PAS como el .DCU

Bueno si no la encuentras está claro que no vas a poder compilar, o al menos tal y como lo estás haciendo ahora. Yo lo tengo ubicado (D6) en el directorio VCL.
Debes estar compilando sin Runtime Packages (de ahí que esté intentando compilar las Units de Sistema); Prueba a activar el check que hay en:
Project/options/Packages/Build with runtime Packages.

Si con eso compila, por lo menos sabrás que el programa no tiene errores. Habrás compilado de forma que necesitarás las BPL's de delphi para ejecutar. Si funciona, a partir de ahí podemos volver al punto anterior.

chelejuan
14-10-2005, 12:29:01
Si vale la encontro en en el directorio de delphi 7 /source/vcl como bien dices no lo buscaba bien.


A ver te comento lo que hago :

- Copio el codigo fuente original en otra carpeta
- Borro todos los *.dcu
- Abro el programa


- Lo intento compilar (F8)
Me dice Unit sysutils was compiled with a different version of sysconst.SinvalidGUID

Quito del proyecto estos archivos ( son traducciones ) :
sysconst.pas
webconst.pas
bdeconst.pas
constrs.pas
consts.pas
dbconsts.pas
oleconst.pas


Me sigue dando el mismo error :

Unit sysutils was compiled with a different version of sysconst.SinvalidGUID

Ahora activo lo qeu me digistes ( Project/options/Packages/Build with runtime Packages.) :


Me dice Required package 'dclaxserver50' not found


Ahora no consigo que me salga el otro error, siempre sale el mismo ...



Cosa curiosa, En Project/options/Packages/Build with runtime Packages.

En mi programa pone esto :

Vcl50;Vclx50;VclSmp50;Qrpt50;Vcldb50;Vclbde50;ibevnt50;vcldbx50;TeeUI50;TeeDB50;Tee50;TeeQR50;VCLIB5 0;vclie50;Inetdb50;Inet50;NMFast50;dclocx50;dclaxserver50


Y en uno de delphi 7.0 sin nada recien creado pone esto :

vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp ;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualcl x;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeX P


Es totalmente diferente, he probado a poner este mismo en mi programa pero tampoco va.

¿Puede ser el problema esto?.

Neftali [Germán.Estévez]
14-10-2005, 13:07:13
Ahora activo lo qeu me digistes (Project/options/Packages/Build with runtime Packages.) :
...
¿Puede ser el problema esto?.
El tema éste es diferente a lo que hemos hablado hasta ahora. Es simplemente otra manera de compilar.
Lo que haces al activar RunTime Packages es decirle a Delphi que utilize las librerías que ya tiene compiladas en lugar de compilarlas de nuevo y añadirlas a tu proyecto.

Al compilarlo con D7 deja en tu programa ésto:
Project/options/Packages/Build with runtime Packages.
vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp ;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;
y prueba a compilarlo a ver qué error da.

___________________________________________________________
De todas formas y volviendo al tema inicial:


A ver te comento lo que hago :

- Copio el codigo fuente original en otra carpeta
- Borro todos los *.dcu
- Abro el programa

- Lo intento compilar (F8)
Me dice Unit sysutils was compiled with a different version of sysconst.SinvalidGUID

Vale empezemos; En éste punto busca todas los ficheros:
* sysutils.pas
* sysutils.dcu
* sysconst.pas
* sysconst.dcu
que haya en el ordenador y qué path tienen.

chelejuan
14-10-2005, 13:24:38
WEEE YA ARRANCO.

Lo que hice fue generar una nueva instancia metiendole lo de :

vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp ;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualcl x;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeX P

Quitando los archivos que te comente anteriormente y ya me empezo a funcionar, ahora me dio errores de incompatibilidad de programas y demas, pero eso no es importante, la cosa es que va arrancando y parece que esto tira.

Muchas gracias por la ayuda si no fuese por ti no habria cambiado nunca estos datos, es que ni se me ocurrio.

Venga un saludo y gracias de nuevo.

Neftali [Germán.Estévez]
14-10-2005, 13:43:37
De todas formas esa compilación que has hecho es con "Runtime Packages" activado. Eso significa que si quieres que el programa funcione en otra máquina además del ejecutable deberás copiar algunos BPL's de Delphi.

Si quieres que todo el programa vaya en un solo fichero (.EXE) debes desactivar esa opción y volveremos a los problemas anteriores.

chelejuan
14-10-2005, 13:54:59
Pues es verdad, sigue dando los mismos problemas que antes.

¿Entonces junto con el exe deberia llevar todas las dll?. ¿Me las picharia en un instalador o tengo que ponerlas manualmente?.

Neftali [Germán.Estévez]
14-10-2005, 15:41:37
No, todos no. Hay varias formas de saber exactamente qué BPL's o DLL's necesita un programa para ejecutarse.

Vistazo rápido a:
http://www.clubdelphi.com/foros/showpost.php?p=79393&postcount=8
http://www.clubdelphi.com/foros/showthread.php?t=17576
http://www.clubdelphi.com/foros/showthread.php?t=13979