This will load settings from the commandline and a settings file, and will save the settings file.
Use parameters like this:
+settingname settingvalue +setting2 anothervalue -setting3
This results like this:
settingname=settingvalue
setting2=anothervalue
setting3=1
Then you retrieve the settings to your app like this:
SomeSetting=TAppSetting.get("SomeSetting")
MaximizeWindow=Int(TAppSetting.get("MaximizeWindow",MaximizeWindow))
And calling TAppSetting.save() will save all settings.
Use parameters like this:
+settingname settingvalue +setting2 anothervalue -setting3
This results like this:
settingname=settingvalue
setting2=anothervalue
setting3=1
Then you retrieve the settings to your app like this:
SomeSetting=TAppSetting.get("SomeSetting")
MaximizeWindow=Int(TAppSetting.get("MaximizeWindow",MaximizeWindow))
And calling TAppSetting.save() will save all settings.
TAppSetting.ParseCommandline Type TAppSetting Global filename$=StripExt(AppFile)+".cfg" Global list:TList=New TList Field link:TLink Field name$ Field value$ Field flags Method New() link=list.addlast(Self) EndMethod Function Get$(name$,defaultvalue$="") name=Trim(name) defaultvalue=Trim(defaultvalue) For appsetting:TAppSetting=EachIn list If Lower(appsetting.name)=Lower(name) Return appsetting.value EndIf Next If defaultvalue<>"" appsetting:TAppSetting=New TAppSetting appsetting.name=name appsetting.value=defaultvalue EndIf Return defaultvalue EndFunction Function Set(name$,value$) name=Trim(name) value=Trim(value) For appsetting:TAppSetting=EachIn TAppSetting.list If Lower(appsetting.name)=Lower(name) If defaultvalue="" appsetting.name="" appsetting.value="" RemoveLink appsetting.link appsetting.link=Null Return Else appsetting.value=value Return EndIf EndIf Next If defaultvalue<>"" appsetting:TAppSetting=New TAppSetting appsetting.name=name appsetting.value=value EndIf EndFunction Function Load:Int() stream:TStream=ReadFile(filename) If Not stream Return False While Not stream.eof() s$=Trim(stream.readline()) If s<>"" set piece(s,1,"="),remove(piece(s,2,"="),Chr(34)) Wend stream.close() Return True EndFunction Function Save:Int() stream:TStream=WriteFile(filename) If Not stream Return False For appsetting:TAppSetting=EachIn list stream.writeline appsetting.name+"="+Chr(34)+appsetting.value+Chr(34) Next stream.close() Return True EndFunction Function ParseCommandline() Local cl$ For n=1 To AppArgs.length-1 arg$=AppArgs[n] Select Left(arg,1) Case "+" If n<AppArgs.length-1 TAppSetting.set(Right(arg,Len(arg)-1),Trim(AppArgs[n+1])) n=n+1 EndIf Case "-" TAppSetting.set(Right(arg,Len(arg)-1),"1") Default TAppSetting.set("command",arg) EndSelect Next EndFunction EndType