Es liegt wohl an Projekt > Optionen > Erzeugen > Delphi Compiler > Linken > Untersystem Versionsfelder in
PE Header. In Delphi 11 5.0 statt 6.0. setzen und Delphi 11 rechnet wie früher.
Ich habe das mal auf ein simples Konsolenprogramm heruntergebrochen:
Delphi-Quellcode:
program TestSystemMetrics;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
Winapi.Windows;
begin
try
Writeln(GetSystemMetrics(SM_CXSIZEFRAME).ToString);
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
Readln;
end.
Unter Delphi 10.4.2 wird hier 8 ausgegeben, während Delphi 11 eine 4 ausspuckt.
Die Änderung des besagten
PE-Eintrags von 6.0 auf 5.0 in Delphi 11 ergibt dann in der Tat eine 8, während eine Änderung von 5.0 auf 6.0 das Ergebnis in Delphi 10.4.2 erwartungsgemäß auf 4 ändert.
Da es sich um eine Konsolenanwendung ohne eingebundene Resource und somit auch ohne Manifest handelt, fällt auch die DPI-Awareness als Beteiligte aus.
Erklären kann ich dieses Verhalten nicht und eine Dokumentation dafür konnte ich auch nicht finden. Es ist aber vermutlich schon seit einigen Delphi-Versionen so. Auf die Schnelle ließ sich das hier auch mit Delphi 10.1 Berlin reproduzieren.