Hallo.
Ich würde nicht auf logFont.lfPitchAndFamily schreiben. Das könnte irgendwelche unerwünschten Effekte haben. Besser mal in eine Variable.
Am besten gibst du logFont.lfPitchAndFamily einmal zu Testzwecken aus und analysierst durch Umrechnung Dez -> 8'Bin, ob die Bytes 4..7 wie in der
MSDN beschrieben wirklich den korrekten Wert haben (Vergleich mit den Konstanten).
Ich habe mit shr und shl noch nie gearbeitet. Bist du dir sicher, dass wenn du "shr 4" schreibst, auch auf die Bytes 4..7 kommt? Müsstest du nicht nach links schieben?
Außer: Wenn du an die Bytes 4..7, also die "zweite" Hälfte möchtest, kannst du doch gleich Lo() verwenden. Wäre einfacher.
Delphi-Quellcode:
if GetObject(Form3.Label7.Font.Handle, SizeOf(LogFont), @LogFont) <> 0 then
begin
case Lo(logFont.lfPitchAndFamily) of
FF_DONTCARE: neufamilie:='fnil';
FF_ROMAN: neufamilie:='froman';
FF_SWISS: neufamilie:='fswiss';
FF_MODERN: neufamilie:='fmodern';
FF_SCRIPT: neufamilie:='fscript';
FF_DECORATIVE: neufamilie:='fdecor';
end;
neucharset:='\fcharset' + IntToStr(logFont.lfCharset) + ' ';
end;
Gruß
blackdrake