Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Setting-variabelen in 1 unit of meerdere?

Pagina: 1
Acties:

  • Boss
  • Registratie: September 1999
  • Laatst online: 09:26

Boss

+1 Overgewaardeerd

Topicstarter
Ik ben bezig met een vrij fors framework. Op basis van dat framework worden momenteel diverse applicaties gemaakt. Al deze applicaties delen gezamelijk een OO model en een aantal interface componenten. Het gaat hier niet om web-apps, maar een Delphi desktop applicaties.

Nu hebben deze applicaties allemaal hun eigen instelling (preferences etc) die opgeslagen gaan worden. Voor het opslaan wil ik gebruik maken van ini-files. Een deel van settings is generiek en geldig voor alle applicaties. Een ander deel is specifiek voor 1 of 2 applicaties. Het opslaan van de settings kan allemaal in 1 ini file. Ik twijfel momenteel over waar ik de bijbehorende variabelen ga declareren.

Aan de ene kant lijkt het me makkelijk om 1 unit te hebben met alle mogelijke settings. In die unit zijn alle settings gedeclareerd als variabele, en code voor lezen/schrijven van de ini file. Alle applicaites gebruiken die unit, en ze vinden zelf wel wat ze nodig hebben. Ook de niet-nodige variabelen zijn dan gedeclareerd en aanwezig.

Aan de andere kant is het ook netjes om de variabelen daar op te slaan waar ze nodig zijn, dus in de bijbehorende units. Alleen komt er dan door alle units heen code voor het lezen/schrijven van de ini file.

Wie heeft hier een mening over, en wellicht een stukje ervaring?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 19-11 13:44

Spockz

Live and Let Live

Je kunt natuurlijk de basisclass voor het schrijven naar en het lezen van de ini maken waarbij je vervolgens voor elke applicatie een nieuwe settings class maakt die de eerste class inherit. Dan heb je de read/write code nog maar op 1 plek staan en heb je toch alleen de nodige properties in je settings class voor je applicatie.

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


Verwijderd

Ik zou hier niet allerlei globale variabelen voor gaan declareren, maar 1 TStringList(-afgeleide).
Via TIniFile.ReadSections vul je die met de sections van je inifile, vervolgens hang je aan iedere section een nieuwe TStringList die je met TIniFile.ReadSection vult met de key/value pairs van die section.
Daarna implementeer je een paar methods als GetValue(const ASection, AKey: string), SetValue(const ASection, AKey: string), en een UpdateIniFile routine.

Binnen de applicaties/plugins zelf kun je dan de settings voor die app wel cachen en omzetten naar het juiste type (wanneer je weet dat een setting een integer is, wil je niet steeds StrToIntDef gebruiken), maar dat blijft dan netjes app/plugin specifiek.

  • Boss
  • Registratie: September 1999
  • Laatst online: 09:26

Boss

+1 Overgewaardeerd

Topicstarter
De methode van Afterlife klinkt wel logisch. Vooral het cachen moeten we dan even goed over nadenken, want een groot deel van de variabelen gaat in een aantal algorithmes gebruikt worden.

We hebben wel min of meer besloten een soort master ini file te maken waarin alle voorkomende variabelen opgeslagen worden. Per applicatie kan daar eventueel een kopie van worden gemaakt met alleen de benodigde settings.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Mocht je bij je master ini file overigens tegen de 64K grens voor ini files onder Windows aanlopen, kijk dan 's naar de inifiles unit van FreePascal (te vinden in de fcl.source.zip library. Deze kan theoretisch ini files van 2GB aan, maar in de praktijk is 't vooral afhankelijk van je hoeveelheid RAM (de ini file wordt in memory gehouden).
Die unit is 100% Delphi compatible, sterker nog: ik heb 'm toen in Delphi 5 ontwikkeld.

Wel geinig trouwens dat die unit na 7 jaar nog steeds vrijwel ongewijzigd deel uitmaakt van de FreePascal FCL. ;)

  • Boss
  • Registratie: September 1999
  • Laatst online: 09:26

Boss

+1 Overgewaardeerd

Topicstarter
Als 't werkt: niet aankomen :)

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1