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.