; --------------------------------------------------------------------------------------------; Copyright (c) Fantaisie Software. All rights reserved.; Dual licensed under the GPL and Fantaisie Software licenses.; See LICENSE and LICENSE-FANTAISIE in the project root for license information.; --------------------------------------------------------------------------------------------;; General purpose (not debugger/ide specific) functions to modify a Preference file; without loading all its keys individually;;Structure PreferenceModify_EntryGroup$Key$Value$IsSaved.l ; flag for the saving processEndStructureGlobal NewList PreferenceModify_List.PreferenceModify_Entry()Global PreferenceModify_Group$; loads a preference file into a list; you can then modify & add keys and groups;Procedure PreferenceModify_Load(FileName$)File = ReadFile(#PB_Any, FileName$)If FileClearList(PreferenceModify_List())Group$ = ""While Eof(File) = 0Line$ = RTrim(ReadString(File))If Left(Line,ドル 1) = ";" Or Line$ = "" ; comments, do nothingElseIf Left(Line,ドル 1) = "[" And FindString(Line,ドル "]", 1) <> 0 ; group nameGroup$ = Mid(Line,ドル 2, FindString(Line,ドル "]", 1)-2)ElseIf FindString(Line,ドル "=", 1) <> 0 ; key, otherwise invalid entrypos = FindString(Line,ドル "=", 1)AddElement(PreferenceModify_List())PreferenceModify_List()\Group$ = Group$PreferenceModify_List()\Key$ = Trim(Left(Line,ドル pos-1))PreferenceModify_List()\Value$ = Right(Line,ドル Len(Line$)-pos)If Left(PreferenceModify_List()\Value,ドル 1) = " " ; usually like this: "Key = Value"PreferenceModify_List()\Value$ = Right(PreferenceModify_List()\Value,ドル Len(PreferenceModify_List()\Value$)-1)EndIfEndIfWendPreferenceModify_Group$ = ""CloseFile(File)ProcedureReturn 1ElseProcedureReturn 0EndIfEndProcedure; saves the currently loaded list into FileName$;Procedure PreferenceModify_Save(FileName$)If CreatePreferences(FileName$); first we must output all with an empty group!; also set the IsSaved flag correctly;ForEach PreferenceModify_List()If PreferenceModify_List()\Group$ = ""WritePreferenceString(PreferenceModify_List()\Key,ドル PreferenceModify_List()\Value$)PreferenceModify_List()\IsSaved = 1ElsePreferenceModify_List()\IsSaved = 0EndIfNext PreferenceModify_List(); now output all the groups;ForEach PreferenceModify_List()If PreferenceModify_List()\IsSaved = 0 ; only process unsaved entries; start a new groupGroup$ = PreferenceModify_List()\Group$PreferenceComment("") ; do an empty line before a new groupPreferenceGroup(Group$)WritePreferenceString(PreferenceModify_List()\Key,ドル PreferenceModify_List()\Value$)PreferenceModify_List()\IsSaved = 1; search all entries with the same group*Current = @PreferenceModify_List()While NextElement(PreferenceModify_List())If UCase(PreferenceModify_List()\Group$) = UCase(Group$)WritePreferenceString(PreferenceModify_List()\Key,ドル PreferenceModify_List()\Value$)PreferenceModify_List()\IsSaved = 1EndIfWend; continue searching for the next unsaved groupChangeCurrentElement(PreferenceModify_List(), *Current)EndIfNext PreferenceModify_List()ClosePreferences()ProcedureReturn 1ElseProcedureReturn 0EndIfEndProcedure; select the PreferenceGroup() to edit;Procedure PreferenceModify_Group(Group$)PreferenceModify_Group$ = Group$EndProcedure; shared procedures, only used by this file;Procedure _PreferenceModify_FindKey(Key$); search the list;ForEach PreferenceModify_List()If UCase(PreferenceModify_List()\Group$) = UCase(PreferenceModify_Group$) And UCase(PreferenceModify_List()\Key$) = UCase(Key$)ProcedureReturn 1; found the key, Return successEndIfNext PreferenceModify_List(); not foundProcedureReturn 0EndProcedureProcedure _PreferenceModify_FindOrAddKey(Key$)If _PreferenceModify_FindKey(Key$) = 0; not found, add a new oneLastElement(PreferenceModify_List())AddElement(PreferenceModify_List())PreferenceModify_List()\Group$ = PreferenceModify_Group$PreferenceModify_List()\Key$ = Key$EndIfEndProcedureProcedure PreferenceModify_SetLong(Key,ドル Value.l)_PreferenceModify_FindOrAddKey(Key$)PreferenceModify_List()\Value$ = Str(Value)EndProcedureProcedure PreferenceModify_SetFloat(Key,ドル Value.f)_PreferenceModify_FindOrAddKey(Key$)PreferenceModify_List()\Value$ = StrF(Value)EndProcedureProcedure PreferenceModify_SetString(Key,ドル Value$)_PreferenceModify_FindOrAddKey(Key$)PreferenceModify_List()\Value$ = Value$EndProcedureProcedure PreferenceModify_GetLong(Key,ドル DefValue.l)If _PreferenceModify_FindKey(Key$)ProcedureReturn Val(PreferenceModify_List()\Value$)ElseProcedureReturn DefValueEndIfEndProcedureProcedure.f PreferenceModify_GetFloat(Key,ドル DefValue.f)If _PreferenceModify_FindKey(Key$)ProcedureReturn ValF(PreferenceModify_List()\Value$)ElseProcedureReturn DefValueEndIfEndProcedureProcedure.s PreferenceModify_GetString(Key,ドル DefValue$)If _PreferenceModify_FindKey(Key$)ProcedureReturn PreferenceModify_List()\Value$ElseProcedureReturn DefValue$EndIfEndProcedureProcedure PreferenceModify_IsKey(Key$)ProcedureReturn _PreferenceModify_FindKey(Key$)EndProcedureProcedure PreferenceModify_DeleteKey(Key$)If _PreferenceModify_FindKey(Key$)DeleteElement(PreferenceModify_List())EndIfEndProcedure
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。