|
- unit uutlPlatform;
-
- { Package: Utils
- Prefix: utl - UTiLs
- Beschreibung: diese Unit implementiert Methoden mit denen ein String generiert werden kann,
- welcher das System auf dem die Anwendung läuft identifiziert }
-
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils;
-
- function GetPlatformIdentitfier: string;
-
- implementation
-
- uses
- {$ifdef WINDOWS}
- Windows
- {$endif}
- ;
-
- {$ifdef WINDOWS}
- function GetWindowsVersionStr(const aDefault: String): string;
- var
- osv: TOSVERSIONINFO;
- ver: cardinal;
- begin
- Result:= aDefault;
- osv.dwOSVersionInfoSize:= SizeOf(osv);
- if GetVersionEx(osv) then begin
- ver:= MAKELONG(osv.dwMinorVersion, osv.dwMajorVersion);
- // positive overflow: if system is newer, always detect as newest we knew instead of failing
- if ver >= $00060003 then
- Result:= '8_1'
- else
- if ver >= $00060002 then
- Result:= '8'
- else
- if ver >= $00060001 then
- Result:= '7'
- else
- if ver >= $00060000 then
- Result:= 'Vista'
- else
- if ver >= $00050002 then
- Result:= '2003'
- else
- if ver >= $00050001 then
- Result:= 'XP'
- else
- if ver >= $00050000 then
- Result:= '2000'
- else
- if ver >= $00040000 then
- Result:= 'NT4';
- // ignore NT3, hmkay?;
- end;
- end;
- {$endif}
-
- function GetPlatformIdentitfier: string;
- var
- os,ver,arch: string;
- begin
- Result:= '';
- os:= '';
- ver:= 'generic';
- arch:= '';
- {$if defined(WINDOWS)}
- os:= 'mswin';
- ver:= GetWindowsVersionStr(ver);
- {$elseif defined(LINUX)}
- os:= 'linux';
- {$Warning System Version String missing!}
- {$endif}
-
- {$if defined(CPUX86)}
- arch:= 'x86';
- {$elseif defined(cpux86_64)}
- arch:= 'x64';
- {$else}
- {$Error Unknown Architecture!}
- {$endif}
- Result:= format('%s-%s-%s', [os, ver, arch]);
- end;
-
-
- end.
|