Für das Lesen, Bearbeiten und Speichern von
.plist Dateien gibt es jetzt auch etwas für Delphi.
github - PropertyList
Das hier
Delphi-Quellcode:
var
LPList: IPList;
LDict : IPListDict;
LData : TArray<Byte>;
LIdx : Integer;
begin
LDict := TPList.CreateDict;
LDict.AddOrSet( 'Array', TArray<TPlistValue>.Create( True, False, CFDate( Now( ) ), Random( 42 ), Random * 42 ) );
LDict.AddOrSet( 'Bool_True', True );
LDict.AddOrSet( 'Bool_False', False );
LDict.AddOrSet( 'Date', CFDate( Now( ) ) );
SetLength( LData, Random( 5 ) + 5 );
for LIdx := low( LData ) to high( LData ) do
begin
LData[ LIdx ] := Random( 256 );
end;
LDict.AddOrSet( 'Data', LData );
LDict.AddOrSet( 'Integer', Random( 42 ) );
LDict.AddOrSet( 'Real', Random * 42 );
LDict.AddOrSet( 'String', 'foo' );
LPList := TPList.CreatePList;
LPList.Root := LDict;
LPList.SaveToFile( '.\foo.plist' );
end;
erzeugt dann so etwas
XML-Code:
<?
xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
<plist version="1.0">
<dict>
<key>Integer</key>
<integer>8</integer>
<key>Data</key>
<data>y2JTU/3t</data>
<key>Array</key>
<array>
<true/>
<false/>
<date>2015-09-24T17:12:06.671+02:00</date>
<integer>7</integer>
<real>12.8174069174565</real>
</array>
<key>Bool_False</key>
<false/>
<key>String</key>
<string>foo</string>
<key>Bool_True</key>
<true/>
<key>Date</key>
<date>2015-09-24T17:12:06.671+02:00</date>
<key>Real</key>
<real>1.60754230152816</real>
</dict>
</plist>
Getestet mit Delphi 10 Seattle unter
- Win32
- Win64
- OSX32
- iOSDevice32
- iOSSimulator
Bis dato wird nur die
XML-Variante unterstützt.
Ob die Binary-Variante noch kommt entscheide ich wenn ich die
Unit-Tests fertig habe und es noch ein wenig aufpoliert habe.
Das Beispiel
ModPList erstellt ein Kommandozeilen-Programm, womit man die von Delphi erzeugten .plist Dateien etwas homogener gestalten kann.
Aus
<string>YES</string>
wird dann ein
<true/>
und aus
<string>NO</string>
analog ein
<false/>
.
Folgende Bugs flogen mir bei der Entwicklung um die Ohren:
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)