Im Laufe der Zeit habe ich meine eigenen Formate zum Speichern und Laden von Objekteigenschaften gerollt, aber wenn ich das nochmal durchgehen muss, frage ich mich, ob ich Delphis eigenes Text-DFM-Format verwenden soll. Ich weiß, dass dies wirklich ein "internes" Format ist, aber der Leser dafür scheint jetzt ziemlich gut definiert und es wird mit allen Arten von Eigentum fertig. Hat jemand irgendwelche Kommentare über mögliche Fallstricke?
Ich würde nicht wirklich sagen, dass DFM ein "internes Format" ist. Sure Delphi verwendet es intern für Formulare und Datamodule, aber TReader- und TWriter-Klassen, die das Streaming durchführen, sind öffentlich zugänglich und sogar dokumentiert. Sie sind also eindeutig auch für Endanwender gedacht.
Das mögliche Problem ist jetzt, wenn Sie einen Stream speichern und sich später eine der Klassen im Stream ändert, sodass der Stream nicht mehr kompatibel ist. Möglicherweise haben Sie dies in Delphi gesehen, wenn Sie versuchen, ein in D2007 + in D7 gespeichertes Formular zu öffnen (fehlende Eigenschaft). Aber selbst wenn es passiert, ist es nicht schwer zu lösen. Sie erhalten eine Ausnahme, die die genaue Eigenschaft meldet, die das Problem verursacht. Sie müssen auch alle Klassen registrieren, die Sie mit RegisterClass
streamen möchten.
DFM kann im Binär- oder Textformat gespeichert werden. Selbst wenn Sie es Binary speichern, können Sie es in Text konvertieren (mit ObjectBinaryToText
), einmal im Textformat, es ist einfach zu beheben.
Die Probleme, die Sie möglicherweise aufgrund inkompatibler Änderungen in der Struktur bekommen, haben aber nichts mit dem DFM-Mechanismus selbst zu tun und würden auch mit anderen Streaming-Mechanismen geschehen.
Was die Langlebigkeit betrifft, können Sie DFMs, die mit D1 gespeichert wurden, immer noch im neuesten Delphi öffnen. Solange Sie die Rückwärtskompatibilität beachten, haben Sie nichts zu befürchten.
Zusammenfassend kann gesagt werden, dass die Wahl eines bestimmten Formats, DFM, XML, JSON, Ihres eigenen ... die Langlebigkeit nicht wirklich beeinflusst. Sie alle erfordern das gleiche Maß an Kompatibilität.
Die Gründe für die Wahl des Formats haben mehr mit Entscheidungen zu folgenden Themen zu tun:
Aber Sie haben nichts von denen in der Frage erwähnt.
Ich schlage daher vor, DFM zu verwenden, um eigene Rollen zu erstellen, da dies weniger Code zum Verwalten erfordert.
Tags und Links save delphi properties load dfm