Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#15

AW: Wie iteriere ich durch eine Menge?

  Alt 22. Aug 2013, 19:38
Nicht schön aber selten... Bei neueren Delphi-Versionen muß man die Byte-typen evtl. durch Word ersetzen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   Shift : TShiftState;
   bMin, bMax : Byte;
   bShift : Byte;
   b : Byte;
   s : string;
begin
   // das hier wollen wir untersuchen
   Shift := [ssAlt, ssCtrl, ssShift];
   // Umwandeln damit's geht. Hier der Einfachheit halber fest als Byte, sonst über OrdType unterscheiden
   bShift := byte(Shift);
   // Über TypInfo den Bereich holen
   bMin := GetTypeData(GetTypeData(TypeInfo(TShiftState))^.CompType^)^.MinValue;
   bMax := GetTypeData(GetTypeData(TypeInfo(TShiftState))^.CompType^)^.MaxValue;
   // Iterieren über das Set
   for b := bMin to bMax do
   begin
      // Ist das drin?
      if bShift and (1 shl b) <> 0 then
         // Dann Namen holen
         s := s + ' '+ GetEnumname(GetTypeData(TypeInfo(TShiftState))^.CompType^, b);
   end;
   ShowMessage(s);
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat