mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 15:55:54 +01:00
75 lines
1.5 KiB
ObjectPascal
75 lines
1.5 KiB
ObjectPascal
unit LoggerPro.Utils;
|
|
|
|
interface
|
|
|
|
uses
|
|
System.SysUtils;
|
|
|
|
function AppPath: string;
|
|
{$IFDEF MSWINDOWS}
|
|
function WUserName: string;
|
|
function FileVersion(const FileName: TFileName): string;
|
|
{$ENDIF}
|
|
|
|
implementation
|
|
|
|
uses
|
|
{$IFDEF MSWINDOWS} Winapi.Windows, {$ENDIF}
|
|
System.IOUtils;
|
|
|
|
var
|
|
GAppPath: string = '';
|
|
|
|
{$IFDEF MSWINDOWS}
|
|
function WUserName: string;
|
|
var
|
|
nSize: DWord;
|
|
begin
|
|
nSize := 1024;
|
|
SetLength(Result, nSize);
|
|
if GetUserName(PChar(Result), nSize) then
|
|
SetLength(Result, nSize - 1)
|
|
else
|
|
RaiseLastOSError;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
{$IFDEF MSWINDOWS}
|
|
function FileVersion(const FileName: TFileName): string;
|
|
var
|
|
VerInfoSize: Cardinal;
|
|
VerValueSize: Cardinal;
|
|
Dummy: Cardinal;
|
|
PVerInfo: Pointer;
|
|
PVerValue: PVSFixedFileInfo;
|
|
begin
|
|
Result := '';
|
|
VerInfoSize := GetFileVersionInfoSize(PChar(FileName), Dummy);
|
|
GetMem(PVerInfo, VerInfoSize);
|
|
try
|
|
if GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, PVerInfo) then
|
|
if VerQueryValue(PVerInfo, '\', Pointer(PVerValue), VerValueSize) then
|
|
with PVerValue^ do
|
|
Result := Format('v%d.%d.%d build %d', [
|
|
HiWord(dwFileVersionMS), // Major
|
|
LoWord(dwFileVersionMS), // Minor
|
|
HiWord(dwFileVersionLS), // Release
|
|
LoWord(dwFileVersionLS)]); // Build
|
|
finally
|
|
FreeMem(PVerInfo, VerInfoSize);
|
|
end;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
function AppPath: string;
|
|
begin
|
|
Result := GAppPath;
|
|
end;
|
|
|
|
initialization
|
|
|
|
GAppPath := IncludeTrailingPathDelimiter(TPath.GetDirectoryName(GetModuleName(HInstance)));
|
|
|
|
|
|
end.
|