I’m wondering where’s the best place to save some simple insensitive data? Like a few URLs and some settings.
Please advise.
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
It all depends on the purpose of those settings! If you want XCopy deployment, I would suggest an XML file next to the exe. But if you also need to write to this, you should find a suitable location in the current user’s profile or the “all users” profile. The registry (local machine or current user) would also be a good option for simple settings.
Another question is the type of settings that you need to store. If it’s simple settings, I generally start with Altova’s XMLSpy to generate an XML schema, defining the structure of the settings. Then I use Delphi’s XML import wizard to generate code from this schema and just use that generated code. It allows me to modify the structure in an easy way and also makes sure there’s at least some documentation (the schema) telling others about the structure. It might sound complex at first, but once you’re used to this, it’s perfect! No more manual editing of registry settings or forgetting about the structure of your INI files. And no more thinking about writing code to read and write those settings, since Delphi will do that for you!
The Registry would also be a good location for settings but not every user will have proper access rights to read from, or write to, the registry which could crash your application. Besides, the registry has some other limitations which makes it unsuitable if you need to store a lot of settings! It would be okay to store a connection string and maybe username and encrypted password for some user account, but if you need to store 40 settings or more, then the Registry becomes unsuitable.
The same is true about INI files, which tend to be limited to a maximum size of 64 kilobytes. Of course, you could also store those settings in a regular text file or just some binary file. In the past, I even stored settings inside a ZIP file, because I needed to store dozens of grid-related settings. So each grid would read and write it’s settings to some binary stream which would then be stored in an encrypted ZIP file.