Njaaaaaaaaaa, ...
Boolean und auch ByteBool sind Beide bloß je 1 Byte groß (das Eine mit $01 und das Andere mit -1 aka $FF standardmäßig als "True"),
aber wenn EnumSystemCodePages das aber als BOOL aka LongBool auswertet, dann könnte es passieren, dass es eine Fehlerkennung gibt.
Wenn die Rückgabe wirklich nur das erste Byte (AL) und nicht das komplette Register (EAX) auf 0 setzt.
z.B. in den höheren Bytes steht irgendwas mit <> 0, es wird nur das erste Byte auf False (0) gesetzt, dann bliebe es
insgesamt dennoch auf True (<>0)
PS: Da hier die ganze Klasse "statisch" ist und es praktisch nie eine Instanz gibt,
könnte man sich überlegen, eine Warnung vom Compiler zu benutzen, falls doch irgendwo im Code versucht wird eine Instanz zu erstellen.
"class static" oder Sowas gibt es nicht, aber "class abstract" sollte auch helfen. (WOBEI es das grade irgendwie nicht macht
)
* class abstract = diese Klasse muß erst abgeleitet werden, bevor man davon eine Instanz erstellen darf
* class sealed = ich bin der Letzte ... von mir das niemand mehr ableiten
https://docwiki.embarcadero.com/RADS...jekte_(Delphi)
Wie wenn man ausversehn versucht ein TStream.Create oder TStrings.Create zu machen, anstatt z.B. TFileSteam oder TStringList,
wo der Compiler dir eine Abstract-Warnun um die Ohren haut.
Delphi-Quellcode:
type
TTest = class abstract
private
class var Abc: Integer;
public
class procedure Test; {mit oder ohne static}
end;
procedure TForm25.FormCreate(Sender: TObject);
begin
TTest.Test; // geht
{var X :=} TTest.Create; // hier sollte der Compiler eigentlich meckern (dachte ich)
end;
Für reine "statischen" Klassen verwende ich inzwischen auch stattdessen gern Records.
Delphi-Quellcode:
type
TTest = record
private {PS: protected und published gibt es hier nicht}
class var FAbc: Integer;
public
class procedure Test; static;
end;
Und die "class var" mache ich bei mir als eigenständigen "Block" (finde es für mich so übersichtlicher)
Delphi-Quellcode:
TTest = record {aber auch bei class}
private class var
FAbc: Integer;
private {"private var" wäre hier auch bmöglich}
FDef: Integer;
public
class procedure Test; static;
end;