Aktuelle Zeit: 12.07.2020 22:19

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Flags benennen
BeitragVerfasst: 01.12.2006 18:45 
Offline

Registriert: 14.09.2004 21:39
Kann sich mit 100%iger Sicherheit jeder selber machen, aber da ich schon dabei bin, stelle ich das mal in die Gunst der generellen Faulheit:

Mit dem kleinen Code lassen sind Flags/Werten Strings zuweisen, die dann z.b. kombiniert als String mit allen enthaltenen Stringbezeichnungen ausgegeben werden kann. Macht sich ganz praktisch, wenn man z.b. bei *.ini-Dateien Tastenbelegungen anhand von Strings erkennen will, o.ä.

Code:
Structure __UF_userflag
  name$
  flag.l
EndStructure

Global NewList __UF_userflags.__UF_userflag()

Procedure UFRegister(userflag.l, flagname$)
  AddElement(__UF_userflags())
  __UF_userflags()\flag = userflag
  __UF_userflags()\name$ = flagname$
  ProcedureReturn ListIndex(__UF_userflags())
EndProcedure

Procedure UFUnregisterFlagByFlag(userflag.l)
  ForEach __UF_userflags()
    If __UF_userflags()\flag = userflag
      DeleteElement(__UF_userflags())
      ProcedureReturn #True
    EndIf
  Next
  ProcedureReturn #False
EndProcedure

Procedure UFIsFlag(userflag.l)
  ForEach __UF_userflags()
    If __UF_userflags()\flag = userflag
      ProcedureReturn ListIndex(__UF_userflags())
    EndIf
  Next
  ProcedureReturn -1
EndProcedure

Procedure UFIsName(flagname$)
  ForEach __UF_userflags()
    If __UF_userflags()\name$ = flagname$
      ProcedureReturn ListIndex(__UF_userflags())
    EndIf
  Next
  ProcedureReturn -1
EndProcedure

Procedure.s UFGetFlagString(userflag.l)
  ForEach __UF_userflags()
    If __UF_userflags()\flag = userflag
      ProcedureReturn __UF_userflags()\name$
    EndIf
  Next
EndProcedure

Procedure.s UFGetFlagStrings(userflag.l, seperator$)
  Protected flagstrings$, nonfirstflag.b
  ForEach __UF_userflags()
    If __UF_userflags()\flag & userflag
      If nonfirstflag = #True
        flagstrings$ + (seperator$ + __UF_userflags()\name$)
      Else
        flagstrings$ + __UF_userflags()\name$
        nonfirstflag = #True
      EndIf
    EndIf
  Next
  ProcedureReturn flagstrings$
EndProcedure

Procedure UFGetFlagByName(flagname$)
  ForEach __UF_userflags()
    If __UF_userflags()\name$ = flagname$
      ProcedureReturn __UF_userflags()\flag
    EndIf
  Next
EndProcedure

Procedure.s UFGetNameByFlag(userflag)
  ForEach __UF_userflags()
    If __UF_userflags()\flag = userflag
      ProcedureReturn __UF_userflags()\name$
    EndIf
  Next
EndProcedure

#FLAG_k = 1
#FLAG_t = 2
#FLAG_x = 4
#FLAG_b = 8
#FLAG_h = 16

UFRegister(#FLAG_k, "kabeljau")
UFRegister(#FLAG_t, "thunfisch")
UFRegister(#FLAG_x, "xanadu")
UFRegister(#FLAG_b, "bär")
UFRegister(#FLAG_h, "hengst")

UFUnregisterFlagByFlag(#FLAG_t)

Debug "buby ist auf platz " + Str(UFIsName("bär"))
Debug "buby hat die nummer " + Str(UFGetFlagByName("bär"))
Debug "nummer " + Str(#FLAG_b) + " ist ein " + UFGetNameByFlag(#FLAG_b)
Debug UFGetFlagStrings(#FLAG_x|#FLAG_h|#FLAG_t|#FLAG_k, " - ")


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye