OutputVar := MfEnum.ParseItem(enumType, value)
OutputVar := MfEnum.ParseItem(enumType, value, ignoreCase)
Converts the string representation of the name or numeric value of one enumerated constants to an equivalent MfEnum.EnumItem for the enumeration represented by enumType. Case is ignored for the value.
Converts the string representation of the name or numeric value of one enumerated constants to an equivalent MfEnum.EnumItem. for the enumeration represented by enumType. ignoreCase parameter specifies if the operation is case-insensitive
enumType
An enumeration objects type as instance of MfType.
value
A string containing the name or value to convert. Can be var containing string or instance of MfString class.
ignoreCase
true to ignore case; false to regard case. Can be var containing boolean or instance of MfBool class.
Returns an MfEnum.EnumItem instance whose value is represented by value.
Throws MfArgumentNullException
Throws MfArgumentException
Static method
TryParse(), Parse(), TryParseItem()
; read value from ini file
mykey := Mfunc.IniRead("C:\Temp\myfile.ini", "REG", "KEYS_REG_DWORD")
; mykey is expected to contain value of KeysRegDword
; set var initial value to null
outEnumItem := Null
; wrap in try block as ParseItem can throw MfException
try
{
outEnumItem := MfEnum.ParseItem(RegOptEnum.GetType(), myKey)
}
catch e
{
MsgBox, 16, Error, % "There was an error Parsing Item: " . e.Message
Exit, 1
}
; could also be written as: if (RegOptEnum.Instance.KeysRegDword.Value = outEnumItem.Value) {
; as show below
if (RegOptEnum.Instance.KeysRegDword.Equals(outEnumItem)) {
MsgBox, 64, Found Defaut, The Default was found.
}
; same as above could be written as: if (RegOptEnum.Instance.KeysRegDword.Equals(outEnumItem)) {
; as shown above
if (RegOptEnum.Instance.KeysRegDword.Value = outEnumItem.Value) {
MsgBox, 64, Found Defaut, The Default was found.
}
; display a message if not equal to KeysRegDword
if (RegOptEnum.Instance.KeysRegDword.Value != outEnumItem.Value) {
MsgBox, 64, Non-Standard, % "Found no standard value: " . outEnumItem.Name
}
ExitApp
; create a new enumeration class by inheriting/extending the MfEnum
class RegOptEnum extends MfEnum
{
static m_Instance := MfNull.Null
__New(args*)
{
if (this.base.__Class != "RegOptEnum")
{
throw new MfNotSupportedException(MfEnvironment.Instance.GetResourceString("NotSupportedException_Sealed_Class"
,"RegOptEnum"))
}
base.__New(args*)
; set MfObject m_isInherited flag for testing if Class is inherited/extended if needed
; This could be set to false as this class cannot be inherited/extended as set in this constructor above
; but will do it the standard way.
this.m_isInherited := this.__Class != "RegOptEnum"
}
; override the base AddEnums, this is required
; add all the enum values for your enum here
AddEnums() {
this.AddEnumValue("RegDword", 0)
this.AddEnumValue("KeysRegDword", 1)
this.AddEnumValue("RegSz", 2)
this.AddEnumValue("KeysRegSz", 3)
this.AddEnumValue("RegBinary", 4)
this.AddEnumValue("KeysRegBinary", 5)
this.AddEnumValue("AutoresponseRegSz", 6)
this.AddEnumValue("KeysAutoresponseRegSz", 7)
this.AddEnumValue("AutoupdateRegSz", 8)
this.AddEnumValue("KeysAutoupdateRegSz", 9)
this.AddEnumValue("AutoupdateRegBinary", 10)
this.AddEnumValue("KeysAutoupdateRegBinary", 11)
this.AddEnumValue("KeypathsRegSz", 12)
this.AddEnumValue("KeysKeypathsRegSz", 13)
this.AddEnumValue("KeypathsRegDword", 14)
this.AddEnumValue("KeysKeypathsRegDword", 15)
this.AddEnumValue("WindowplacementRegBinary", 16)
this.AddEnumValue("KeysWindowplacementRegBinary", 17)
}
; override the base DestroyInstance, this is required
DestroyInstance() {
RegOptEnum.m_Instance := Null
}
; override the base GetInstance, this is required
; Get a static default instance, create if not exist yet
GetInstance() {
if (MfNull.IsNull(RegOptEnum.m_Instance))
{
RegOptEnum.m_Instance := new RegOptEnum(0)
}
return RegOptEnum.m_Instance
}
}