Moin Daniel,
Was du da nimmst sind typisierte Dateien. Sowas war wohl zu
TP-Zeiten "in" aber vergiss nicht, dass du hier darauf vertraus, dass dein record immer gleich groß ist. Eine Änderung im Compiler macht dich auf jeden Fall inkompatibel zu alten Dateien. Zum Beispiel ein D64-Compiler.
Außerdem musst du dich nun zu Fuss mit diesem, seit Delphi1 veralteten, IO Kram rumärgern.
Die dpCollection wäre das was du da machst in "netter".
Zitat:
if not bWasReaded then
Und das von unserem stolzen English-LK'ler
@Topic
Solche Diskussionen machen wohl nicht viel Sinn für bestehende Anwendungen. Und ehrlich gesagt kapiere ich nicht ganz, warum man sich soviel mit native W32 rumärgert, wo doch solche Dinge für neue Apps durch .Net kinderleicht geworden sind.
Delphi-Quellcode:
uses
System.Xml.Serialization,
System.Drawing;
type
Setting = public class
public
property DefaultFile: String;
property UseDefaultPath: Boolean;
[XmlAttributeAttribute]
property FirstStart: Boolean;
property Location : Point;
property Size : Size;
property Width : Integer read Size.Width;
property Height : Integer read Size.Height;
property Top : Integer read Location.Y;
property Left : Integer read Location.X;
end;
Während du oben 5 Zeilen brauchtest um es in ein auf-/abwärts inkompatibles, proprietäres Format zu schreiben, brauche ich 3 um es in ein
XML zu schreiben:
Delphi-Quellcode:
begin
var setting := new Setting();
setting.DefaultFile := 'x:\y.z';
setting.Location := new Point(10, 20);
setting.Size := new Size(100, 200);
setting.FirstStart := false;
using writer := new XmlTextWriter('Setting.xml', Encoding.Unicode) do
begin
with serializer := new XmlSerializer(typeof(Setting)) do
serializer.Serialize(writer, setting);
end;
end;
Oder 3 um es aus einem solchen zu laden:
Delphi-Quellcode:
using reader := new XmlTextReader('Setting.xml') do
with serializer := new XmlSerializer(typeof(Setting)) do
var setting := serializer.Deserialize(reader) as Setting;
Oder binär?
Delphi-Quellcode:
using stream := new FileStream('Setting.bin', FileMode.Create) do
with formatter := new BinaryFormatter() do
formatter.Serialize(stream, setting);
btw: Wo bringt TIniFile nützliche Funktionen mit? Muss man ja alles ständig selbst tippen...