Link to home
Start Free TrialLog in
Avatar of Peter Kiers
Peter KiersFlag for Netherlands

asked on

Saving and Restoring Application Settings

Hi,

Does someone has an example for me:
How to read and write application-settings to ini-file.

Greetings,

Peter Kiers
Avatar of Carl Tawn
Carl Tawn
Flag of United Kingdom of Great Britain and Northern Ireland image

Do you specifically want to use an ini file, or do you just want to store settings? If it's the latter then you can use the built-in settings feature:

     http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx
Avatar of Peter Kiers

ASKER

Use a ini file
This is a delphi line:

SettingsFile := ChangeFileExt(Application.ExeName, '.ini');

can someone translate this to C#

Peter
ASKER CERTIFIED SOLUTION
Avatar of Carl Tawn
Carl Tawn
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Oke, now how to read and write to ini-file

Greetings,

Peter
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I don't want to use third party components.

P
Assuming you are storing them as name/value pairs, you can load all of your settings into a Dictionary:

Dictionary<string, string> configSettings = new Dictionary<string, string>();

string[] lines = File.ReadAllLines("Your_Config_File");
foreach (string line in lines)
{
       string[] arr = line.Split(new char[] { '=' });
       configSettings.Add(arr[0], arr[1]);
}

Open in new window

SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Do you have an example in C#?

P
Oke, Can someone tell me how to declare this:

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string strSection, string strKeys,string myVal,string theFile);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string strSection, string strKeys, string myDef, StringBuilder theReturnedValue, int varSize, string theFile);
I have this but I get an error:

The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)      

P.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace iniFile
{
    public partial class Form1 : Form
    {

    public string path;

    [DllImport("kernel32")]
    private static extern long WritePrivateProfileString(string section,
      string key,string val,string filePath);

    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section,
      string key,string def, StringBuilder retVal,
      int size,string filePath);


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string settingsFile = string.Concat(System.IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath), ".ini");
         //   LoadSettings();
        }


    }
}

Open in new window

Yeh, I have allready found that too. Could you please look at my last post
with the declaration of the two methods which are necessary to access an INI File.
I quess nobody knows the answer to my problem.
This was the answer: using System.Runtime.InteropServices;