Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

PropertyList - Verwalten von .plist Dateien

  Alt 24. Sep 2015, 18:04
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)
  Mit Zitat antworten Zitat