2009-05-09 11 views
8

Nuestro equipo de desarrollo Delphi 7 almacena archivos de formulario (dfm) en modo texto y usa un sistema de control de origen (Subversion) para rastrear cambios.¿Alguna vez Delphi revierte archivos de texto (DFM) a formato binario?

A veces, nos dimos cuenta de que un archivo de formulario volvía al formato binario entre revisiones, lo que hacía que las herramientas de diferencia como TortoiseMerge se queje.

Usando el registro de cambios de Subversion, puedo ver que el archivo DFM se almacenó en forma de texto antes. Los desarrolladores de software nunca cambian el formato del archivo de almacenamiento a binario manualmente.

¿Ha encontrado lo mismo? ¿Es un problema conocido?

Respuesta

4

Lo he visto suceder en Delphi 7 cuando un formulario que hereda de otra forma de un proyecto diferente se abre en Delphi por sí mismo sin que el proyecto al que pertenece sea abierto.

2

Si alguien ha abierto el proyecto con una versión diferente de Delphi (o ha cambiado la configuración predeterminada), puede guardar los formularios en un formato diferente.

+0

Una buena pista, voy a comprobar esto. También tenemos instalado Delphi 2007 y 2009. La configuración predeterminada es solo para formularios nuevos, por lo que no estoy seguro de cómo pueden afectar los formularios existentes. – mjn

2

No, nunca había visto (o escuchado) que esto sucediera por sí mismo antes. Tenemos cientos de .DFM en un par de docenas de aplicaciones, y esto solo ha sucedido cuando un idiota accidentalmente hace clic derecho en un formulario y desmarca 'Texto DFM' en el menú contextual.

+0

Quizás fue el infame virus 'haga clic derecho y desmarque texto dfm'? ;) – mjn

+0

Nah ... Nuestro software antivirus habría captado eso. Fue un idiota

+0

¿Es Delphi 7? – mjn

1

Sin duda hemos encontrado esto. Usamos D7 exclusivamente.

Nunca llegué al fondo, ya que solo ocurre una media docena de veces al año, y aunque es una molestia, se remedia fácilmente.

Estaba interesado en ver la respuesta de Lars, y sin duda miraré para ver si esa es una posible causa la próxima vez que suceda.

1

Puede que esté interesado en investigar el uso de Beyond Compare en lugar de la herramienta de combinación incorporada de TortoiseSVN. Beyond Compare está escrito en Delphi, y de forma nativa sabe cómo leer DFM binarios. Esto significa que se convierte en un problema menor (o incluso no problemático) si sus DFM se almacenan en Subversion en formato binario o texto. Beyond Compare V3 también se fusiona en 3 direcciones, lo que facilita la fusión de varias confirmaciones, etc. Incluso ignorando la capacidad de diferenciar los DFM, sigue siendo un visor de diferencias mucho mejor que las herramientas incorporadas de TortoiseSVN. Lo recomiendo encarecidamente, y es muy económico (no tengo ninguna conexión con Scooter Software, aparte de ser un cliente muy feliz).

Scooter Software

4

Esto sucede a veces cuando el IDE se confunde.

Por lo general, comienza después de recibir una infracción de acceso dentro del Delphi 7 IDE.

A veces también uno o más de sus búfers de editor Delphi dentro del IDE se vuelven de solo lectura (mientras que los archivos en el disco todavía son de lectura/escritura).

El comportamiento se produce mucho menos que en Delphi 5 o 6, pero a veces se produce en Delphi 7.

Lo mejor que puede hacer es reiniciar el IDE de Delphi 7 tan pronto como se obtiene una violación de acceso.

1

También tenemos este problema de vez en cuando, y parece estar relacionado con mirar la fuente del DFM (Alt-F12) y luego hacer una operación de Visual Source Safe (por ejemplo, check-in).

11

Esto ocurre en Delphi 7 pero se soluciona en versiones posteriores. Normalmente accede a los formularios en el IDE abriendo el archivo .pas y luego cambiando a la Vista de formulario. Haga clic con el botón derecho en su formulario y se mostrará que está marcado "Texto DFM" si ya hizo esto antes.

Experimentará el problema que ha descrito de un DFM de texto que cambia a un DFM binario cuando en el IDE de Delphi 7 abre el archivo .dfm directamente. p.ej. Archivo-> Abrir-> Somefile.dfm .. Haga clic derecho en dfm y seleccione "Ver como formulario". Ahora haz clic derecho en el formulario, verás que el "DFM de texto" está desactivado.

Estábamos recibiendo el problema cuando abrimos un DFM que era un resultado de búsqueda grep. También nos dejó perplejos, y causaría corrupción del dfm en cvs, ya que se registró como texto.

+2

+1 para hacer clic con el botón derecho en el formulario, seleccione Texto DFM. –

Cuestiones relacionadas