2010-03-10 15 views
7

La mayoría de las unidades en las que trabajo dependen de un Módulo de datos. Una de las cosas más molestas que encuentro es un mensaje de error que me dice¿Por qué un módulo no se podría salvar hasta que se cargue otro módulo?

El módulo X hace referencia a otro módulo y no se puede guardar hasta que se haya cargado el Módulo Y.

Ahora, estoy seguro que hay una muy buena razón por la CheckNoFixups plantea este error al intentar WriteRootStream, y no puede guardar lo que es en efecto un archivo de texto (y espero que esto no es seguida por donde Catastrophic Failure Debo reiniciar el IDE mientras aún no puedo guardar mi trabajo.) ¿Pero cuál es la buena razón?

¿Por qué no puedo hacer clic en guardar sin abrir un archivo de texto que contiene varias funciones y objetos como cualquier otra unidad? ¿Qué tiene de especial un DataModule que signifique que no puedo guardar la fuente en la que estoy trabajando hasta que esté abierta? ¿Por qué las otras 45 unidades de la cláusula uses no son tan importantes como para que estén abiertas?

EDIT: Es Delphi 2007

la Declaración del módulo de datos es:

unit DataMD; 

TRepDataMod = class(TDataModule) 
... 
var 
    RepDataMod: TRepDataMod; 

Respuesta

1

Si el módulo de datos no es parte del proyecto abierto los datos de objetos conscientes en su formulario que hacen referencia a la DataModule, no puede verificar su referencia y, por lo tanto, creo que aparece el mensaje.

Solo vi este mensaje cuando estaba trasladando un proyecto anterior a una nueva versión de Delphi o estaba migrando a un nuevo conjunto de componentes de la base de datos. En circunstancias normales, no he encontrado este mensaje.

En versiones anteriores no he visto el mensaje y la forma/unidad podría guardarse, pero las referencias que estaban en su dfm se eliminaron mágicamente.

+0

Suena interesante, he visto el mismo problema con proyectos antiguos (referencias desalentadas), ¿cómo lo arreglan? – Harriv

+1

@Harriv: La única forma que encontré fue asignando estas referencias en código en lugar de en tiempo de diseño. Eso siempre funcionó, cualquier otra cosa no. Si está utilizando algún control de fuente, siempre debe verificar la diferencia del archivo dfm antes de confirmar, para que al menos pueda detectar el problema cuando ocurra y pueda solucionarlo copiando las líneas perdidas desde la versión anterior del archivo. No es una solución ideal tampoco ... – dummzeuch

1

Tengo el mismo problema (Delphi 7).

Tengo una lista de imágenes en un módulo de datos para su uso en toda la aplicación. Ocurre después de una compilación, si hay un error de sintaxis. El IDE abre el archivo (pas) y puedo corregir el error.

Pero al tratar de guardar el archivo, se muestra el mensaje ("Módulo 'XXX' vincula al módulo 'YYY' que no se puede encontrar en el proyecto actual. ¿Desea eliminar/redirigir los enlaces a otro módulo?"). XXX es el archivo en sí y YYY es el módulo de datos. El módulo de datos es incluido en el proyecto y responder "Sí" a esa pregunta eliminaría todos los enlaces en el archivo dfm.

Así que la única solución es presionar "No", que básicamente guarda el archivo pas y cierra el archivo en el - esta vez presionando "No" a la pregunta si el archivo debe guardarse (el pas ya está guardado))

Ya he intentado varias soluciones alternativas pero todavía tengo problemas.

0

El módulo X hace referencia a otro módulo y no se puede guardar hasta que se haya cargado el Módulo Y.

Simplemente mire X.dfm (X.fmx) para las entradas "Y".Qué hacer con ellos, es tu elección.

0

Asegúrese de que DataModule es parte del proyecto. No es suficiente solo para incluir en search-path o ingresar en dpr-file manualmente. Ir a través de IDE y agregar el DataModule al proyecto.

También asegúrese de que DataModule dfm-resource tenga el mismo nombre que la unidad.

Cuestiones relacionadas