📄 utils.pas
字号:
unit Utils;
interface
uses Windows,winsock, wininet ,TlHelp32, MMSystem,ShellApi,WinSvc;
function BorrarArchivo( s : String ): integer;
function FindChar(Word: string;char : string):integer ;
function FindNChars(Word: string;char : string):integer ;
function GetCPUSpeed: Double;
function LocalIP: string;
function FileExists( s : String ): Boolean;
function StrToInt64(const S: string): Int64;
function BuffToStr( const b : Array of Char ) : string;
function StrToInt(const S: string ): Integer;
function StrPas(const Str: PChar): string;
function IntToStr(Value: Integer): string;
function StrPCopy(Dest: PChar; const Source: string): PChar;
function SigFrmToStr(Value: Integer; FormatStr : PChar): string;
function UnSigFrmToStr(Value: Cardinal; FormatStr : PChar): string;
function StrToIntDef(const S: string; Default: Integer): Integer;
function UpperCase( S :String ): String ;
function LowerCase(const S: string): string;
function Time : string;
function ddate : string;
function GetFileName (text : string):string;
function Usuario: String;
function Trim(const S: string): string;
function stringtochar(st : string) : char;
function StrPos(const Str1, Str2: PChar): PChar; assembler;
function split (text : string;char : string; num : integer):string;
function Replace(strSource:string; strToFind:string; strReplace:string): string;
function HexToInt(s: string): Longword;
function GenerarRandomString: String;
function Ocurrencias( const ss, s: String ): Integer;
implementation
function FindChar(Word: string;char : string):integer ;
var
i : integer ;
begin
for i:= 1 to Length(Word) do begin
if (copy(Word,i,1)=char ) then begin
result:=i;
exit;
end;
end;
end;
///////////////////////////////////////////////////////////////////////////////
function FindNChars(Word: string;char : string):integer ;
var i, r : integer ;
begin
r:=0;
for i:=1 to Length(Word) do begin
if (copy(Word,i,1)=char ) then begin
inc(r);
end;
end;
result:=r;
end;
///////////////////////////////////////////////////////////////////////////////
function StrLCopy(Dest, Source: PChar; MaxLen: Cardinal): PChar; assembler;
asm
PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,EAX
MOV EDI,EDX
MOV EBX,ECX
XOR AL,AL
TEST ECX,ECX
JZ @@1
REPNE SCASB
JNE @@1
INC ECX
@@1: SUB EBX,ECX
MOV EDI,ESI
MOV ESI,EDX
MOV EDX,EDI
MOV ECX,EBX
SHR ECX,2
REP MOVSD
MOV ECX,EBX
AND ECX,3
REP MOVSB
STOSB
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
end;
///////////////////////////////////////////////////////////////////////////////
function StrPCopy(Dest: PChar; const Source: string): PChar;
begin
Result := StrLCopy(Dest, PChar(Source), Length(Source));
end;
///////////////////////////////////////////////////////////////////////////////
//Devuelve una cadena en formato numerico de un valor para Signed 32 bits
function SigFrmToStr(Value: Integer; FormatStr : PChar): string;
var
Poinx : Pointer;
wsprintfX : function (Output: PChar; Format: PChar; Value : Integer): Integer; cdecl;
hdllib : HINST;
retmp : Integer;
begin
hdllib := LoadLibrary('User32.dll'); {Carga la libreria}
if hdllib <> 0 then begin
Poinx := GetProcAddress(hdllib, 'wsprintfA');
if Poinx <> nil then begin
@wsprintfX := Poinx;
SetLength(Result, 15);
retmp := wsprintfX(PChar(Result), FormatStr, Value);
SetLength(Result, retmp);
end;
FreeLibrary(hdllib);
end;
end;
function StrPos(const Str1, Str2: PChar): PChar; assembler;
asm
PUSH EDI
PUSH ESI
PUSH EBX
OR EAX,EAX
JE @@2
OR EDX,EDX
JE @@2
MOV EBX,EAX
MOV EDI,EDX
XOR AL,AL
MOV ECX,0FFFFFFFFH
REPNE SCASB
NOT ECX
DEC ECX
JE @@2
MOV ESI,ECX
MOV EDI,EBX
MOV ECX,0FFFFFFFFH
REPNE SCASB
NOT ECX
SUB ECX,ESI
JBE @@2
MOV EDI,EBX
LEA EBX,[ESI-1]
@@1: MOV ESI,EDX
LODSB
REPNE SCASB
JNE @@2
MOV EAX,ECX
PUSH EDI
MOV ECX,EBX
REPE CMPSB
POP EDI
MOV ECX,EAX
JNE @@1
LEA EAX,[EDI-1]
JMP @@3
@@2: XOR EAX,EAX
@@3: POP EBX
POP ESI
POP EDI
end;
///////////////////////////////////////////////////////////////////////////////
function split (text : string;char : string; num : integer):string;
var
Data : string;
Temp: string;
TmpDada ,COMD, PARM1 ,PARM2 : string ;
i : integer;
begin
Data:=text;
TmpDada:= copy(Data,1,length(Data));
for i := 0 to findnchars(text,char) do begin
COMD:=copy(TmpDada,1,FindChar(TmpDada,char)-1);
TmpDada:= copy(TmpDada,length(COMD)+1+1,length(TmpDada) );
if i = num then begin
Result:=COMD;
exit;
end;
end;
end;
function Replace(strSource:string; strToFind:string; strReplace:string): string;
var sresult:string; i:integer;
begin
i:=1;
while i<=length(strSource) do
begin
if copy(strSource,i,length(strToFind)) = strToFind then
begin
sresult := sresult + strReplace;
i:=i+length(strToFind);
end
else
begin
sresult := sresult + copy(strSource,i,1);
i:=i+1;
end;
end;
result := sresult
end;
///////////////////////////////////////////////////////////////////////////////
function GetLocalPath:string;
var
i,a : integer;
data : string;
begin
i:= findNchars(ParamStr( 0 ),'\');
for a:= 0 to i-1 do begin
data:=data + split( ParamStr( 0 ),'\',a) + '\';
end;
result:=data;
end;
function GetFileName (text : string):string;
var
a,i : integer;
begin
a:= FindNChars(text,'\');
for i := 1 to a do begin
text:=copy ( text, findchar(text,'\')+1,length(text));
end;
Result:=text;
end;
function BuffToStr(const b: Array of Char ) : string;
var i : Integer;
begin
for i := Low( b )to High( b ) do
Result := Result + b[ i ];
end;
///////////////////////////////////////////////////////////////////////////////
function IntToStr(Value: Integer): string;
begin
Result := SigFrmToStr(Value, PChar('%d'));
end;
///////////////////////////////////////////////////////////////////////////////
function StrToInt(const S: string ): Integer;
var E: Integer;
begin
Val(S, Result, E);
end;
///////////////////////////////////////////////////////////////////////////////
function StrPas(const Str: PChar): string;
begin
Result := Str;
end;
///////////////////////////////////////////////////////////////////////////////
function StrToIntDef(const S: string; Default: Integer): Integer;
var
E: Integer;
begin
Val(S, Result, E);
if E <> 0 then Result := Default;
end;
//System's date & time.
function ddate : string;
var datestr : string;
retsize : integer;
begin
setlength(datestr,128);
retsize := GetDateFormat( LOCALE_SYSTEM_DEFAULT,
LOCALE_NOUSEROVERRIDE and DATE_LONGDATE,
nil,
'ddd_MMM_dd_yyyy',
PChar(datestr),
128);
setlength(datestr, retsize - 1);
Result := datestr ;
end;
///////////////////////////////////////////////////////////////////////////////
function Time : string;
var timestr : string;
retsize : integer;
begin
setlength(timestr, 128);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -