Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
9. Apr 2009
Beim Casten mußt du einfach nur einen Typen gleicher Größe haben ... also einem, der dann SizeOf(TFontStyles) entspricht.
das kann auch ein Record oder StaticArray sein.
Type T = Array of Byte;
P = ^T;
Count := 0;
For i := 0 to SizeOf(Typ) do
Count := Count + ZähleBitsInByte(P(@TypVar));
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
9. Apr 2009
drum schrieb ich, wenn zwischendurch nix fehlt!
type
TFontStyle = (fsBold, fsItalic, fsStrikeOut, fsUnderline=15);
TFontStyles = set of TFontStyle;
procedure Test(const Styles: TFontStyles);
var
anzahlAttribute: Integer;
begin
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
8. Apr 2009
@axel: dafür brauchst du aber auch eine "aktuelle" Variable/Konstante.
deine Funktion + diese Definition (ähnliches gilt auch für die anderen Zählfunktionen) würde hier 8 liefern und nicht 4.
type
TFontStyle = (fsBold=0, fsItalic=1, fsStrikeOut=6, fsUnderline=7);
TFontStyles = set of TFontStyle;
x := CountStyles();
// oder
x := CountStyles();
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
8. Apr 2009
das mit dem in klappt nur, wenn man über eine Konstante geht und die will auch aktuell gehalten werden.
sowas wäre möglich, aber auch nur, wenn die Elemente durchgängig belegt sind und zwischendurch Keine fehlen.
Count := Ord(High(TFontStyle)) - Ord(Low(TFontStyle)) + 1;