- Settings

From: CFB Software <"CFB>
Date: Wed, 20 Dec 2006 10:14:58 +1030

----boundary-LibPST-iamunique-626207205_-_-
Content-type: text/plain

> -----Original Message-----
> From: blackbox{([at]})nowhere.xy
> Behalf Of Alexander Iljin
> Sent: Thursday, 30 November 2006 6:37 PM
> To: BlackBox Mailing List
> Subject: [BlackBox] - Settings
>
> Hello!
>
> Is there a standard way in BlackBox for keeping program's settings
> between runs?
> HostRegistry is not a good idea, because it is not portable.
> I'm talking about some sort of configuration files, like ini-files?
> Did anyone work with those? Do you have any modules of subsystems
> you could share?
>
> PS: I know about Dialog.MapString, but I found no predefined way to
> _store_ changed information back into strings resource file.
>
Hi Alexander,

I don't know about a standard way for BlackBox but I've done some work on
this using GPCP and have designed a system that can be interchangeable
between Ini files and Registry keys. The following snippet should give you a
feel for how it works:

VAR
  formHeight: IniFile.IntegerItem;
  formTitle: IniFile.StringItem;
  maximised: IniFile.BooleanItem;
  list: IniFile.List;
  
BEGIN
  NEW(list);
  IniFile.Init(list, 'test.ini');

  (* Associate INI file keys with program variables and default values *)
  list.AddInteger('Form Height', formHeight, 400);
  list.AddString('Form Title', formTitle, 'Test Program');
  list.AddBoolean('Maximised', maximised, TRUE);

  (* Read the contents of the INI file and assign values to the program
variables *)
  list.Load();
..
..
..
  formHeight.value := formHeight.value + 20;
  formTitle.value := formTitle.value + ' v1.0';
  maximised.value := ~ maximised.value;

  (* Write the updated values to the INI file *)
  list.Save();

 
With the above code, if the initial IniFile, 'test.ini', had the contents:

  Form Height = 420
  Maximised = FALSE

After executing the code the IniFile would have the contents:

  Form Height = 440
  Form Title = Test Program v1.0
  Maximised = TRUE

It shouldn't take long to port it to BlackBox - it's mainly the text file IO
that would have to be translated. Let me know if you are interested and I'll
give it a go.

Chris Burrows
CFB Software
http://www.cfbsoftware.com/gpcp

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy


----boundary-LibPST-iamunique-626207205_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS1c
cGFyDQo+IEZyb206IGJsYWNrYm94QG9iZXJvbi5jaCBbbWFpbHRvOmJsYWNrYm94QG9iZXJvbi5j
aF0gT24gXHBhcg0KPiBCZWhhbGYgT2YgQWxleGFuZGVyIElsamluXHBhcg0KPiBTZW50OiBUaHVy
c2RheSwgMzAgTm92ZW1iZXIgMjAwNiA2OjM3IFBNXHBhcg0KPiBUbzogQmxhY2tCb3ggTWFpbGlu
ZyBMaXN0XHBhcg0KPiBTdWJqZWN0OiBbQmxhY2tCb3hdIC0gU2V0dGluZ3NccGFyDQo+IFxwYXIN
Cj4gSGVsbG8hXHBhcg0KPiBccGFyDQo+ICAgSXMgdGhlcmUgYSBzdGFuZGFyZCB3YXkgaW4gQmxh
Y2tCb3ggZm9yIGtlZXBpbmcgcHJvZ3JhbSdzIHNldHRpbmdzXHBhcg0KPiAgIGJldHdlZW4gcnVu
cz9ccGFyDQo+ICAgSG9zdFJlZ2lzdHJ5IGlzIG5vdCBhIGdvb2QgaWRlYSwgYmVjYXVzZSBpdCBp
cyBub3QgcG9ydGFibGUuXHBhcg0KPiAgIEknbSB0YWxraW5nIGFib3V0IHNvbWUgc29ydCBvZiBj
b25maWd1cmF0aW9uIGZpbGVzLCBsaWtlIGluaS1maWxlcz9ccGFyDQo+ICAgRGlkIGFueW9uZSB3
b3JrIHdpdGggdGhvc2U/IERvIHlvdSBoYXZlIGFueSBtb2R1bGVzIG9mIHN1YnN5c3RlbXNccGFy
DQo+ICAgeW91IGNvdWxkIHNoYXJlP1xwYXINCj4gXHBhcg0KPiAgIFBTOiBJIGtub3cgYWJvdXQg
RGlhbG9nLk1hcFN0cmluZywgYnV0IEkgZm91bmQgbm8gcHJlZGVmaW5lZCB3YXkgdG9ccGFyDQo+
ICAgX3N0b3JlXyBjaGFuZ2VkIGluZm9ybWF0aW9uIGJhY2sgaW50byBzdHJpbmdzIHJlc291cmNl
IGZpbGUuXHBhcg0KPiBccGFyDQpIaSBBbGV4YW5kZXIsXHBhcg0KXHBhcg0KSSBkb24ndCBrbm93
IGFib3V0IGEgc3RhbmRhcmQgd2F5IGZvciBCbGFja0JveCBidXQgSSd2ZSBkb25lIHNvbWUgd29y
ayBvblxwYXINCnRoaXMgdXNpbmcgR1BDUCBhbmQgaGF2ZSBkZXNpZ25lZCBhIHN5c3RlbSB0aGF0
IGNhbiBiZSBpbnRlcmNoYW5nZWFibGVccGFyDQpiZXR3ZWVuIEluaSBmaWxlcyBhbmQgUmVnaXN0
cnkga2V5cy4gVGhlIGZvbGxvd2luZyBzbmlwcGV0IHNob3VsZCBnaXZlIHlvdSBhXHBhcg0KZmVl
bCBmb3IgaG93IGl0IHdvcmtzOlxwYXINClxwYXINClZBUlxwYXINCiAgZm9ybUhlaWdodDogSW5p
RmlsZS5JbnRlZ2VySXRlbTtccGFyDQogIGZvcm1UaXRsZTogSW5pRmlsZS5TdHJpbmdJdGVtO1xw
YXINCiAgbWF4aW1pc2VkOiBJbmlGaWxlLkJvb2xlYW5JdGVtO1xwYXINCiAgbGlzdDogSW5pRmls
ZS5MaXN0O1xwYXINCiAgXHBhcg0KQkVHSU5ccGFyDQogIE5FVyhsaXN0KTtccGFyDQogIEluaUZp
bGUuSW5pdChsaXN0LCAndGVzdC5pbmknKTtccGFyDQpccGFyDQogICgqIEFzc29jaWF0ZSBJTkkg
ZmlsZSBrZXlzIHdpdGggcHJvZ3JhbSB2YXJpYWJsZXMgYW5kIGRlZmF1bHQgdmFsdWVzICopXHBh
cg0KICBsaXN0LkFkZEludGVnZXIoJ0Zvcm0gSGVpZ2h0JywgZm9ybUhlaWdodCwgNDAwKTsgIFxw
YXINCiAgbGlzdC5BZGRTdHJpbmcoJ0Zvcm0gVGl0bGUnLCBmb3JtVGl0bGUsICdUZXN0IFByb2dy
YW0nKTtccGFyDQogIGxpc3QuQWRkQm9vbGVhbignTWF4aW1pc2VkJywgbWF4aW1pc2VkLCBUUlVF
KTtccGFyDQpccGFyDQogICgqIFJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBJTkkgZmlsZSBhbmQg
YXNzaWduIHZhbHVlcyB0byB0aGUgcHJvZ3JhbVxwYXINCnZhcmlhYmxlcyAqKVxwYXINCiAgbGlz
dC5Mb2FkKCk7XHBhcg0KLi5ccGFyDQouLlxwYXINCi4uXHBhcg0KICBmb3JtSGVpZ2h0LnZhbHVl
IDo9IGZvcm1IZWlnaHQudmFsdWUgKyAyMDtccGFyDQogIGZvcm1UaXRsZS52YWx1ZSA6PSBmb3Jt
VGl0bGUudmFsdWUgKyAnIHYxLjAnO1xwYXINCiAgbWF4aW1pc2VkLnZhbHVlIDo9IH4gbWF4aW1p
c2VkLnZhbHVlO1xwYXINClxwYXINCiAgKCogV3JpdGUgdGhlIHVwZGF0ZWQgdmFsdWVzIHRvIHRo
ZSBJTkkgZmlsZSAqKVxwYXINCiAgbGlzdC5TYXZlKCk7XHBhcg0KXHBhcg0KIFxwYXINCldpdGgg
dGhlIGFib3ZlIGNvZGUsIGlmIHRoZSBpbml0aWFsIEluaUZpbGUsICd0ZXN0LmluaScsIGhhZCB0
aGUgY29udGVudHM6XHBhcg0KXHBhcg0KICBGb3JtIEhlaWdodCA9IDQyMFxwYXINCiAgTWF4aW1p
c2VkID0gRkFMU0VccGFyDQpccGFyDQpBZnRlciBleGVjdXRpbmcgdGhlIGNvZGUgdGhlIEluaUZp
bGUgd291bGQgaGF2ZSB0aGUgY29udGVudHM6XHBhcg0KXHBhcg0KICBGb3JtIEhlaWdodCA9IDQ0
MFxwYXINCiAgRm9ybSBUaXRsZSA9IFRlc3QgUHJvZ3JhbSB2MS4wXHBhcg0KICBNYXhpbWlzZWQg
PSBUUlVFXHBhcg0KXHBhcg0KSXQgc2hvdWxkbid0IHRha2UgbG9uZyB0byBwb3J0IGl0IHRvIEJs
YWNrQm94IC0gaXQncyBtYWlubHkgdGhlIHRleHQgZmlsZSBJT1xwYXINCnRoYXQgd291bGQgaGF2
ZSB0byBiZSB0cmFuc2xhdGVkLiBMZXQgbWUga25vdyBpZiB5b3UgYXJlIGludGVyZXN0ZWQgYW5k
IEknbGxccGFyDQpnaXZlIGl0IGEgZ28uXHBhcg0KXHBhcg0KQ2hyaXMgQnVycm93c1xwYXINCkNG
QiBTb2Z0d2FyZVxwYXINCmh0dHA6Ly93d3cuY2Zic29mdHdhcmUuY29tL2dwY3BccGFyDQpccGFy
DQotLS0gQmxhY2tCb3hccGFyDQotLS0gc2VuZCBzdWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUg
dG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KXHBhcg0KLS0tIEJsYWNrQm94XHBhcg0KLS0tIHNl
bmQgc3ViamVjdCBIRUxQIG9yIFVOU1VCU0NSSUJFIHRvIGJsYWNrYm94QG9iZXJvbn19AHJyVWcy
WWwyYWtBWnY=


----boundary-LibPST-iamunique-626207205_-_---
Received on Wed Dec 20 2006 - 00:44:58 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:32:03 UTC