2009-01-29 6 views
6

Ich verwende Delphi 2007. Manchmal gehen Eigenschaften verloren, die mit Komponenten verbunden sind. Dies sind normalerweise Aktionseigenschaften und Lookupdatasets. Ich hatte ein paar Mal einige Bugfixes und schickte eine Version an Kunden mit einem etwas katastrophalen Ergebnis :-) Wer weiß, wie man verifiziert, dass Eigenschaften, die wirklich gesetzt werden sollen, wirklich gesetzt sind, oder so um dies zu verhindern?Wie kann ich überprüfen, dass Eigenschaften, die mit Komponenten verknüpft sind, nicht "verloren" sind?

Antwort

5

Sie haben mehrere gute Antworten darüber erhalten, wie Sie feststellen können, wenn dies geschieht (nach Abstimmung). Aber eine Möglichkeit, dies zu verhindern (manchmal), ist sicherzustellen, dass Sie alle referenzierten Einheiten zu Ihrer DPR hinzugefügt haben. Wenn Sie z. B. ein Formular öffnen, das Komponenten enthält, die auf andere Komponenten eines Datenmoduls verweisen, und das Datenmodul dem DPR/Projekt nicht hinzugefügt wurde, ist es fast garantiert, dass die IDE diese Referenzen entfernt, weil sie es sind entfernt Referenzen, die nicht gültig sind. Wenn andererseits das Datenmodul in der DPR ist, dann wird die IDE es finden können, und es ist weniger wahrscheinlich, dass die Referenzen überhaupt entfernt werden.

Leider passiert es immer noch von Zeit zu Zeit Zeit, also müssen Sie noch die in den anderen Antworten aufgeführten Vorsichtsmaßnahmen ergreifen. Aber das wird die Dinge verbessern, wenn du das nicht schon machst.

10

Sie können solche Werte natürlich im Code zuweisen.

Noch wichtiger ist, müssen Sie jede Datei vor der commit zu Sourcecontrol diff. Immer.

Stellen Sie sicher, dass Ihre dfm-Dateien Text, nicht binär sind. Dann wird es einfach sein, unerwünschte Änderungen vor dem Einchecken/Festschreiben zu sehen.

Diffing alles hat eine Menge potentieller Fehler für mich gestoppt.

Ein automatisches Build- und Test-System gibt Ihnen auch ein gewisses Vertrauen in das, was Sie liefern.

+0

Die Probleme, die ich dabei hatte, waren normalerweise Links zu anderen Formularen, die nicht in der IDE geöffnet sind, wenn ein Formular gespeichert wird. Ich habe eine Kombination aus Code und Build-System-Tests verwendet, um sicherzustellen, dass es funktioniert, und behauptet, es mir zur Entwicklungszeit zu sagen. – mj2008

+0

Eine ähnliche Sache passiert mir, wenn ich Delphi-Projektgruppen verwende, um Projektdateien miteinander zu verknüpfen. Ich stelle fest, dass datenbankbewusste Komponenten ihre Verbindung zu dem DataModule verlieren, auf dem sich ihre Tabelle befindet, sobald ich dies verwende. Ich habe es aufgegeben, Projektgruppen zu verwenden. –

1

Sie möchten überprüfen, ob die Werte richtig eingestellt sind. Nun, Sie können Komponententests dafür verwenden. Einfach ein Formular initiieren, die Eigenschaften vergleichen und fertig.

Der Vergleich der dfm ist auch eine gute Möglichkeit, aber Änderungen aufgrund geänderter Standardeinstellungen oder Änderungen im Code werden nicht berücksichtigt.

2

Erstellen Sie ein Dunit-Testprojekt. Führen Sie den Test vor dem Release durch. Wenn der Test fehlschlägt, ertönen alle Klingelzeichen.

1

Wenn Sie einem Projekt ein Formular, ein Datenmodul oder einen Rahmen hinzufügen, fügt die IDE einen kleinen Kommentar "tag" hinter dem Namen der Einheit in der dpr-Datei ein. Ich habe die Erfahrung gemacht, dass die IDE anfälliger für den Verlust von modulübergreifenden Komponentenreferenzen ist, wenn dieses Tag aus irgendeinem Grund nicht vorhanden ist.

Ich unterstütze von ganzem Herzen die Idee, immer Unterschiede vor jedem Commit zu Versionskontrolle zu sehen, wenn Sie solche Dinge verwenden.

1

Ich hasse es zu sagen, aber Source Code Control kann in diesen Situationen helfen. Selbst mit einem Bug Fix sollten Sie alles in ein Quellcode-Repository einchecken (Perforce ist mein persönlicher Favorit). In einem kleinen Fix konnten Sie sehen, welche Dateien sich geändert haben, ob Sie Änderungen haben, die Sie nicht erwarten.

Verwandte Themen