vložil Radek Červinka
7. září 2011 22:19
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é:
1program Project4;
2
3uses
4 System.SysUtils;
5begin
6 writeln(TOSVersion.ToString);
7 case TOSVersion.Architecture of
8 arIntelX64:
9 writeln('X64');
10 arIntelX86:
11 writeln('X86');
12 else
13 writeln('???');
14 end;
15 if TOSVersion.Check(6,1) then
16 writeln('Windows 7');
17end.
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:
1uses
2 System.Zip;
3
4var
5 z: TZipFile;
6begin
7 z := TZipFile.Create;
8 z.Open('test.zip', zmWrite);
9 z.Add('prvnisoubor.txt');
10 z.Add('druhy.dat');
11 z.Add('čeština.txt');
12 z.Close;
13end.
Rozbalení:
1program Project4;
2uses
3 System.Zip;
4var
5 z: TZipFile;
6begin
7 z := TZipFile.Create;
8 z.Open('test.zip', zmRead);
9 z.ExtractAll;
10
11 z.Extract('druhy.dat');
12
13 z.Extract(1);
14 z.Close;
15end.
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).