Skip to content

Pro100Delphi/Utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 

Repository files navigation

Utils

Bits
procedure PrintBits(AVal: Cardinal);
var i: Integer;
begin
  for i := 31 downto 0 do
    begin
      Write((AVal shr i) and $01);

      if i mod 4 = 0 then
        Write(' ');
    end;

  Writeln('');
end;
Little Endian - Big Endian
// byte swaps 16 bit values
function Swap16(V: WORD): WORD; { inline; }
asm
  XCHG    AL,AH
end;

// byte swaps 32 bit values
function Swap32(V: DWORD): DWORD; { inline; }
asm
  BSWAP   EAX
end;

// byte swaps 64 bit values
function Swap64(V: Int64): Int64; { inline; }
asm
  MOV     EDX,[EAX]
  MOV     EAX,[EAX+4]
  BSWAP   EAX
  BSWAP   EDX
end;
var DVal: Double;
    IVal: ^Int64;
    SVal: Int64;
begin

  DVal := 3.14159265;
  IVal := @DVal;

  SVal := Swap64(IVal^);
File operation - ShellAPI
function DeleteFile(AFileName: String): Boolean;
var FOS : TSHFileOpStruct;
begin
  FillChar(FOS, SizeOf(FOS), 0);

  FOS.wFunc   := FO_DELETE;
  FOS.pFrom   := PChar(AFileName + #0);
  FOS.fFlags  := FOF_NOCONFIRMATION or FOF_SILENT;

  Result := ShFileOperation(FOS) = 0;
end;

function RenameFile(AOldFileName, ANewFileName: String): Boolean;
var FOS : TSHFileOpStruct;
begin

  FillChar(FOS, SizeOf(FOS), 0);

  FOS.wFunc   := FO_RENAME;
  FOS.pFrom   := PChar(AOldFileName + #0);
  FOS.pTo     := PChar(ANewFileName + #0);
  FOS.fFlags  := FOF_SILENT or FOF_SIMPLEPROGRESS or FOF_NOCONFIRMATION;

  Result := ShFileOperation(FOS) = 0;
end;
String to char array buffer
procedure StrToCharBuffer(AStr: String; var ABuffer: Array of Char);
var BLen: Integer;
    SLen: Integer;
begin

  BLen := Length(ABuffer);
  SLen := Length(AStr);

  AStr := AStr + #0;

  if SLen >= BLen then
    begin
      SLen := BLen;
      AStr[SLen] := #0;
    end;

  ZeroMemory(@ABuffer[0], BLen * SizeOf(Char));
  CopyMemory(@ABuffer[0], @AStr[1], SLen * SizeOf(Char));
end;
Random String - First Idea
function RandomStr(ALow, AHigh, ADigs: Integer; AOther: String = ''): String;
const
  L = 'abcdefghijklmnopqrstuvwxyz';
  H = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  D = '0123456789';
var
  i: Integer;
  R: Integer;

  C: Char;
  a, b: Integer;
begin
  Result := '';

  for i := 1 to ALow do
    begin
      R := Random(Length(L)) + 1;
      Result := Result + L[R]
    end;

  for i := 1 to AHigh do
    begin
      R := Random(Length(H)) + 1;
      Result := Result + H[R]
    end;

  for i := 1 to ADigs do
    begin
      R := Random(Length(D)) + 1;
      Result := Result + D[R]
    end;

  for i := 1 to Length(Result) do
    begin
      a := Random(Length(Result)) + 1;
      b := Random(Length(Result)) + 1;

      C := Result[a];
      Result[a] := Result[b];
      Result[b] := C;
    end;
end;
Colored Logger - bind in main program
uses
  ..., MyLogger, ...;
	
procedure TMainForm.FormCreate(Sender: TObject);
begin

  MyLogControl.Parent := Self;
  MyLogControl.Align := alRight;
  MyLogControl.Width := 250;
  
end;

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages