);
class procedure SaveProperty(const Key: string; const Value: Boolean);
From 6fa0d4c0961b54c12ead4a1dce5ca56b08d52f0a Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Tue, 7 Nov 2023 11:21:43 +0000
Subject: [PATCH 025/144] Add support for test compiling with Delphi 12
Added compiler to relevant Src/Compilers/* files.
Updated .ini and .xml file support code to persist compiler results.
Added Delphi 12 CompilerVersion const to codegen preferences page.
Fixes #121
---
Src/Compilers.UBDS.pas | 8 +++++++-
Src/Compilers.UGlobals.pas | 3 ++-
Src/DBIO.UIniDataReader.pas | 1 +
Src/FrCodeGenPrefs.pas | 1 +
Src/UXMLDocConsts.pas | 2 +-
5 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/Src/Compilers.UBDS.pas b/Src/Compilers.UBDS.pas
index 668916c19..a7c871984 100644
--- a/Src/Compilers.UBDS.pas
+++ b/Src/Compilers.UBDS.pas
@@ -152,6 +152,8 @@ function TBDSCompiler.GetIDString: string;
Result := 'D104S';
ciD11A:
Result := 'D11A';
+ ciD12A:
+ Result := 'D12Y';
else
raise EBug.Create(ClassName + '.GetIDString: Invalid ID');
end;
@@ -175,7 +177,8 @@ function TBDSCompiler.GetName: string;
sDelphi102T = 'Delphi 10.2 Tokyo';
sDelphi103R = 'Delphi 10.3 Rio';
sDelphi104S = 'Delphi 10.4 Sydney';
- sDelphi11A = 'Delphi 11.x Alexandria';
+ sDelphi11A = 'Delphi 11.x Alexandria';
+ sDelphi12A = 'Delphi 12 Athens';
begin
case GetID of
ciDXE:
@@ -206,6 +209,8 @@ function TBDSCompiler.GetName: string;
Result := sDelphi104S;
ciD11A:
Result := sDelphi11A;
+ ciD12A:
+ Result := sDelphi12A;
else
Result := Format(sCompilerName, [ProductVersion]);
end;
@@ -240,6 +245,7 @@ function TBDSCompiler.InstallationRegKey: string;
ciD103R : Result := '\Software\Embarcadero\BDS\20.0';
ciD104S : Result := '\Software\Embarcadero\BDS\21.0';
ciD11A : Result := '\Software\Embarcadero\BDS\22.0';
+ ciD12A : Result := '\Software\Embarcadero\BDS\23.0';
else raise EBug.Create(ClassName + '.InstallationRegKey: Invalid ID');
end;
end;
diff --git a/Src/Compilers.UGlobals.pas b/Src/Compilers.UGlobals.pas
index 3600176bf..5fd63023d 100644
--- a/Src/Compilers.UGlobals.pas
+++ b/Src/Compilers.UGlobals.pas
@@ -44,6 +44,7 @@ interface
ciD103R, // Delphi 10.3 Rio
ciD104S, // Delphi 10.4 Sydney,
ciD11A, // Delphi 11.x Alexandria
+ ciD12A, // Delphi 12 Athens
ciFPC // Free Pascal
);
@@ -57,7 +58,7 @@ interface
cBDSCompilers = [
ciD2005w32, ciD2006w32, ciD2007, ciD2009w32, ciD2010, ciDXE, ciDXE2,
ciDXE3, ciDXE4, ciDXE5, ciDXE6, ciDXE7, ciDXE8, ciD10S, ciD101B, ciD102T,
- ciD103R, ciD104S, ciD11A
+ ciD103R, ciD104S, ciD11A, ciD12A
];
const
diff --git a/Src/DBIO.UIniDataReader.pas b/Src/DBIO.UIniDataReader.pas
index 989ab9fef..4d831156c 100644
--- a/Src/DBIO.UIniDataReader.pas
+++ b/Src/DBIO.UIniDataReader.pas
@@ -236,6 +236,7 @@ implementation
'Delphi2010', 'DelphiXE', 'DelphiXE2', 'DelphiXE3', 'DelphiXE4',
'DelphiXE5', 'DelphiXE6', 'DelphiXE7', 'DelphiXE8', 'Delphi10S',
'Delphi101B', 'Delphi102T', 'Delphi103R', 'Delphi104S', 'Delphi11A',
+ 'Delphi12A',
'FPC'
);
diff --git a/Src/FrCodeGenPrefs.pas b/Src/FrCodeGenPrefs.pas
index be4d50516..cff57d325 100644
--- a/Src/FrCodeGenPrefs.pas
+++ b/Src/FrCodeGenPrefs.pas
@@ -681,6 +681,7 @@ procedure TCodeGenPrefsFrame.PopulatePreDefCompilerMenu;
AddMenuItem('Delphi 10.3 Rio', 33.0);
AddMenuItem('Delphi 10.4 Sydney', 34.0);
AddMenuItem('Delphi 11.x Alexandria', 35.0);
+ AddMenuItem('Delphi 12 Athens', 36.0);
end;
procedure TCodeGenPrefsFrame.PreDefCompilerMenuClick(Sender: TObject);
diff --git a/Src/UXMLDocConsts.pas b/Src/UXMLDocConsts.pas
index e84fe3455..53eb02cc7 100644
--- a/Src/UXMLDocConsts.pas
+++ b/Src/UXMLDocConsts.pas
@@ -68,7 +68,7 @@ interface
'd2005', 'd2006', 'd2007', 'd2009', 'd2010',
'dXE', 'dXE2', 'dXE3', 'dDX4' {error, but in use so can't fix},
'dXE5', 'dXE6', 'dXE7', 'dXE8',
- 'd10s', 'd101b', 'd102t', 'd103r', 'd104s', 'd11a',
+ 'd10s', 'd101b', 'd102t', 'd103r', 'd104s', 'd11a', 'd12y',
'fpc'
);
From 212fbaa14b44ebb0363dfae538a6012f6586c704 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Tue, 7 Nov 2023 11:47:34 +0000
Subject: [PATCH 026/144] Update file format docs re Delphi 12 support
---
Docs/Design/FileFormats/config.html | 9 +++++++++
Docs/Design/FileFormats/export.html | 9 +++++++++
Docs/Design/FileFormats/main-db.html | 3 +++
Docs/Design/FileFormats/user-db.html | 9 +++++++++
4 files changed, 30 insertions(+)
diff --git a/Docs/Design/FileFormats/config.html b/Docs/Design/FileFormats/config.html
index 8c0061093..09f7d7114 100644
--- a/Docs/Design/FileFormats/config.html
+++ b/Docs/Design/FileFormats/config.html
@@ -259,6 +259,9 @@
D11A – Delphi 11.x Alexandria
+
+ D12Y – Delphi 12 Athens
+
FPC – Free Pascal
@@ -613,6 +616,12 @@
Indicates whether Delphi 11.x Alexandria was included in the search.
+
+ D12Y
(Boolean)
+
+
+ Indicates whether Delphi 12 Athens was included in the search.
+
FPC
(Boolean)
diff --git a/Docs/Design/FileFormats/export.html b/Docs/Design/FileFormats/export.html
index 5f57b1c60..81e956f14 100644
--- a/Docs/Design/FileFormats/export.html
+++ b/Docs/Design/FileFormats/export.html
@@ -606,6 +606,9 @@
d11a – Delphi 11.x Alexandria compiler (v7.2 & later)
+
+ d12y – Delphi 12 Athens compiler (v7.4 & later)
+
fpc – Free Pascal compiler (all versions)
@@ -984,6 +987,12 @@
Updated with CodeSnip v4.21.0 to add support for REML v5, which is backward compatible with REML v4.
+
+ Version 7.4 - 7 November 2023
+
+
+ Updated in time for CodeSnip v4.22.0 to add support for Delphi 12 Athens.
+
diff --git a/Docs/Design/FileFormats/main-db.html b/Docs/Design/FileFormats/main-db.html
index 867438356..b1d19aa47 100644
--- a/Docs/Design/FileFormats/main-db.html
+++ b/Docs/Design/FileFormats/main-db.html
@@ -419,6 +419,9 @@
Delphi11A
– Delphi 11.x Alexandria compiler *
+
+ Delphi12A
– Delphi 12 Athens compiler *
+
FPC
– Free Pascal compiler
diff --git a/Docs/Design/FileFormats/user-db.html b/Docs/Design/FileFormats/user-db.html
index a5e03cfca..9ca2fe261 100644
--- a/Docs/Design/FileFormats/user-db.html
+++ b/Docs/Design/FileFormats/user-db.html
@@ -631,6 +631,9 @@
d11a – Delphi 11.x Alexandria compiler (v6.10 & later)
+
+ d12y – Delphi 12 Athens compiler (v6.12 & later)
+
fpc – Free Pascal compiler (all versions)
@@ -1020,6 +1023,12 @@
Updated with CodeSnip v4.21.0 to add support for REML v5, which is backwards compatible with REML v4.
+
+ Version 6.12 - 7 November 2023
+
+
+ Updated in time for CodeSnip v4.22.0 to add support for Delphi 12 Athens.
+
From a048d1f9ecf6b86b14537fdea669d1e1c9069e91 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Tue, 7 Nov 2023 11:48:11 +0000
Subject: [PATCH 027/144] Update ReadMe.txt to note Delphi 12 support
---
Docs/ReadMe.txt | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Docs/ReadMe.txt b/Docs/ReadMe.txt
index a2020254e..b7806db53 100644
--- a/Docs/ReadMe.txt
+++ b/Docs/ReadMe.txt
@@ -14,8 +14,8 @@ online DelphiDabbler Code Snippets database as well as maintain a database of
user-defined snippets.
It displays details of each snippet in the database and can test-compile them
-with each installed Win32 version of Delphi from Delphi 2 to Delphi 11.x
-Alexandria and Free Pascal.
+with each installed Win32 version of Delphi from Delphi 2 to Delphi 12 Athens
+and Free Pascal.
Compilable Pascal units can be created that contain selected snippets.
@@ -204,8 +204,8 @@ Configuring CodeSnip to Work With Your Compilers
================================================================================
A feature of CodeSnip is its ability to test compile snippets with any installed
-Windows 32 version of Delphi (from Delphi 2 to Delphi 11.x Alexandria) and
-FreePascal, providing some simple rules are followed.
+Windows 32 version of Delphi (from Delphi 2 to Delphi 12 Athens) and FreePascal,
+providing some simple rules are followed.
When CodeSnip is first installed it knows nothing about the available compilers
and so test compilations cannot be performed. If any supported Delphi compiler
From 07405a21764172ee25e6c9977741a44291c157e7 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Tue, 7 Nov 2023 11:49:08 +0000
Subject: [PATCH 028/144] Update help topics re support for Delphi 12
---
Src/Help/HTML/about_compiler_checks.htm | 2 +-
Src/Help/HTML/dlg_configcompilers.htm | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Src/Help/HTML/about_compiler_checks.htm b/Src/Help/HTML/about_compiler_checks.htm
index 54ab897b0..5921eb7d8 100644
--- a/Src/Help/HTML/about_compiler_checks.htm
+++ b/Src/Help/HTML/about_compiler_checks.htm
@@ -34,7 +34,7 @@
The supported compilers are the Win32 Delphi compilers from Delphi 2 to
- Delphi 11.x Alexandria and Free Pascal.
+ Delphi 12 Athens and Free Pascal.
Configuring CodeSnip
diff --git a/Src/Help/HTML/dlg_configcompilers.htm b/Src/Help/HTML/dlg_configcompilers.htm
index 73e6ad0be..f2faa3ee8 100644
--- a/Src/Help/HTML/dlg_configcompilers.htm
+++ b/Src/Help/HTML/dlg_configcompilers.htm
@@ -312,7 +312,7 @@
CodeSnip can automatically detect the presence of Win 32 Delphi
- compilers from Delphi 2 to Delphi 11.x Alexandria. Click the Detect
+ compilers from Delphi 2 to Delphi 12 Athens. Click the Detect
Delphi Compilers button to do this. Any supported installed version
of Delphi will be recorded†. This can save considerable
time and avoid errors.
From ead4e069a207db6d85c9ac72d23085057e703ca7 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Wed, 8 Nov 2023 02:10:40 +0000
Subject: [PATCH 029/144] Update license copyright date range to include 2023
---
Docs/Design/FileFormats/config.html | 2 +-
Docs/Design/FileFormats/export.html | 2 +-
Docs/Design/FileFormats/main-db.html | 2 +-
Docs/Design/FileFormats/user-db.html | 2 +-
Src/Compilers.UBDS.pas | 2 +-
Src/Compilers.UGlobals.pas | 2 +-
Src/DBIO.UIniDataReader.pas | 2 +-
Src/Help/HTML/about_compiler_checks.htm | 2 +-
Src/Help/HTML/dlg_configcompilers.htm | 2 +-
Src/UXMLDocConsts.pas | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/Docs/Design/FileFormats/config.html b/Docs/Design/FileFormats/config.html
index 09f7d7114..d6a57c49a 100644
--- a/Docs/Design/FileFormats/config.html
+++ b/Docs/Design/FileFormats/config.html
@@ -5,7 +5,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2012-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2012-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* CodeSnip File Format Documentation: Configuration Files
-->
diff --git a/Docs/Design/FileFormats/export.html b/Docs/Design/FileFormats/export.html
index 81e956f14..e60bfe00c 100644
--- a/Docs/Design/FileFormats/export.html
+++ b/Docs/Design/FileFormats/export.html
@@ -5,7 +5,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2012-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2012-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* CodeSnip File Format Documentation: Export
-->
diff --git a/Docs/Design/FileFormats/main-db.html b/Docs/Design/FileFormats/main-db.html
index b1d19aa47..25dc2834a 100644
--- a/Docs/Design/FileFormats/main-db.html
+++ b/Docs/Design/FileFormats/main-db.html
@@ -5,7 +5,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2012-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2012-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* CodeSnip File Format Documentation: Main Database
-->
diff --git a/Docs/Design/FileFormats/user-db.html b/Docs/Design/FileFormats/user-db.html
index 9ca2fe261..8a0e6945c 100644
--- a/Docs/Design/FileFormats/user-db.html
+++ b/Docs/Design/FileFormats/user-db.html
@@ -5,7 +5,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2012-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2012-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* CodeSnip File Format Documentation: User Database
-->
diff --git a/Src/Compilers.UBDS.pas b/Src/Compilers.UBDS.pas
index a7c871984..3ef1fde4c 100644
--- a/Src/Compilers.UBDS.pas
+++ b/Src/Compilers.UBDS.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2006-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2006-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* Class that controls and provides information about Borland CodeGear and
* Embarcadero "BDS" Win32 compilers.
diff --git a/Src/Compilers.UGlobals.pas b/Src/Compilers.UGlobals.pas
index 5fd63023d..7e660a166 100644
--- a/Src/Compilers.UGlobals.pas
+++ b/Src/Compilers.UGlobals.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2005-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2005-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* Declares various types that describe the compiler and compilation results and
* defines interfaces to compiler objects.
diff --git a/Src/DBIO.UIniDataReader.pas b/Src/DBIO.UIniDataReader.pas
index 4d831156c..90b0c9657 100644
--- a/Src/DBIO.UIniDataReader.pas
+++ b/Src/DBIO.UIniDataReader.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2005-2021, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2005-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* Implements code that reads the main CodeSnip database from .ini and .dat
* files.
diff --git a/Src/Help/HTML/about_compiler_checks.htm b/Src/Help/HTML/about_compiler_checks.htm
index 5921eb7d8..ab4a5784f 100644
--- a/Src/Help/HTML/about_compiler_checks.htm
+++ b/Src/Help/HTML/about_compiler_checks.htm
@@ -4,7 +4,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2005-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2005-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* Help topic explaining compiler checks.
-->
diff --git a/Src/Help/HTML/dlg_configcompilers.htm b/Src/Help/HTML/dlg_configcompilers.htm
index f2faa3ee8..787f3bec5 100644
--- a/Src/Help/HTML/dlg_configcompilers.htm
+++ b/Src/Help/HTML/dlg_configcompilers.htm
@@ -4,7 +4,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2005-2022, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2005-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* Help topic for Configure Compilers dialogue box.
-->
diff --git a/Src/UXMLDocConsts.pas b/Src/UXMLDocConsts.pas
index 53eb02cc7..122d13322 100644
--- a/Src/UXMLDocConsts.pas
+++ b/Src/UXMLDocConsts.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2008-2021, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2008-2023, Peter Johnson (gravatar.com/delphidabbler).
*
* Constants defined node names and attributes used in the various XML documents
* used by CodeSnip.
From 464cc5656a6d719845dbcc2b8d95cf92a15a2367 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Wed, 8 Nov 2023 02:31:53 +0000
Subject: [PATCH 030/144] Bump version number to v4.22.0 build 270
---
Src/VersionInfo.vi-inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Src/VersionInfo.vi-inc b/Src/VersionInfo.vi-inc
index 78ab7ae12..7fdf24930 100644
--- a/Src/VersionInfo.vi-inc
+++ b/Src/VersionInfo.vi-inc
@@ -1,8 +1,8 @@
# CodeSnip Version Information Macros for Including in .vi files
# Version & build numbers
-version=4.21.2
-build=269
+version=4.22.0
+build=270
# String file information
copyright=Copyright © P.D.Johnson, 2005-.
From 16f0951b9d64e0da9de3a45ec6a31748b8f9f46f Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Wed, 8 Nov 2023 02:32:33 +0000
Subject: [PATCH 031/144] Update change log with details of release v4.22.0
---
CHANGELOG.md | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ed3fc709..afb4a535e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,17 @@ Releases are listed in reverse version number order.
> Note that _CodeSnip_ v4 was developed in parallel with v3 for a while. As a consequence some v3 releases have later release dates than early v4 releases.
+## Release v4.22.0 of 08 November 2023
+
+* Added support for test compiling snippets with Delphi 12 Athens [issue #121].
+* Documentation changes re addition of support for Delphi 12:
+ * File format additions for config, export, user database and main database.
+ * `Docs/ReadMe.txt`.
+ * Relevant help topics.
+* Reversed order in which compilers are listed in the Configure Compilers and Find Compilers dialogue boxes so that the most recent version of Delphi is listed first [issue #51].
+* Refactored out all `with` statements from Pascal source code [issue #118].
+* Fixed error in `CHANGELOG.md` entry for release v4.21.2 [issue #120].
+
## Release v4.21.2 of 14 July 2023
* Removed broken links and fixed unsafe links in the About box [issue #105].
From 8e83b561d1b7d12c236e6883b9b01bf086b5b278 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Tue, 2 Apr 2024 12:23:59 +0100
Subject: [PATCH 032/144] Remove marketing names from later Delpji compilers
Fixes #125
---
Src/Compilers.UBDS.pas | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/Src/Compilers.UBDS.pas b/Src/Compilers.UBDS.pas
index 3ef1fde4c..509e0f993 100644
--- a/Src/Compilers.UBDS.pas
+++ b/Src/Compilers.UBDS.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2006-2023, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2006-2024, Peter Johnson (gravatar.com/delphidabbler).
*
* Class that controls and provides information about Borland CodeGear and
* Embarcadero "BDS" Win32 compilers.
@@ -172,13 +172,13 @@ function TBDSCompiler.GetName: string;
sDelphiXE6 = 'Delphi XE6';
sDelphiXE7 = 'Delphi XE7';
sDelphiXE8 = 'Delphi XE8';
- sDelphi10S = 'Delphi 10 Seattle';
- sDelphi101B = 'Delphi 10.1 Berlin';
- sDelphi102T = 'Delphi 10.2 Tokyo';
- sDelphi103R = 'Delphi 10.3 Rio';
- sDelphi104S = 'Delphi 10.4 Sydney';
- sDelphi11A = 'Delphi 11.x Alexandria';
- sDelphi12A = 'Delphi 12 Athens';
+ sDelphi10S = 'Delphi 10'; // Seattle
+ sDelphi101B = 'Delphi 10.1'; // Berlin
+ sDelphi102T = 'Delphi 10.2'; // Tokyo
+ sDelphi103R = 'Delphi 10.3'; // Rio
+ sDelphi104S = 'Delphi 10.4'; // Sydney
+ sDelphi11A = 'Delphi 11.x'; // Alexandria
+ sDelphi12A = 'Delphi 12.x'; // Athens
begin
case GetID of
ciDXE:
From adb92d22ea7763172a72755f1d7f8f37910354cc Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Tue, 2 Apr 2024 12:34:04 +0100
Subject: [PATCH 033/144] Add new ' REML entity
Fixes #99
---
Src/UREMLDataIO.pas | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/Src/UREMLDataIO.pas b/Src/UREMLDataIO.pas
index 6924ab76c..76974afc8 100644
--- a/Src/UREMLDataIO.pas
+++ b/Src/UREMLDataIO.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2008-2023, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2008-2024, Peter Johnson (gravatar.com/delphidabbler).
*
* Implements classes that render and parse Routine Extra Markup Language (REML)
* code. This markup is used to read and store active text objects as used by
@@ -1035,7 +1035,7 @@ class function TREMLEntities.CharToMnemonicEntity(const Ch: Char): string;
{Class constructor. Creates map of mnemonic entities to equivalent characters.
}
begin
- SetLength(fEntityMap, 34);
+ SetLength(fEntityMap, 35);
// Supported character entities. All are optional unless otherwise stated
// REML v1
fEntityMap[0] := TREMLEntity.Create('amp', '&'); // required in REML
@@ -1074,6 +1074,8 @@ class function TREMLEntities.CharToMnemonicEntity(const Ch: Char): string;
fEntityMap[31] := TREMLEntity.Create('laquo', '«');
fEntityMap[32] := TREMLEntity.Create('raquo', '»');
fEntityMap[33] := TREMLEntity.Create('iquest', '¿');
+ // REML v6
+ fEntityMap[34] := TREMLEntity.Create('apos', SINGLEQUOTE);
end;
class destructor TREMLEntities.Destroy;
From dfa315ba8548aaef718535b456e249018f74f1d1 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Tue, 2 Apr 2024 12:46:36 +0100
Subject: [PATCH 034/144] Update REML docs & help topic re REML v6
* Updated affected file format documentation
* Updated REML documentation (reml.html)
* Updated help topic (reml.htm)
Also corrected omission in list of REML entities in reml.html
---
Docs/Design/FileFormats/export.html | 21 +++++++++++++++++----
Docs/Design/FileFormats/main-db.html | 4 ++--
Docs/Design/FileFormats/user-db.html | 19 ++++++++++++++++---
Docs/Design/reml.html | 27 ++++++++++++++++++++++++---
Src/Help/HTML/reml.htm | 6 +++---
5 files changed, 62 insertions(+), 15 deletions(-)
diff --git a/Docs/Design/FileFormats/export.html b/Docs/Design/FileFormats/export.html
index e60bfe00c..29ca8a849 100644
--- a/Docs/Design/FileFormats/export.html
+++ b/Docs/Design/FileFormats/export.html
@@ -5,7 +5,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2012-2023, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2012-2024, Peter Johnson (gravatar.com/delphidabbler).
*
* CodeSnip File Format Documentation: Export
-->
@@ -300,9 +300,13 @@
encoded in REML markup. REML v4 is supported.
- version 7.3 and later: Content is formatted text
+ version 7.3 and 7.4: Content is formatted text
encoded in REML markup. REML v5 is supported.
+
+ version 7.5 and later: Content is formatted text
+ encoded in REML markup. REML v6 is supported.
+
@@ -447,7 +451,10 @@
versions 5 to 7.2: supports REML v4.
- version 7.3 & later: supports REML v5.
+ version 7.3 & 7.4: supports REML v5.
+
+
+ version 7.5 & later: supports REML v6.
@@ -993,6 +1000,12 @@
Updated in time for CodeSnip v4.22.0 to add support for Delphi 12 Athens.
+
+ Version 7.5 - 2 April 2014
+
+
+ Added support for REML v6, which is backward compatible with REML v4.
+
@@ -1042,7 +1055,7 @@
- Readers of v2 files and later can parse REML as v5, since all versions of REML up to v5 are backwards compatible.
+ Readers of v2 files and later can parse REML as v6, since all versions of REML up to v6 are backwards compatible.
diff --git a/Docs/Design/FileFormats/main-db.html b/Docs/Design/FileFormats/main-db.html
index 25dc2834a..1b122069c 100644
--- a/Docs/Design/FileFormats/main-db.html
+++ b/Docs/Design/FileFormats/main-db.html
@@ -5,7 +5,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2012-2023, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2012-2024, Peter Johnson (gravatar.com/delphidabbler).
*
* CodeSnip File Format Documentation: Main Database
-->
@@ -928,7 +928,7 @@
- Each of these options is described below. All except the last assume that
+ Each of these options is described below. All except options 5 and 6 assume that
Make config
has been run.
@@ -648,7 +650,7 @@
> Make -DPORTABLE codesnip
- Again the executable is placed in the _build/exe
folder, but this time
+ Again the executable is placed in the _build\exe
folder, but this time
it is named CodeSnip-p.exe
@@ -665,12 +667,17 @@
The compiled help file will be written to the _build\exe
folder.
+
+
+ The same help file is used for the standard and portable editions.
+
+
Build the Setup Program
- The setup program requires that the CodeSnip excutable and the
+ The setup program requires that the CodeSnip executable and the
compiled help file are already present in the _build\exe
directory.
@@ -690,7 +697,7 @@
The setup program is named CodeSnip-Setup-x.x.x.exe
, where
x.x.x is the version number extracted from CodeSnip's version
- information. It is placed in the _build/exe
directory.
+ information. It is placed in the _build\exe
directory.
@@ -715,7 +722,7 @@
Make can create zip files containing all the files that are included in a release.
- Zip files are written to the _build/release
directory.
+ Zip files are written to the _build\release
directory.
@@ -724,12 +731,12 @@
The release zip file for the standard edition requires that the setup files is already
- present in the _build/exe
directory.
+ present in the _build\exe
directory.
The release file includes the setup file along with ReadMe.txt
- that is automatically generated from Docs/ReadMe-standard.txt
.
+ that is automatically generated from Docs\ReadMe-standard.txt
.
@@ -763,9 +770,9 @@
The release file includes the portable executable file, CodeSnip-p.exe
,
- the help file CodeSnip.chm
, Docs/License.html
and
+ the help file CodeSnip.chm
, Docs\License.html
and
ReadMe.txt
that is automatically generated from
- Docs/ReadMe-portable.txt
.
+ Docs\ReadMe-portable.txt
.
@@ -855,6 +862,31 @@
zip file names can be used here too.
+
+ There is also a quicker way to build a release, but you must provide a version number to use it. First navigate up
+ to the repository root. Then run
+
+
+> Deploy 9.9.9
+
+
+ where 9.9.9
is the release version number.
+
+
+
+ This command will build both the standard and portable executables, the help file, the standard edition setup file
+ and finally create the release zip files for both editions, with the release version number incorporated in the file names.
+
+
+
+ Using Deploy 9.9.9
is the equivalent of doing:
+
+
+> cd Src
+> Make -DVERSION=9.9.9
+> Make -DPORTABLE -DVERSION=9.9.9
+> cd ..
+
Clean Up
From b38d5fe1ff81e7bc7a767e22bc7141b1c641efa3 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Thu, 4 Apr 2024 01:01:05 +0100
Subject: [PATCH 048/144] Update 3rd party PJSysInfo unit to v5.27.0
Fixes #126
---
Src/3rdParty/PJSysInfo.pas | 348 +++++++++++++++++++++++++------------
1 file changed, 241 insertions(+), 107 deletions(-)
diff --git a/Src/3rdParty/PJSysInfo.pas b/Src/3rdParty/PJSysInfo.pas
index efd2c4de6..88f726505 100644
--- a/Src/3rdParty/PJSysInfo.pas
+++ b/Src/3rdParty/PJSysInfo.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2001-2023, Peter Johnson (https://gravatar.com/delphidabbler).
+ * Copyright (C) 2001-2024, Peter Johnson (https://gravatar.com/delphidabbler).
*
* This unit contains various static classes, constants, type definitions and
* global variables for use in providing information about the host computer and
@@ -21,8 +21,12 @@
* 3: When run on operating systems up to and including Windows 8 running the
* host program in compatibility mode causes some variables and TPJOSInfo
* methods to be "spoofed" into returning information about the emulated
- * OS. When run on Windows 8.1 and later details of the actual host
- * operating system are always returned and the emulated OS is ignored.
+ * OS. When run on Windows 8.1 details of the actual host operating system
+ * are always returned and the emulated OS is ignored.
+ *
+ * 4: On Windows 10 and later the correct operating system will only be
+ * reported if the application declares the operating systems it supports
+ * in its manifest.
*
* ACKNOWLEDGEMENTS
*
@@ -1226,11 +1230,12 @@ TBuildNameMap = record
https://en.wikipedia.org/wiki/Windows_NT
https://en.wikipedia.org/wiki/Windows_10_version_history
https://en.wikipedia.org/wiki/Windows_11_version_history
+ https://blogs.windows.com/windows-insider/tag/windows-insider-program/
https://en.wikipedia.org/wiki/Windows_Server
https://en.wikipedia.org/wiki/Windows_Server_2019
https://en.wikipedia.org/wiki/Windows_Server_2016
+ https://en.wikipedia.org/wiki/Windows_Server_2022
https://tinyurl.com/y8tfadm2 (MS Windows Server release information)
- https://tinyurl.com/usupsz4a (Win 11 Version Numbers & Build Versions)
https://docs.microsoft.com/en-us/lifecycle/products/windows-server-2022
https://tinyurl.com/yj5e72jt (MS Win 10 release info)
https://tinyurl.com/kd3weeu7 (MS Server release info)
@@ -1239,6 +1244,10 @@ TBuildNameMap = record
For Vista and Win 7 we have to add service pack number to these values to
get actual build number. For Win 8 onwards we just use the build numbers
as is.
+
+ References:
+ [^1] MS community blog post https://tinyurl.com/3c8e3hsc
+ [^2] https://en.wikipedia.org/wiki/Windows_11_version_history
}
{
@@ -1267,24 +1276,30 @@ TBuildNameMap = record
// Windows 10 ----------------------------------------------------------------
- // Version 1507 previews
- // Preview builds with major/minor version number 6.4
- Win10_6point4Builds: array[0..2] of Integer = (9841, 9860, 9879);
- // Preview builds with major/minor version number 10.0
- Win10_1507_Preview_Builds: array[0..10] of Integer = (
- 9926, 10041, 10049, 10061, 10074, 10122, 10130, 10158, 10159, 10162, 10166
- );
+ // Version 1507 preview builds
+ // Preview builds with major/minor version number 6.4
+ // Expired by 2015-04-30 [^1]:
+ // 9841, 9860, 9879
+ // Preview builds with major/minor version number 10.0
+ // Expired by 2015-10-15 [^1]:
+ // 9926, 10041, 10049, 10061, 10074, 10122, 10130, 10158, 10159, 10162,
+ // 10166
- // Version 1511 previews
- Win10_1511_Preview_Builds: array[0..4] of Integer = (
- 10525, 10532, 10547, 10565, 10576
- );
+ // Version 1511 preview builds
+ // Expired by 2016-07-30 [^1]:
+ // 10525, 10532, 10547, 10565, 10576
// Version 1607 previews
- Win10_1607_Preview_Builds: array[0..24] of Integer = (
- 11082, 11099, 11102, 14251, 14257, 14271, 14279, 14291, 14295, 14316,
- 14328, 14332, 14342, 14352, 14361, 14366, 14367, 14371, 14372, 14376,
- 14379, 14383, 14385, 14388, 14390
+ Win10_1607_Preview_Builds: array[0..5] of Integer = (
+ // Expired 2016-07-30 [^1]:
+ // 11082, 11099
+ // Expired 2016-08-01 [^1]:
+ // 11102, 14251, 14257, 14267, 14271, 14279, 14291, 14295, 14316, 14328,
+ // 14332, 14342, 14352, 14361
+ // Expired 2016-10-15 [^1]:
+ // 14366, 14367, 14371, 14372,
+ 14376, 14379, 14383, 14385, // unknown expiry date [^1]
+ 14388, 14390 // permanently activated [^1]
);
// Version 1703 previews
@@ -1349,7 +1364,7 @@ TBuildNameMap = record
);
{
- End of support information for Windows 10 versions (as of 2022-12-31).
+ End of support information for Windows 10 versions (as of 2023-05-01).
GAC = General Availablity Channel.
LTSC = Long Term Support Channel.
@@ -1365,10 +1380,10 @@ TBuildNameMap = record
1903 | ended | N/a
1909 | ended | N/a
2004 | ended | N/a
- 20H2 | 2023-09-05 | N/a
+ 20H2 | ended | N/a
21H1 | ended | N/a
21H2 | 2024-06-11 | 2032-01-13
- 22H2 | 2025-05-13 | N/a
+ 22H2 | 2025-10-14 | N/a
}
// Map of Win 10 builds from 1st release (version 1507) to version 20H2
@@ -1397,7 +1412,7 @@ TBuildNameMap = record
Name: 'Version 1909: November 2019 Update'),
(Build: 19041; LoRev: 264; HiRev: 1415;
Name: 'Version 2004: May 2020 Update'),
- (Build: 19042; LoRev: 572; HiRev: MaxInt;
+ (Build: 19042; LoRev: 572; HiRev: 2965;
Name: 'Version 20H2: October 2020 Update')
);
@@ -1430,6 +1445,7 @@ TBuildNameMap = record
--------|------------|------------
21H2 | 2023-10-10 | 2024-10-08
22H2 | 2024-10-08 | 2025-10-14
+ 23H2 | 2025-11-11 | 2026-11-10
}
// 1st build released branded as Windows 11
@@ -1445,50 +1461,93 @@ TBuildNameMap = record
// various other channels.
// See **REF1** in implementation
Win11v22H2Build = 22621;
- // Build 22632 was added as an alternative Beta channel build as of rev 290.
+
+ // Windows 11 version 22H3
+ // See **REF10** in implementation
+ Win11v23H2Build = 22631;
+
+ // "Preview Builds of October 2022 component update in Beta Channel"
// See **REF2** in implementation
- Win11v22H2BuildAlt = 22622;
-
- // Windows 11 Dev channel releases (with version string "Dev").
- // For details see https://en.wikipedia.org/wiki/Windows_11_version_history
- Win11DevChannelDevBuilds: array[0..25] of Integer = (
- // pre Win 11 release (expired 2021/10/31):
- // 22449, 22454, 22458, 22463,
- // pre Win 11 release (expired 2022/09/15):
- // 22468,
- // post Win 11 release, pre Win 11 22H2 beta release (expired 2022/09/15):
- // 22471, 22478, 22483, 22489, 22494, 22499, 22504, 22509, 22518, 22523,
- // 22526, 22533, 22538, 22543, 22557, 22563,
- // post Win 11 22H2 beta release (expired 2022/09/15):
+ Win11Oct22ComponentBetaChannelBuild = 22622;
+
+ // "Preview Builds of February 2023 component update in Beta Channel"
+ // See **REF7** in implementation
+ Win11Feb23ComponentBetaChannelBuild = 22623;
+
+ // "Preview builds of May 2023 component update in Beta Channel"
+ // See **REF8** in implementation
+ Win11May23ComponentBetaChannelBuild = 22624;
+
+ // "Preview builds of future component update in Beta Channel"
+ // See **REF9** in implementation
+ Win11FutureComponentBetaChannelBuild = 22635;
+
+ // Windows 11 Dev channel releases with version string "Dev" [^2]
+ // pre Win 11 release (expired 2021/10/31):
+ // 22449, 22454, 22458, 22463,
+ // pre Win 11 release (expired 2022/09/15):
+ // 22468,
+ // post Win 11 release, pre Win 11 22H2 beta release (expired 2022/09/15):
+ // 22471, 22478, 22483, 22489, 22494, 22499, 22504, 22509, 22518, 22523,
+ // 22526, 22533, 22538, 22543, 22557, 22563,
+
+ // Windows 11 Dev channel releases with version string "22H2" [^2]
+ Win1122H2DevChannelDevBuilds: array[0..20] of Integer = (
+ // expired 2022/09/15 (pre Win 11 22H2 beta release):
+ // 22567, 22572, 22579
+ // expired 2022/09/15 (post Win 11 22H2 beta release):
// 25115, 25120, 25126, 25131, 25136, 25140, 25145, 25151, 25158, 25163,
// 25169, 25174, 25179,
- // post Win 11 22H2 beta release (expiring 2023/09/15):
- 25182, 25188, 25193, 25197, 25201, 25206, 25211,
- // post Win 11 22H2 release (expiring 2023/09/15):
- 25217, 25227, 25231, 25236, 25247, 25252, 25262, 25267, 25272, 25276, 25281,
- 25284, 25290, 25295, 25300, 25309, 23403, 23419, 23424
+ // expired 2023/09/15 (post Win 11 22H2 beta release):
+ // 25182, 25188, 25193, 25197, 25201, 25206, 25211,
+ // expired 2023/09/15 (post Win 11 22H2 release):
+ // 25217, 25227, 25231, 25236, 25247, 25252, 25262, 25267, 25272, 25276,
+ // 25281, 25284, 25290, 25295, 25300, 25309, 23403, 23419, 23424, 23430,
+ // 23435, 23440, 23451, 23466, 23471, 23475, 23481, 23486, 23493, 23506,
+ // 23511, 23516, 23521,
+ // expiring 2024-09-15:
+ 23526, 23531, 23536, 23541, 23545, 23550, 23555, 23560, 23565, 23570, 23575,
+ 23580, 23585, 23590, 23595, 23601, 23606, 23612, 23615, 23619, 23620
+ );
+
+ // Win 11 Dev channel releases with version string "24H2" [^2]
+ Win1124H2DevChannelDevBuilds: array[0..4] of Integer = (
+ // expiring 2024-09-15:
+ 26052, 26058, 26080, 26085, 26090
);
- // Preview builds of Windows 11 in the Canary Channel
- // For details see https://en.wikipedia.org/wiki/Windows_11_version_history
- Win11CanaryPreviewBuilds: array[0..2] of Integer = (
- // expiring 2023/09/15:
- 25314, 25324, 25330
+ // Preview builds of Windows 11 in the Canary Channel with version string
+ // "22H2" [^2]
+ // (expired 2023-09-15):
+ // 25314, 25324, 25330, 25336, 25346, 25352, 25357, 25370,
+
+ // Preview builds of Windows 11 in the Canary Channel with version string
+ // "23H2" [^2]
+ Win11Canary23H2PreviewBuilds: array[0..15] of Integer = (
+ // expired 2023-09-15:
+ // 25375, 25381, 25387, 25393, 25905, 25915, 25921, 25926,
+ // expires 2024-09-15:
+ 25931, 25936, 25941, 25947, 25951, 25967, 25977, 25982, 25987, 25992, 25997,
+ 26002, 26010, 26016, 26020, 26040
);
- // Windows 11 Dev channel builds with version string "22H2"
- // expired 2022/09/15):
- // 22567, 22572, 22579
+ // Preview builds of Windows 11 in the Canary Channel with version string
+ // "24H2" [^2]
+ Win11Canary24H2PreviewBuilds: array[0..5] of Integer = (
+ // expires 2024-09-15:
+ 26052, 26058, 26063, 26080, 26085,
+ // expiry date unknown
+ 26090
+ );
- // Windows 11 Dev & Beta channel builds with version string "22H2"
+ // Windows 11 Dev & Beta channel builds with version string "22H2" [^2]
Win11DevBetaChannels22H2Builds: array[0..1] of Integer = (
- // expired 2022/09/15: 22581, 22593, 22598,
+ // Expired 2022/09/15:
+ // 22581, 22593, 22598
+ // Unknown expiry date:
22610, 22616
);
- Win11Feb23ComponentBetaChannelBuild = 22623;
- Win11FutureComponentBetaChannelBuild = 22624;
-
Win11FirstBuild = Win11DevBuild; // First build number of Windows 11
// Windows server v10.0 version ----------------------------------------------
@@ -2006,6 +2065,13 @@ procedure InitPlatformIdEx;
);
end;
+ // Append "Moment N" to InternalExtraUpdateInfo
+ procedure AppendMomentToInternalExtraUpdateInfo(N: Cardinal);
+ begin
+ InternalExtraUpdateInfo := InternalExtraUpdateInfo
+ + ' Moment ' + IntToStr(N);
+ end;
+
begin
// Load version query functions used externally to this routine
VerSetConditionMask := LoadKernelFunc('VerSetConditionMask');
@@ -2073,17 +2139,6 @@ procedure InitPlatformIdEx;
// Windows 2016 Server tech preview 1
InternalBuildNumber := Win2016TP1Build;
InternalExtraUpdateInfo := 'Technical Preview 6';
- end
- else
- begin
- if FindBuildNumberFrom(
- Win10_6point4Builds, InternalBuildNumber
- ) then
- // Early Win 10 preview builds report v6.4, not v10.0
- InternalExtraUpdateInfo := Format(
- 'Version 1507 Preview v6.4.%d.%d',
- [InternalBuildNumber, InternalRevisionNumber]
- )
end;
end;
if Win32ServicePackMajor > 0 then
@@ -2150,11 +2205,13 @@ procedure InitPlatformIdEx;
1288, 1348, 1387, 1415, 1466, 1469, 1503, 1526, 1566, 1586,
1620, 1645, 1682, 1706, 1708, 1741, 1766, 1767, 1806, 1826,
1865, 1889, 1949, 2006, 2075, 2130, 2132, 2193, 2194, 2251,
- 2311, 2364, 2486, 2546, 2604, 2673, 2728, 2788 .. MaxInt:
+ 2311, 2364, 2486, 2546, 2604, 2673, 2728, 2788, 2846, 2965,
+ 3086, 3208, 3324, 3448, 3570, 3693, 3803, 3930, 4046,
+ 4170 .. MaxInt:
InternalExtraUpdateInfo := 'Version 21H2';
1147, 1149, 1151, 1165, 1200, 1202, 1237, 1263, 1266, 1319,
- 1320, 1379, 1381, 1499, 1618, 1679, 1737, 1739, 1862, 1947,
- 2192, 2545:
+ 1320, 1379, 1381, 1499, 1618, 1679, 1737, 1739, 1862,
+ 1947, 2192, 2545:
InternalExtraUpdateInfo := Format(
'Version 21H2 [Release Preview Channel v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
@@ -2172,16 +2229,19 @@ procedure InitPlatformIdEx;
InternalBuildNumber := Win1022H2Build;
case InternalBuildNumber of
2006, 2130, 2132, 2193, 2194, 2251, 2311, 2364, 2486, 2546,
- 2604, 2673, 2728, 2788 .. MaxInt:
+ 2604, 2673, 2728, 2788, 2846, 2913, 2965, 3031, 3086, 3208,
+ 3271, 3324, 3393, 3448, 3516, 3570, 3636, 3693, 3758, 3803,
+ 3930, 3996, 4046, 4123, 4170, 4239 .. MaxInt:
InternalExtraUpdateInfo := 'Version 22H2';
- 1865, 1889, 1949, 2075, 2301, 2670, 2787:
+ 1865, 1889, 1949, 2075, 2301, 2670, 2787, 2908, 3030, 3154,
+ 3155, 3269, 3391, 3513, 3754, 3757, 3992, 4116, 4233, 4235:
InternalExtraUpdateInfo := Format(
'Version 22H2 [Release Preview Channel v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
);
else
InternalExtraUpdateInfo := Format(
- 'Version 22H1 [Unknown release v10.0.%d.%d]',
+ 'Version 22H2 [Unknown release v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
);
end;
@@ -2209,7 +2269,9 @@ procedure InitPlatformIdEx;
194, 258, 282, 348, 376, 434, 438, 469, 493, 527, 556, 593, 613,
652, 675, 708, 739, 740, 778, 795, 832, 856, 918, 978, 1042,
1098, 1100, 1165, 1219, 1281, 1335, 1455, 1516, 1574, 1641,
- 1696, 1761 .. MaxInt:
+ 1696, 1761, 1817, 1880, 1936, 2003, 2057, 2124, 2176, 2245,
+ 2295, 2360, 2416, 2482, 2538, 2600, 2652, 2713, 2777,
+ 2836 .. MaxInt:
// Public releases of Windows 11
InternalExtraUpdateInfo := 'Version 21H2';
51, 65, 71:
@@ -2228,9 +2290,10 @@ procedure InitPlatformIdEx;
+ '[Beta & Release Preview Channels v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
);
- 651, 706, 776, 829, 917, 1041, 1163, 1279, 1515, 1639, 1757:
+ 651, 706, 776, 829, 917, 1041, 1163, 1279, 1515, 1639, 1757,
+ 1879, 2001, 2121, 2243, 2359, 2479:
InternalExtraUpdateInfo := Format(
- 'Version 21H1 Release Preview Channel v10.0.%d.%d]',
+ 'Version 21H2 Release Preview Channel v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
);
else
@@ -2246,21 +2309,35 @@ procedure InitPlatformIdEx;
InternalBuildNumber := Win11v22H2Build;
case InternalRevisionNumber of
382, 521, 525, 608, 674, 675, 755, 819, 900, 963, 1105, 1194,
- 1265, 1344, 1413, 1485, {placeholder->}1538 .. MaxInt:
+ 1265, 1344, 1413, 1485, 1555, 1635, 1702, 1778, 1848, 1926,
+ 1928, 1992, 2070, 2134, 2215, 2283, 2361, 2428, 2506, 2715,
+ 2792, 2861, 3007, 3085, 3155, 3235, 3296, 3374 .. MaxInt:
+ begin
InternalExtraUpdateInfo := 'Version 22H2';
+ case InternalRevisionNumber of
+ 675: AppendMomentToInternalExtraUpdateInfo(1);
+ 1344: AppendMomentToInternalExtraUpdateInfo(2);
+ 1778: AppendMomentToInternalExtraUpdateInfo(3);
+ 2361: AppendMomentToInternalExtraUpdateInfo(4);
+ 3235: AppendMomentToInternalExtraUpdateInfo(5);
+ end;
+ end;
1:
InternalExtraUpdateInfo := Format(
'Version 22H2 [Beta & Release Preview v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
);
- 105, 169, 232, 317, 457, 607, 754, 898, 1192, 1343, 1483:
+ 105, 169, 232, 317, 457, 607, 754, 898, 1192, 1343, 1483, 1631,
+ 1776, 2066, 2213, 2359, 2500, 2787, 3078, 3227, 3371:
InternalExtraUpdateInfo := Format(
'Version 22H2 [Release Preview v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
);
160, 290, 436, 440, 450, 575, 586, 590, 598, 601, 730, 741, 746,
870, 875, 885, 891, 1020, 1028, 1037, 1095, 1180, 1245, 1250,
- 1255, 1325, 1391, 1465, 1470, 1537:
+ 1255, 1325, 1391, 1465, 1470, 1537, 1546, 1616, 1680, 1690,
+ 1755, 1825, 1830, 1835, 1900, 1906, 1972, 2048, 2050, 2115,
+ 2129, 2191, 2199, 2262, 2265, 2271, 2338:
InternalExtraUpdateInfo := Format(
'Version 22H2 [Beta v10.0.%d.%d]',
[InternalBuildNumber, InternalRevisionNumber]
@@ -2272,11 +2349,40 @@ procedure InitPlatformIdEx;
);
end;
end
- else if IsBuildNumber(Win11v22H2BuildAlt) then
+ else if IsBuildNumber(Win11v23H2Build) then
+ begin
+ // **REF10**
+ InternalBuildNumber := Win11v23H2Build;
+ case InternalRevisionNumber of
+ 2428, 2506, 2715, 2792, 2861, 3007, 3085, 3155, 3235 {Moment 5}, 3296, 3374 .. MaxInt:
+ InternalExtraUpdateInfo := 'Version 23H2';
+ 1825, 1830, 1835, 1900, 1906, 1972:
+ // revisions 1825..1972 had version string "22H2"
+ InternalExtraUpdateInfo := Format(
+ 'Version 22H2 [Beta v10.0.%d.%d]',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ 2048, 2050, 2115, 2129, 2191, 2199, 2262, 2265, 2271, 2338:
+ InternalExtraUpdateInfo := Format(
+ 'Version 23H2 [Beta v10.0.%d.%d]',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ 2361, 2787, 3078, 3227, 3371:
+ InternalExtraUpdateInfo := Format(
+ 'Version 23H2 [Release Preview v10.0.%d.%d]',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ else
+ InternalExtraUpdateInfo := Format(
+ 'Version 23H2 [Unknown release v10.0.%d.%d]',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ end;
+ end
+ else if IsBuildNumber(Win11Oct22ComponentBetaChannelBuild) then
begin
// **REF2**
- InternalBuildNumber := Win11v22H2BuildAlt;
- // Set fallback update info for unknown revisions
+ InternalBuildNumber := Win11Oct22ComponentBetaChannelBuild;
case InternalRevisionNumber of
290, 436, 440, 450, 575, 586, 590, 598, 601:
InternalExtraUpdateInfo := Format(
@@ -2291,22 +2397,42 @@ procedure InitPlatformIdEx;
end;
end
else if FindBuildNumberFrom(
- Win11DevChannelDevBuilds, InternalBuildNumber
+ Win1122H2DevChannelDevBuilds, InternalBuildNumber
+ ) then
+ begin
+ // Win11 Dev Channel builds with version string "22H2"
+ InternalExtraUpdateInfo := Format(
+ 'Dev Channel Version 22H2 v10.0.%d.%d',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ end
+ else if FindBuildNumberFrom(
+ Win1124H2DevChannelDevBuilds, InternalBuildNumber
+ ) then
+ begin
+ // Win11 Dev Channel builds with version string "22H2"
+ InternalExtraUpdateInfo := Format(
+ 'Dev Channel Version 24H2 v10.0.%d.%d',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ end
+ else if FindBuildNumberFrom(
+ Win11Canary23H2PreviewBuilds, InternalBuildNumber
) then
begin
- // Win11 Dev Channel builds with version string "Dev"
+ // Win11 Canary Channel builds with version string "23H2"
InternalExtraUpdateInfo := Format(
- 'Dev Channel v10.0.%d.%d (Dev)',
+ 'Canary Channel Version 23H2 v10.0.%d.%d',
[InternalBuildNumber, InternalRevisionNumber]
);
end
else if FindBuildNumberFrom(
- Win11CanaryPreviewBuilds, InternalBuildNumber
+ Win11Canary24H2PreviewBuilds, InternalBuildNumber
) then
begin
- // Win11 Canary Channel builds
+ // Win11 Canary Channel builds with version string "24H2"
InternalExtraUpdateInfo := Format(
- 'Canary Channel v10.0.%d.%d (Dev)',
+ 'Canary Channel Version 24H2 v10.0.%d.%d',
[InternalBuildNumber, InternalRevisionNumber]
);
end
@@ -2314,7 +2440,7 @@ procedure InitPlatformIdEx;
Win11DevBetaChannels22H2Builds, InternalBuildNumber
) then
begin
- // Win 11 Dev & Beta channel builds with verison string "22H2"
+ // Win 11 Dev & Beta channel builds with version string "22H2"
InternalExtraUpdateInfo := Format(
'Dev & Beta Channels v10.0.%d.%d (22H2)',
[InternalBuildNumber, InternalRevisionNumber]
@@ -2322,6 +2448,7 @@ procedure InitPlatformIdEx;
end
else if IsBuildNumber(Win11Feb23ComponentBetaChannelBuild) then
begin
+ // **REF7**
InternalBuildNumber := Win11Feb23ComponentBetaChannelBuild;
case InternalRevisionNumber of
730, 741, 746, 870, 875, 885, 891, 1020, 1028, 1037, 1095,
@@ -2337,11 +2464,32 @@ procedure InitPlatformIdEx;
);
end;
end
+ else if IsBuildNumber(Win11May23ComponentBetaChannelBuild) then
+ begin
+ // **REF8**
+ InternalBuildNumber := Win11May23ComponentBetaChannelBuild;
+ case InternalRevisionNumber of
+ 1391, 1465, 1470, 1537, 1546, 1610, 1616, 1680, 1690, 1755 ..
+ MaxInt:
+ InternalExtraUpdateInfo := Format(
+ 'May 2023 Component Update Beta v10.0.%d.%d',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ else
+ InternalExtraUpdateInfo := Format(
+ 'May 2023 Component Update [Unknown Beta v10.0.%d.%d]',
+ [InternalBuildNumber, InternalRevisionNumber]
+ );
+ end;
+ end
else if IsBuildNumber(Win11FutureComponentBetaChannelBuild) then
begin
+ // **REF9**
InternalBuildNumber := Win11FutureComponentBetaChannelBuild;
case InternalRevisionNumber of
- 1391, 1465, 1470, 1537 .. MaxInt:
+ 2419, 2483, 2486, 2552, 2700, 2771, 2776, 2841, 2850, 2915,
+ 2921, 3061, 3066, 3130, 3139, 3140, 3209, 3212, 3276, 3286,
+ 3350, 3420 .. MaxInt:
InternalExtraUpdateInfo := Format(
'Future Component Update Beta v10.0.%d.%d',
[InternalBuildNumber, InternalRevisionNumber]
@@ -2431,20 +2579,6 @@ procedure InitPlatformIdEx;
begin
// Nothing to do: required internal variables set in function call
end
- else if FindWin10PreviewBuildNameAndExtraFrom(
- Win10_1511_Preview_Builds, '1511',
- InternalBuildNumber, InternalExtraUpdateInfo
- ) then
- begin
- // Nothing to do: required internal variables set in function call
- end
- else if FindWin10PreviewBuildNameAndExtraFrom(
- Win10_1507_Preview_Builds, '1507',
- InternalBuildNumber, InternalExtraUpdateInfo
- ) then
- begin
- // Nothing to do: required internal variables set in function call
- end
end
else // Win32ProductType in [VER_NT_DOMAIN_CONTROLLER, VER_NT_SERVER]
begin
@@ -3059,8 +3193,6 @@ class function TPJOSInfo.Platform: TPJOSPlatform;
end;
class function TPJOSInfo.Product: TPJOSProduct;
-var
- DummyBN: Integer; // dummy build number
begin
Result := osUnknown;
case Platform of
@@ -3150,8 +3282,10 @@ class function TPJOSInfo.Product: TPJOSProduct;
// application is "manifested" for the correct Windows version.
// See https://bit.ly/MJSO8Q.
Result := osWin10Svr
- else if FindBuildNumberFrom(Win10_6point4Builds, DummyBN) then
- Result := osWin10;
+ // Version 6.4 was also used for some early Windows 10 preview
+ // builds, but they have all expired so detection has been
+ // removed.
+ // See https://tinyurl.com/3c8e3hsc
else
// Higher minor version: must be an unknown later OS
Result := osWinLater
From df62229ccefa0349445c08049261dd5233a19207 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Thu, 4 Apr 2024 01:19:30 +0100
Subject: [PATCH 049/144] Fix copyright date in About box
Fixes #129
---
Src/Res/HTML/dlg-about-program-tplt.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Src/Res/HTML/dlg-about-program-tplt.html b/Src/Res/HTML/dlg-about-program-tplt.html
index 63a3a2cd4..be93a30c3 100644
--- a/Src/Res/HTML/dlg-about-program-tplt.html
+++ b/Src/Res/HTML/dlg-about-program-tplt.html
@@ -9,7 +9,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2005-2023, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2005-2024, Peter Johnson (gravatar.com/delphidabbler).
*
* Template for content displayed in program tab of about dialog box.
-->
@@ -47,7 +47,7 @@
- DelphiDabbler CodeSnip is copyright © 2005-2023 by CodeSnip is copyright © 2005-2024 by Peter D Johnson.
From 6d33c8df7b5d3b97b7f3f55e61303a2b94fbcdca Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Thu, 4 Apr 2024 01:46:59 +0100
Subject: [PATCH 050/144] Add version number to program caption
Program release version number now displayed in the main form caption.
Fixes #122
---
Src/UAppInfo.pas | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
diff --git a/Src/UAppInfo.pas b/Src/UAppInfo.pas
index eacc0d65d..37958f245 100644
--- a/Src/UAppInfo.pas
+++ b/Src/UAppInfo.pas
@@ -3,7 +3,7 @@
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/
*
- * Copyright (C) 2005-2021, Peter Johnson (gravatar.com/delphidabbler).
+ * Copyright (C) 2005-2024, Peter Johnson (gravatar.com/delphidabbler).
*
* Class that provides information about the application.
}
@@ -36,12 +36,6 @@ TAppInfo = class(TNoConstructObject)
const ProgramName = 'CodeSnip-p';
{$ENDIF}
{Name of program}
- {$IFNDEF PORTABLE}
- const ProgramCaption = 'CodeSnip 4';
- {$ELSE}
- const ProgramCaption = 'CodeSnip 4 (Portable Edition)';
- {$ENDIF}
- {Name of program displayed in main window and task bar caption}
const FullProgramName = CompanyName + ' ' + ProgramName;
{Full name of program, including company name}
const ProgramID = 'codesnip';
@@ -107,6 +101,10 @@ TAppInfo = class(TNoConstructObject)
{Gets version number of program's executable file.
@return Version number as dotted quad.
}
+ class function ProgramCaption: string;
+ {Gets the program caption to be displayed in main window,
+ @return Required caption,
+ }
end;
@@ -214,6 +212,19 @@ class function TAppInfo.HelpFileName: string;
Result := AppExeDir + '\CodeSnip.chm';
end;
+class function TAppInfo.ProgramCaption: string;
+var
+ ProductVer: TVersionNumber;
+begin
+ ProductVer := TVersionInfo.ProductVerNum;
+ Result := Format(
+ 'CodeSnip v%d.%d.%d', [ProductVer.V1, ProductVer.V2, ProductVer.V3]
+ );
+ {$IFDEF PORTABLE}
+ Result := Result + ' (Portable Edition)'
+ {$ENDIF}
+end;
+
class function TAppInfo.ProgramFileVersion: string;
{Gets version number of program's executable file.
@return Version number as dotted quad.
From b0d0726d6ae953adc42253a81d0be7f94f57b4a9 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Thu, 4 Apr 2024 01:57:02 +0100
Subject: [PATCH 051/144] Fix full program name used by portable edition
The full program name is now always "DelphiDabbler CodeSnip", regardless
of the edition. Previously the name was "DelphiDabbler CodeSnip-p" on
the portable edition.
Fixes #130
---
Src/UAppInfo.pas | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Src/UAppInfo.pas b/Src/UAppInfo.pas
index 37958f245..7bc91fd6e 100644
--- a/Src/UAppInfo.pas
+++ b/Src/UAppInfo.pas
@@ -36,7 +36,7 @@ TAppInfo = class(TNoConstructObject)
const ProgramName = 'CodeSnip-p';
{$ENDIF}
{Name of program}
- const FullProgramName = CompanyName + ' ' + ProgramName;
+ const FullProgramName = CompanyName + ' CodeSnip';
{Full name of program, including company name}
const ProgramID = 'codesnip';
{Machine readable identifier of program}
From 6d7a9925160333c8f2d50cec412696c74b9bcf77 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Thu, 4 Apr 2024 02:23:33 +0100
Subject: [PATCH 052/144] Fix REML documentation and help topic
* REML docs in Docs/Design/reml.html has duplicate ¢ character
entity entry.
* REML help topic was never updated for the new ' character entity.
Fixes #131
---
Docs/Design/reml.html | 4 ----
Src/Help/HTML/reml.htm | 4 ++++
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Docs/Design/reml.html b/Docs/Design/reml.html
index b945f4332..43adc650f 100644
--- a/Docs/Design/reml.html
+++ b/Docs/Design/reml.html
@@ -524,10 +524,6 @@
° |
° |
-
- ¢ |
- ¢ |
-
« |
« |
diff --git a/Src/Help/HTML/reml.htm b/Src/Help/HTML/reml.htm
index f66afea9d..3b6753a59 100644
--- a/Src/Help/HTML/reml.htm
+++ b/Src/Help/HTML/reml.htm
@@ -353,6 +353,10 @@
¿ |
¿ |
+
+ ' |
+ ' |
+
From 0fb7ce6de170769f3f7aa102375ce8d533fda714 Mon Sep 17 00:00:00 2001
From: delphidabbler <5164283+delphidabbler@users.noreply.github.com>
Date: Mon, 8 Apr 2024 08:04:27 +0100
Subject: [PATCH 053/144] Rewrite Docs/Design/reml.html
Docs/Design/reml.html now contains a brief overview of REML and links to
documentation in the new delphidabbler/reml repository for a full
language definition.
---
Docs/Design/reml.html | 537 ++----------------------------------------
1 file changed, 20 insertions(+), 517 deletions(-)
diff --git a/Docs/Design/reml.html b/Docs/Design/reml.html
index 43adc650f..fb8b0ce15 100644
--- a/Docs/Design/reml.html
+++ b/Docs/Design/reml.html
@@ -19,7 +19,7 @@
-
+
@@ -219,450 +116,56 @@