Jelikož je XE2 multiplatformní je vhodné mít nástroj na kontrolu platforem, potažmo verze.
Jednotka System.SysUtils byla rozšířena o záznam TOSVersion.
type
TOSVersion = record
public type
TArchitecture = (arIntelX86, arIntelX64);
TPlatform = (pfWindows, pfMacOS);
private
class var FArchitecture: TArchitecture;
class var FBuild: Integer;
class var FMajor: Integer;
class var FMinor: Integer;
class var FName: string;
class var FPlatform: TPlatform;
class var FServicePackMajor: Integer;
class var FServicePackMinor: Integer;
class constructor Create;
public
class function Check(AMajor: Integer): Boolean; overload; static; inline;
class function Check(AMajor, AMinor: Integer): Boolean; overload; static; inline;
class function Check(AMajor, AMinor, AServicePackMajor: Integer): Boolean; overload; static; inline;
class function ToString: string; static;
class property Architecture: TArchitecture read FArchitecture;
class property Build: Integer read FBuild;
class property Major: Integer read FMajor;
class property Minor: Integer read FMinor;
class property Name: string read FName;
class property Platform: TPlatform read FPlatform;
class property ServicePackMajor: Integer read FServicePackMajor;
class property ServicePackMinor: Integer read FServicePackMinor;
end;
Použití je jednoduché:
program Project4;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
begin
writeln(TOSVersion.ToString);
case TOSVersion.Architecture of
arIntelX64:
writeln('X64');
arIntelX86:
writeln('X86');
else
writeln('???');
end;
if TOSVersion.Check(6,1) then
writeln('Windows 7');
end.
výsledek je pak
Windows 7 Service Pack 1 (Version 6.1, Build 7601, 64-bit Edition)
X64
Windows 7
Mnohem zajímavější je začlenění podpory pro Zip přímo do RTL. Jedná se o čistou Object Pascal implementaci, ale bez
podpory hesla. I tak je to velmi šikovné.
Komprese:
uses
System.Zip;
var
z: TZipFile;
begin
z := TZipFile.Create;
z.Open('test.zip', zmWrite);
z.Add('prvnisoubor.txt');
z.Add('druhy.dat');
z.Add('čeština.txt');
z.Close;
end.
Rozbalení:
program Project4;
uses
System.Zip;
var
z: TZipFile;
begin
z := TZipFile.Create;
z.Open('test.zip', zmRead);
z.ExtractAll;
//nebo
z.Extract('druhy.dat');
//nebo
z.Extract(1); // druhý soubor v archívu
z.Close;
end.
Je implementována podpora pro "Store" a "Deflate", ale rozhraní je připraveno pro další metody komprese (via RegisterCompressionHandler).
Nezapomeňte, že příští týden je v Praze a Bratislavě představení Rad Studio XE2. Pawel Glowacki půjde určitě do větší hloubky než já (aspoň v některých tématech).
Mimochodem: s velkou pravděpodobností účastníci mohou získat slevu na zakoupení Delphi XE2 (resp. pravděpodobně i na další produkty) a v tombole bude možnost vyhrát Delphi XE2 (a nebude to Starter).