Unser Delphi 7-Entwicklungsteam speichert Formulardateien (dfm) im Textmodus und verwendet ein Quellcodeverwaltungssystem (Subversion), um Änderungen zu verfolgen.
Manchmal haben wir festgestellt, dass eine Formulardatei zwischen Revisionen in das Binärformat zurückkehrt, was dazu führt, dass Diff-Tools wie TortoiseMerge sich beschweren.
Unter Verwendung des Subversion-Änderungsprotokolls kann ich sehen, dass die DFM-Datei zuvor in Textform gespeichert wurde. Die Softwareentwickler ändern das Speicherdateiformat nie manuell in binär.
Sind Sie auf dasselbe gestoßen? Ist es ein bekanntes Problem?
Ich habe es in Delphi 7 gesehen, als ein Formular, das von einem anderen Formular aus einem anderen Projekt erbt, in Delphi eigenständig geöffnet wurde, ohne dass das Projekt geöffnet war.
Dies geschieht in Delphi 7, ist aber in späteren Versionen behoben. Normalerweise greifen Sie auf Formulare in der IDE zu, indem Sie die .pas-Datei öffnen und dann zur Formularansicht wechseln. Klicken Sie mit der rechten Maustaste auf Ihr Formular und es wird angezeigt, dass "Text DFM" markiert ist, wenn Sie dies zuvor getan haben.
Sie werden das beschriebene Problem eines DFM-Textaustauschs zu einem binären DFM feststellen, wenn Sie in der Delphi 7-IDE die .dfm-Datei direkt öffnen. z.B. Datei- & gt; Öffnen- & gt; Somefile.dfm .. Rechtsklick auf die dfm und wählen Sie "Als Formular anzeigen". Klicken Sie nun mit der rechten Maustaste auf das Formular. Sie werden sehen, dass der "Text DFM" nicht markiert ist.
Wir hatten das Problem, als wir einen DFM öffneten, der ein Grep-Suchergebnis war. Es hat uns auch verblüfft, und würde Korruption in der DFM in CVS verursachen, wie es als Text eingecheckt wurde.
Das passiert manchmal, wenn die IDE verwirrt wird.
Es beginnt normalerweise, nachdem Sie eine Zugriffsverletzung in der Delphi 7 IDE bekommen haben.
Manchmal wird auch einer oder mehrere Ihrer Delphi-Editor-Puffer in der IDE schreibgeschützt (während die Dateien auf der Festplatte noch gelesen / geschrieben werden).
Das Verhalten tritt viel weniger auf als in Delphi 5 oder 6, aber manchmal tritt es in Delphi 7 auf.
Das Beste, was Sie tun können, ist, die Delphi 7 IDE neu zu starten, sobald Sie eine Zugriffsverletzung erhalten.
Wir haben das sicherlich schon erlebt. Wir verwenden ausschließlich D7.
Ich bin nie auf den Grund gegangen, weil es nur ein halbes Dutzend Mal pro Jahr oder so passiert, und obwohl es ein Ärgernis ist, ist es ziemlich leicht zu beheben.
Ich war daran interessiert, Lars 'Antwort zu sehen, und werde sicherlich schauen, ob das beim nächsten Mal eine mögliche Ursache ist.
Sie könnten daran interessiert sein, die Verwendung von Beyond Compare anstelle des integrierten Merge-Tools von TortoiseSVN zu untersuchen. Beyond Compare ist in Delphi geschrieben und kann nativ die binären DFMs lesen. Das bedeutet, dass es weniger problematisch (oder gar kein Problem) wird, ob Ihre DFMs in Subversion in Binär- oder Textform gespeichert sind. Beyond Compare V3 führt auch 3-Wege-Merging durch, was es sehr einfach macht, mehrere Commits zu verschmelzen. Auch wenn es die Fähigkeit, binäre DFMs zu differieren, ignoriert, ist es immer noch ein viel besserer Diff-Viewer als TortoiseSVNs eingebaute Tools. Ich kann es sehr empfehlen, und es ist sehr günstig (ich habe keine Verbindung mit Scooter Software, abgesehen davon, dass ich ein sehr zufriedener Kunde bin).