![]() |
Algun sistema para encontrar el orígen del error?
Buenos días,
Estoy finalizando un proyecto, y haciendo pruebas en un ordenador "virgen" (sin entorno de desarrollo Delphi). Los distintos componentes del proyecto (una aplicación de escritorio, un servicio y una aplicación de "tray-icon") funcionan perfectamente (o casi) en la máquina de desarrollo. Pero en el ordenador de pruebas, ná de ná. El caso es que me preguntaba si existe alguna forma de encontrar el orígen de estos errores. Por ejemplo, sé que si falta algún componente (BPL) o librería (DLL), la aplicación no arranca y dice qué le falta. Pero claro, cuando suelta la típica ventanita de "Esta aplicación ha provocado un error en Kernel32.dll y tal y cual", ya es más complicado... Alguna idea/sugerencia? Que hacéis vosotros, cuando os encontrais en una situación similar? Gracias, Marc |
Me auto-respondo...
Las bases de datos, las malditas bases de datos conectadas en tiempo de diseño... Y cuando se compilan en la versión definitiva se dejan conectadas, con rutas incorrectas y todo falla... :mad: La solución? Poner a false el atributo Active de todos los TIBCConnection... Saludos, Marc |
Cita:
También puedes capturar los errores desde código y poner mensajes según va cargando cada form para encontrar al culpable. Luego seguir paso a paso el código para ver qué hace y si no encuentras pistas... instalar el delphi en ese ordenador :D |
Cita:
Al igual que los pilotos de avión deben hacer por obligación una serie de rutinas aburridas y pesadas antes de iniciar el vuelo... nosotros debemos verificar también una serie de pasos antes de compilar :) |
|
Como que ya hacen falta en la VCL propiedades StoreConnected / StoreActive para todos los componentes de acceso a datos. ;)
|
Cita:
saludos. |
¿Me puede alguien explicar el origen de este problema? No entiendo qué relación hay entre dejar abierta la conexión al compilar y el que las rutas no sean las correctas.
// Saludos |
Te lo puedo decir mañana, ahora no estoy en el trabajo, pero son cosas como:
- comprobar que el proyecto se compila con paquetes externos - comprobar que las bases de datos están cerradas - no olvidar la .dll del compresor zip - generar plantillas de bases de datos nuevas (por si lleva cambios) - anotar versión/revisión en acerca de... y de memoria no recuerdo más :) |
Cita:
Debes poner el active=false. El truco cuando ya está en el cliente y mientras lo solucionas compilando de nuevo es crear esa misma ruta en el equipo del cliente y meter allí cualquier base de datos con el mismo nombre. |
Cita:
// Saludos |
Creo recordar que alguien hizo unos componentes que solucionaban este problema, ¿puede ser Al González?.
El caso es que FIBplus creo que lo implementó desde hace algún tiempo, pero que yo sepa sigue ese problema en las IBX |
Cita:
Se supone que en la propiedad databasename habrás puesto una correcta al arrancar el programa (y antes lo pondrás a 'false'). Luego ya depende de cada uno, si lees la ruta en un .ini o como sea. Pero el caso es que los IBX tienen (o tenían, no sé ahora) ese fallo. |
Cita:
|
Las Zeos en su componente TZConnection tiene una propiedad booleana "Design Connection" que al ponerla a TRUE, hace el trabajo de no conectar la base de datos aunque accidentalmente la hayamos dejado activa en tiempo de diseño.
|
También MyDac cuenta con algo similar; la opción KeepDesignConnected.
// Saludos |
La FIBplus tiene:
Código:
+ DesignDBOptions |
Cita:
Cita:
Saludos. Al González. :) |
hasta cnpacks tiene esa opción, pones una regla que la propiedad Active sea False para los TIBDatabase y te olvidas del tema.
|
Cita:
Lepe, ¿dónde están esas reglas?, es que no las encuentro :o |
Lo que necesitan es un sistema de Build automatizados.
Que es? Es hacer un programa con TODOS los pasos necesarios para liberar una version de entrega al usuario/tester. http://en.wikipedia.org/wiki/Build_automation. Yo utilizo http://www.finalbuilder.com/. Por ejemplo, esto es lo que hago para armar a www.bestsellerapp.com: - Descargo de internet las librerias (versiones exactas) de python/dependencias si no estan ya descargadas en el equipo - Descargo del repositorio de Subversion la ultimo version estable - Limpio los .ini de configuraciones - Compilo el proyecto - Ejecuto los test de DUNit - Recolecto todos los archivos que necesita el instalador - Genera dinamicamente el archivo XML que usa el generador de instaladores multiplataforma http://bitrock.com/ - Valido que el XML sea correcto - Invoco a bitrock y genero el instalador - Conecto al servidor www.elmalabarista.com por SFTP, elimino el instalador viejo y subo el nuevo - Envio un correo informando del nuevo instalador Y eso, que voy en la *mitad* del proceso. Estoy armando la parte de conectarse4 al mac, compilar con Freepascal/lazarus la version en OSX, compilar con XCode la version de iPhone, generar el archivo de firma digital, subir al servidor de apple y publicar. Resutado? A cualquier dia, en cualquie momento, tengo 100% de certeza que puedo entregar una version estable del proyecto, con mas de 100 pruebas automatizadas, de forma repetible y sin meter archivos que no son o que me falten, sin versiones de depuracion, configuraciones erroneas y todo eso. |
Cita:
Es que las puse cuando instalé delphi y ya ni me acuerdo. Cnpacks -> options -> paleta wizards settings -> Name property corrector -> boton settings -> Add ... y ahora sí, estableces la regla para el TIBDatabase, etc... |
Cita:
|
| La franja horaria es GMT +2. Ahora son las 08:35:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi