7
7
Author : Kike Pérez
8
8
Version : 1.4
9
9
Created : 14/07/2017
10
- Modified : 29/03 /2018
10
+ Modified : 16/05 /2018
11
11
12
12
This file is part of QuickLib: https://github.com/exilon/QuickLib
13
13
@@ -44,6 +44,9 @@ interface
44
44
{ $ENDIF MSWINDOWS}
45
45
{ $IFDEF FPC}
46
46
Quick.Files,
47
+ { $IFDEF LINUX}
48
+ FileInfo,
49
+ { $ENDIF}
47
50
{ $ELSE}
48
51
IOUtils,
49
52
{ $ENDIF}
@@ -104,6 +107,9 @@ TDirectoryHelper = record helper for TDirectory
104
107
{ $ENDIF}
105
108
106
109
{ $IFDEF FPC}
110
+ { $IFDEF LINUX}
111
+ UINT = cardinal;
112
+ { $ENDIF}
107
113
PLASTINPUTINFO = ^LASTINPUTINFO;
108
114
tagLASTINPUTINFO = record
109
115
cbSize: UINT;
@@ -163,7 +169,9 @@ EShellError = class(Exception);
163
169
// checks if is a console app
164
170
function IsConsole : Boolean;
165
171
// checks if compiled in debug mode
172
+ { $ENDIF}
166
173
function IsDebug : Boolean;
174
+ { $IFDEF MSWINDOWS}
167
175
// checks if running as a service
168
176
function IsService : Boolean;
169
177
// gets number of seconds without user interaction (mouse, keyboard)
@@ -197,12 +205,10 @@ EShellError = class(Exception);
197
205
// Upper case for first letter
198
206
function Capitalize (s: string): string;
199
207
function CapitalizeWords (s: string): string;
200
- { $IFDEF MSWINDOWS}
201
208
// returns current logged user
202
209
function GetLoggedUserName : string;
203
210
// returns computer name
204
211
function GetComputerName : string;
205
- { $ENDIF}
206
212
// Changes incorrect delims in path
207
213
function NormalizePathDelim (const cPath : string; const Delim : Char) : string;
208
214
// Removes last segment of a path
@@ -211,16 +217,18 @@ EShellError = class(Exception);
211
217
function ParamFindSwitch (const Switch : string) : Boolean;
212
218
// gets value for a switch if exists
213
219
function ParamGetSwitch (const Switch : string; var cvalue : string) : Boolean;
214
- { $IFDEF MSWINDOWS}
220
+ // returns app name (filename based)
221
+ function GetAppName : string;
215
222
// returns app version (major & minor)
216
223
function GetAppVersionStr : string;
217
224
// returns app version full (major, minor, release & compiled)
218
225
function GetAppVersionFullStr : string;
219
- { $ENDIF}
220
226
// UTC DateTime to Local DateTime
221
227
function UTCToLocalTime (GMTTime: TDateTime): TDateTime;
222
228
// Local DateTime to UTC DateTime
223
229
function LocalTimeToUTC (LocalTime : TDateTime): TDateTime;
230
+ // return GTM time string
231
+ function DateTimeToGMT (aDate : TDateTime) : string;
224
232
// count number of digits of a Integer
225
233
function CountDigits (anInt: Cardinal): Cardinal; inline;
226
234
// save stream to file
@@ -231,7 +239,7 @@ EShellError = class(Exception);
231
239
// get last error message
232
240
function GetLastOSError : String;
233
241
{ $ENDIF}
234
- { $IFDEF FPC}
242
+ { $IF DEFINED( FPC) AND DEFINED(MSWINDOWS) }
235
243
function GetLastInputInfo (var plii: TLastInputInfo): BOOL;stdcall; external ' user32' name ' GetLastInputInfo' ;
236
244
{ $ENDIF}
237
245
@@ -432,6 +440,7 @@ function IsConsole: Boolean;
432
440
Result := False;
433
441
{ $ENDIF CONSOLE}
434
442
end ;
443
+ { $ENDIF}
435
444
436
445
function IsDebug : Boolean;
437
446
begin
@@ -442,6 +451,7 @@ function IsDebug: Boolean;
442
451
{ $ENDIF DEBUG}
443
452
end ;
444
453
454
+ { $IFDEF MSWINDOWS}
445
455
function IsService : Boolean;
446
456
begin
447
457
// only working with my Quick.AppService unit
@@ -550,7 +560,6 @@ function IsLike(cText, Pattern: string) : Boolean;
550
560
match : Boolean;
551
561
wildcard : Boolean;
552
562
CurrentPattern : Char;
553
- aux : string;
554
563
begin
555
564
Result := False;
556
565
wildcard := False;
@@ -572,7 +581,6 @@ function IsLike(cText, Pattern: string) : Boolean;
572
581
573
582
if wildcard then
574
583
begin
575
- aux := Copy(Pattern,i+1 ,Pattern.Length);
576
584
n := Pos(Copy(Pattern,i+1 ,Pattern.Length),cText);
577
585
if (n > i) or (Pattern.Length = i) then
578
586
begin
@@ -611,8 +619,8 @@ function CapitalizeWords(s: string): string;
611
619
end ;
612
620
end ;
613
621
614
- { $IFDEF MSWINDOWS}
615
622
function GetLoggedUserName : string;
623
+ { $IFDEF MSWINDOWS}
616
624
const
617
625
cnMaxUserNameLen = 254 ;
618
626
var
@@ -625,8 +633,16 @@ function GetLoggedUserName : string;
625
633
SetLength( sUserName, dwUserNameLen );
626
634
Result := sUserName;
627
635
end ;
636
+ { $ENDIF}
637
+ { $IF DEFINED(FPC) AND DEFINED(LINUX)}
638
+ begin
639
+ Result := GetEnvironmentVariable(' USERNAME' );
640
+ end ;
641
+
642
+ { $ENDIF}
628
643
629
644
function GetComputerName : string;
645
+ { $IFDEF MSWINDOWS}
630
646
var
631
647
dwLength: dword;
632
648
begin
@@ -635,6 +651,12 @@ function GetComputerName : string;
635
651
if not Windows.GetComputerName(pchar(result), dwLength) then Result := ' Not detected!' ;
636
652
Result := pchar(result);
637
653
end ;
654
+ { $ENDIF}
655
+ { $IF DEFINED(FPC) AND DEFINED(LINUX)}
656
+ begin
657
+ Result := GetEnvironmentVariable(' COMPUTERNAME' );
658
+ end ;
659
+
638
660
{ $ENDIF}
639
661
640
662
function NormalizePathDelim (const cPath : string; const Delim : Char) : string;
@@ -729,8 +751,13 @@ function ParamGetSwitch(const Switch : string; var cvalue : string) : Boolean;
729
751
end ;
730
752
731
753
732
- { $IFDEF MSWINDOWS}
754
+ function GetAppName : string;
755
+ begin
756
+ Result := ExtractFilenameWithoutExt(ParamStr(0 ));
757
+ end ;
758
+
733
759
function GetAppVersionStr : string;
760
+ { $IFDEF MSWINDOWS}
734
761
var
735
762
Rec: LongRec;
736
763
ver : Cardinal;
@@ -743,8 +770,18 @@ function GetAppVersionStr: string;
743
770
end
744
771
else Result := ' ' ;
745
772
end ;
773
+ { $ENDIF}
774
+ { $IF DEFINED(FPC) AND DEFINED(LINUX)}
775
+ var
776
+ version : TProgramVersion;
777
+ begin
778
+ if GetProgramVersion(version) then Result := Format(' %d.%d' , [version.Major, version.Minor])
779
+ else Result := ' ' ;
780
+ end ;
781
+ { $ENDIF}
746
782
747
783
function GetAppVersionFullStr : string;
784
+ { $IFDEF MSWINDOWS}
748
785
var
749
786
Exe: string;
750
787
Size, Handle: DWORD;
@@ -788,6 +825,14 @@ function GetAppVersionFullStr: string;
788
825
end ;
789
826
end ;
790
827
{ $ENDIF}
828
+ { $IF DEFINED(FPC) AND DEFINED(LINUX)}
829
+ var
830
+ version : TProgramVersion;
831
+ begin
832
+ if GetProgramVersion(version) then Result := Format(' %d.%d.%d.%d' , [version.Major, version.Minor, version.Revision, version.Build])
833
+ else Result := ' ' ;
834
+ end ;
835
+ { $ENDIF}
791
836
792
837
function UTCToLocalTime (GMTTime: TDateTime): TDateTime;
793
838
begin
@@ -807,6 +852,16 @@ function LocalTimeToUTC(LocalTime : TDateTime): TDateTime;
807
852
{ $ENDIF}
808
853
end ;
809
854
855
+ function DateTimeToGMT (aDate : TDateTime) : string;
856
+ var
857
+ FmtSettings : TFormatSettings;
858
+ begin
859
+ FmtSettings.DateSeparator := ' -' ;
860
+ FmtSettings.TimeSeparator := ' :' ;
861
+ FmtSettings.ShortDateFormat := ' YYYY-MM-DD"T"HH:NN:SS.ZZZ" GMT"' ;
862
+ Result := DateTimeToStr(aDate,FmtSettings);
863
+ end ;
864
+
810
865
function CountDigits (anInt: Cardinal): Cardinal; inline;
811
866
var
812
867
cmp: Cardinal;
0 commit comments