BlitzCoder Essentials
•
Home Page
•
About BlitzCoder
•
Contributors
•
Terms of Use
•
Email Us
Main Areas
•
BlitzCoder Chat
•
Discussions
•
Articles/Tutorials
•
Code Database
•
Link Database
•
Showcase Area
•
Worklogs
•
Competitions
Special Areas
•
Undocumented
Other Blitz Sites
•
Blitz Basic Home
•
Blitz Showcase
•
BlitzPlay Library
Forum Login
Username:
Password:
•
Register Now!
BlitzCoder Code Archives Page
Main Codes Page
"Preferences (revised)"
, by poedboy
Basic include for loading and retrieving values from a file to be used as settings in your blitz apps.
Code
;********************************************************************* ;Name: Preferences.bb (revisited and revised) ;Author: POedBoy ;Date: 4:46 AM 8/18/2004 ; ;Summary: A simple to use include that allows you to store and retrieve various ;settings from your blitz programs. Quick and dirty :) ; ;Usage: ; ; CreatePrefs() - Returns a new Preferences group ; ; FreePrefs(PrefFile%) - Frees up a Prefrences group. Make sure to use this when done. ; ; SavePrefs(PrefFile%,Filename$) - Saves a prefs group to disk ; ; LoadPrefs(Filename$) - Loads and returns a preferences group if successful. ; ; AddPref(PrefFile%,Name$,Value$="") - Adds a new, named preference to a parent group ; ; RemovePref(PrefFile%,Name$) - removes and frees the named preference from the group ; ; SetPref(PrefFile%,Name$,Value$="") - sets the value of the named preference ; ; GetPref$(PrefFile%,Name$) - retrieves the value of the named preference ; ; ;Notes: Loader ignores blank lines, or commented out lines. SemiColon(;) must be placed at ;beginning of line to comment out! ; ;Support for comments is limited at best-- SavePrefs overwrites the given filename(if the ; file exists). In short, don't expect to save your comments from a loaded file. ; ;Pref names *ARE* Case Sensitive! ; ;********************************************************************* ;========================================================================================== ;TYPES ;========================================================================================== Type PrefFile ;list nav Field FirstPref.Pref,LastPref.Pref End Type Type Pref Field Name$,Value$ ;list nav Field Parent.PrefFile Field BeforePref.Pref,AfterPref.Pref End Type ;========================================================================================== ;FUNCTIONS ;========================================================================================== Function CreatePrefs() Return Handle(New PrefFile) End Function Function FreePrefs(PrefFile%) Local pf.PrefFile=Object.PrefFile(PrefFile),p.Pref=pf\FirstPref,AfterPref.Pref ;free children While p<>Null AfterPref=p\AfterPref Delete p p=AfterPref Wend ;free parent Delete pf End Function Function LoadPrefs(Filename$) Local File%,Txt$,Pos%,pf%=Handle(New PrefFile) If FileType(Filename)<>1 Then Return File=ReadFile(Filename$) While Not Eof(File) Txt$=ReadLine(File) ;if not blank or a comment, then attempt to parse... If Txt$<>"" And Left(Txt$,1)<>";" ;search for assignment op Pos=Instr(Txt,"=") If Pos>0 Then AddPref(pf,Left(Txt,Pos-1),Right(Txt,Len(Txt)-Pos)) EndIf Wend CloseFile File Return pf End Function Function SavePrefs(PrefFile%,Filename$) Local File%=WriteFile(Filename$),pf.PrefFile=Object.PrefFile(PrefFile),p.Pref=pf\FirstPref ;save While p<>Null WriteLine File,p\Name+"="+p\Value p=p\AfterPref Wend CloseFile File Return True End Function Function AddPref(PrefFile%,Name$,Value$="") Local pf.PrefFile=Object.PrefFile(PrefFile),p.Pref=New Pref ;assign p\Name=Name : p\Value=Value ;link If pf\FirstPref=Null pf\FirstPref=p Else p\BeforePref=pf\LastPref pf\LastPref\AfterPref=p EndIf pf\LastPref=p p\Parent=pf End Function Function RemovePref(PrefFile%,Name$) Local pf.PrefFile=Object.PrefFile(PrefFile),p.Pref=FindPref(pf,Name$) If p=Null Then Return False ;unlink and fix peers If p\BeforePref<>Null Then p\BeforePref\AfterPref=p\AfterPref If p\AfterPref<>Null Then p\AfterPref\BeforePref=p\BeforePref ;...fix parent If pf\FirstPref=p Then pf\FirstPref=p\AfterPref If pf\LastPref=p Then pf\LastPref=p\BeforePref Delete p End Function Function SetPref(PrefFile%,Name$,Value$="") Local p.Pref=FindPref(Object.PrefFile(PrefFile),Name$) If p<>Null p\Value=Value Return True EndIf End Function Function GetPref$(PrefFile%,Name$) Local p.Pref=FindPref(Object.PrefFile(PrefFile),Name$) If p<>Null Return p\Value EndIf End Function ;**INTERNAL FUNCTIONS================================================================ Function FindPref.Pref(Parent.PrefFile,Name$) Local p.Pref=Parent\FirstPref.Pref While p<>Null If p\Name=Name Then Return p Else p=p\AfterPref Wend End Function
Copyright(c) 2000-2004, BlitzCoder. All Rights Reserved.
Code software created by Krylar's Kreations