sábado, 8 de diciembre de 2012

Soluciones a 3 problemas comunes al programar en C++ Builder

       Durante mi corta experiencia como programador de sistemas, específicamente al desarrollar en C++ Builder 6, me he topado con algunos problemitas.

En aquellos momentos fue desesperante el no poder salir del hoyo. Busqué en foros, pregunté a amigos y conocidos y la mayoría de las veces la ayuda me funcionó. Pero en 3 ocasiones no encontré ayuda por ninguna parte y me las tuve que arreglar a quita y pone (prueba y error). He aquí estas experiencias espero y les sirvan.

a call to an os function failed.
Este es el más reciente. Programaba un módulo en el cuál utilizaba dos ComboBox. Cuando intentaba ingresar al módulo en cuestión aparecía un mensaje de error con la leyenda "a call to an OS function failed". Sin embargo, el módulo se ejecutaba. 

En los foros me encontré que era un problema de asignación de recursos. Lo probé en varias computadoras y el error persistía.

Después de varias horas de quitar y poner componentes, comentar funciones, etc, me di cuenta que inicilizaba los ComboBox desde la propiedad Items. Decidí iniciar con la propiedad Items vacía y el error desapareció.
 
No se puede compilar el proyecto.
En una ocasión, mientras desarrollaba un proyecto, la corriente eléctrica falló. El proyecto estaba abierto, la computadora se apagó. Cuando volví al proyecto, ya no podía compilarlo más. El modo pánico se activó.


Borré los archivos obj y el ejecutable, pero no funcionó. Después de horas de quita y pone, recordé que en otras ocasiones cuando durante la compilación generaba errores, lo que hacía era cambiar el ícono de la aplicación, para ello:
  1. En el menú principal ingrese a Project->Options. Aparece la siguiente ventana. 
  2. Ingrese a la pestaña de Application y seleccione Load Icon. 
  3. Seleccione un nuevo ícono para la aplicación.
  4. Presione el botón OK.
  5. Guarde los cambios y compile el proyecto.
Los archivos dañados se generan nuevamente y listo.

Agregar a un proyecto Forms de otros proyectos.
En ocasiones es necesario agregar Forms de otros proyectos a nuestro proyecto. Para ello recomiendo los siguiente pasos:
  1. Copie los archivos .cpp, .h y .dfm del Form a la ruta del proyecto.Al crear un Form se crean 3 tipos de archivos: .cpp, .h y .dfm (es un archivo de texto que contiene la disposición gráfica de los componentes). 
  2. En caso de tener un Form con el mismo nombre cambie el nombre en los tres archivos mencionados. Para ello edítelos y busque el antiguo nombre y reemplácelo por el nuevo (incluído el .dfm).
  3. Cambie el nombre de los archivos también.
  4. Agregue el Form al proyecto: Project->Add to Project. Seleccione el archivo .cpp y presione el botón Abrir.
  5. Guarde los cambios y compile.
Espero y les sea de utilidad.

Anexo (1): Un Error más
Se me olvidaba comentar estos errores:
System Error: El sistema no puede hallar la ruta especificada line:0. Aceptar.
System Error: -2146697210 line:0 Aceptar.

Me sucedió una vez que trabajé con archivos XML, específicamente el componente XMLDocument. Para poderlo utilizar cargaba un archivo previamente. En tiempo de ejecución el programa cargaba un XML que me servía como machote.

Pasó el tiempo, y volví a necesitar la aplicación que usaba el XML. Cuando la llevamos a instalar, el sistema no permitía su ejecución y botaba los mensajes citados arriba.

Después de varios ciclos de quitar y poner, recordamos que se utilizaba un archivo XML como machote. Se agregó en la ruta espeficada y el error se esfumó.

2 comentarios:

  1. Tengo un error al compilar cuando lo guardo en otra ruta el proyecto, pero si lo compilo sin guardarlo pués funciona correctamente ayuda xfavor....

    ResponderEliminar
    Respuestas
    1. hola.. déjame ver si entendí.. estás haciendo un proyecto, si lo guardas en la ruta en la que lo creaste no te da problemas, pero si lo guardas en una ruta distinta te marca un error?? Si es así, checa tus directorios en Project->Options->Directories, sino sería bueno que ampliaras las descripción de tu problema igual y puedo ayudarte.. saludos

      Eliminar

Slider