Skip to content

Instantly share code, notes, and snippets.

View jimmckeeth's full-sized avatar

Jim McKeeth jimmckeeth

View GitHub Profile
@jimmckeeth
jimmckeeth / Weird.Boolean.ToString.pas
Created June 5, 2024 22:57
Using the ToString on a Boolean is weird
// function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;
Writeln('BoolToStr(??, True)'); // BoolToStr(??, True)
WriteLn('True = ' + BoolToStr(True, True)); // True = True
WriteLn('False = ' + BoolToStr(False, True)); // False = False
Writeln('BoolToStr(??, False)'); // BoolToStr(??, False)
WriteLn('True = ' + BoolToStr(True, False)); // True = -1
WriteLn('False = ' + BoolToStr(False, False)); // False = 0
// class function ToString(const Value: Boolean; UseBoolStrs:
// TUseBoolStrs = TUseBoolStrs.False): string;
@jimmckeeth
jimmckeeth / FizzBuzzEnterpriseEdition.dpr
Last active June 5, 2024 17:05
FizzBuzzEnterpriseEdition in Delphi
// This is a very simple "overengineered" version of FizzBuzz written in Delphi
// See also
// https://github.com/jongeorge1/FizzBuzzEnterpriseEdition-CSharp
// https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
program FizzBuzzEnterpriseEdition;
{$APPTYPE CONSOLE}
uses
@jimmckeeth
jimmckeeth / MultiPlatformCryptoRando.pas
Last active June 5, 2024 17:08
Delphi Cryptographically Secure Random Number Generator that works on all paltforms
// Tested on Windows, MacOS, Linux, and Android. From what I've read /dev/urandom works on iOS too.
unit MultiPlatformCryptoRando;
interface
uses System.Classes, System.SysUtils;
function CryptoRandoCardinal: Cardinal;
function CryptoRandoFloat: Single;
@jimmckeeth
jimmckeeth / PiDay2023.pas
Last active April 13, 2023 18:50
Pi Day 2023 with Delphi
// I created an updated blog post with new code, more accuracy, and digits:
// https://blogs.embarcadero.com/getting-big-with-pi-in-delphi/
unit PiDay2023;
interface
uses
Velthuis.BigIntegers,
Velthuis.BigDecimals;
// Use your favorite fork of https://github.com/TurboPack/RudysBigNumbers
@jimmckeeth
jimmckeeth / manualadb.bat
Last active May 3, 2024 23:58
Manual ADB Deployment from RAD Studio Tools Menu
@echo off
REM Call from Delphi/RAD Studio IDE with the following parameters
REM $PATH($EXENAME) $NAMEONLY($PROJECT)
echo =============================================================
echo Be sure you Compile Android 64 and Deploy [Shift-Ctrl-Alt-F9]
echo.
echo Also set <application android:resizeableActivity="true"> in AndroidManifest.template.xml
echo =============================================================
echo Path: %1
set apk=%2\bin\%2.apk
@jimmckeeth
jimmckeeth / SetupRedHat4Delphi23.sh
Last active June 16, 2024 09:33
Installs required packages and sets up Red Hat Linux for Delphi 12.1 Athens development
#!/bin/bash
#
# Download and execute with the following:
# curl -L https://embt.co/SetupRedHat4Delphi22sh | bash
#
echo "updating installed package"
sudo yum upgrade -y
echo "installing development tools"
sudo yum groupinstall 'Development Tools' -y
sudo yum install wget gtk3 mesa-libGL gtk3-devel -y
@jimmckeeth
jimmckeeth / SetupUbuntu4Delphi22.sh
Last active June 16, 2024 09:33
This script automates the setup of Ubuntu 22.04 LTS for Delphi 11.3 Alexandria
#!/bin/bash
#
# Download and execute with the following:
# curl -L https://embt.co/SetupUbuntu4Delphi22 | bash
#
echo "Updating the local package directory"
sudo apt update
echo "Upgrading any outdated pacakges"
sudo apt full-upgrade -y
echo "Install new packages necessary for Delphi & FMXLinux"
@jimmckeeth
jimmckeeth / SetupUbuntu4Delphi21.sh
Last active February 26, 2024 00:26
This script automates the setup of Ubuntu for Delphi 10.4.2 Sydney development. Read more: https://embt.co/3oFnZVW
#!/bin/bash
echo "Updating the local package directory"
sudo apt update
echo "Upgrade any outdated pacakges"
sudo apt full-upgrade -y
echo "Install new packages necessary for Delphi"
sudo apt install joe wget p7zip-full curl openssh-server build-essential zlib1g-dev libcurl4-gnutls-dev libncurses5 xorg libgl1-mesa-dev libosmesa-dev libgtk-3-bin -y
echo "Clean-up unused packages"
sudo apt autoremove -y
cd ~
@jimmckeeth
jimmckeeth / IgnoreEditChanges.pas
Last active August 5, 2020 20:31
Simple CustomManagedRecords routine to automatically re-enable the OnChange event handler for FireMonkey edits (see blog post)
unit IgnoreEditChanges;
// https://blogs.embarcadero.com/ignore-changes-with-custom-managed-records/
// Custom Managed Records are a new feature introduced in 10.4 Sydney
interface
uses
System.Classes;
type
@jimmckeeth
jimmckeeth / SimpleRot47.pas
Last active August 15, 2023 04:14
Implements the Rot47 text obfuscation and de-obfuscation routine for Delphi 10.4 Sydney (Similar to Rot13)
uses Math;
function ROT47(UnRot: string): string;
// More information https://en.wikipedia.org/wiki/ROT13#Variants
begin
Result := UnRot;
for var I := 1 to Length(Result) do
begin
var o := ord(Result[i]);
case o of