Odczyt pliku ini

0

Witam, mam taki problem, za pomocą tego kodu(przycisku) zapisuje dwa pliki csv - który nie jest tutaj istotny oraz plik log.ini
Zapisuje się do pliku kilka parametrów, takie jak np. nr COM
Jak zrobić aby po wpisaniu w pliku innego nr. COM, automatycznie się zmienił w programie.

private void bttn1_Click(object sender, EventArgs e)
{
string SendData;

        StreamWriter str = new StreamWriter(txtpath.Text + "/plik.csv");
        SendData = rtfTerminal.Text;
        str.WriteLine(SendData);
        str.Close();

        str = new StreamWriter(txtpath.Text + "/Log.ini");
        //str.WriteLine("Rozpoczecie = "+ DateTime.Now);
        str.WriteLine("COMPort = " + cmbPortName.Text);
        str.WriteLine("BaudRate = " + cmbBaudRate.Text);
        str.WriteLine("Parity = " + cmbParity.Text);
        str.WriteLine("DataBits = " + cmbDataBits.Text);
        str.WriteLine("StopBits = " + cmbStopBits.Text);
        str.WriteLine("Path = " + txtpath.Text);

        str.Close();

        MessageBox.Show("Done", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

Oraz czy wie ktoś jak zrobić aby automatycznie pliki ini oraz csv zapisywały się w katalogu w którym jest exe ?

1

Jak zrobić aby po wpisaniu w pliku innego nr. COM, automatycznie się zmienił w programie.

Przy uruchamianiu programu parsuj ten plik? :|

Oraz czy wie ktoś jak zrobić aby automatycznie pliki ini oraz csv zapisywały się w katalogu w którym jest exe ?

Zapisywanie takich plików do katalogu z programem jest złym pomysłem: bodajże od Visty+ bez praw administratora nie będziesz miał dostępu do Program Files i/lub Program Files (x86); bezpieczniej byłoby zapisywać w %appdata% lub podobnym.
Aby tego dokonać będziesz potrzebował tego: http://msdn.microsoft.com/en-us/library/77zkk0b6.aspx + nazwy tej zmiennej, np.powyższe appdata.

0

Przy uruchamianiu programu parsuj ten plik? :|

Możesz to jaśniej wytłumaczyć ? w sensie jak w kodzie powinienem to zrobić

0

No skoro zapisujesz dane do pliku, to wypadałoby je odczytywać, nie sądzisz?
Na 100% w C# istnieje jakaś wbudowana klasa do parsowania INI, a jak nie, to przerzuć się np.na XML.
Btw, nazwa log.ini jest zła, bo źle wskazuje zawartość pliku; config.ini lub coś w tym guście byłoby znacznie lepsze.

0

Nie spotkałem się z bibliotekami do parsowania ini.
Moja rada: zrezygnuj z ini i przerzuć się na xml'a. Stwórz sobie klasę Config, w której będą odpowiednie ustawienia i serializuj i deserializuj ją. Będzie o wiele łatwiej.

0
dam1en napisał(a):

Nie spotkałem się z bibliotekami do parsowania ini.
Moja rada: zrezygnuj z ini i przerzuć się na xml'a. Stwórz sobie klasę Config, w której będą odpowiednie ustawienia i serializuj i deserializuj ją. Będzie o wiele łatwiej.

masz gdzies jakis przykład ?

0
Patryk27 napisał(a):

Na 100% w C# istnieje jakaś wbudowana klasa do parsowania INI, a jak nie, to przerzuć się np.na XML.

Wbudowanej biblioteki do ini nie ma, bo to relikt epoki maszyn parowych, ale pewno w necie gdzieś się znajdzie taką.

dam1en napisał(a):

Moja rada: zrezygnuj z ini i przerzuć się na xml'a. Stwórz sobie klasę Config, w której będą odpowiednie ustawienia i serializuj i deserializuj ją. Będzie o wiele łatwiej.

Jeszcze łatwiej będzie użyć wbudowanego mechanizmu. :)

W .NET jest za to wygodny sposób zapisywania ustawień swojej aplikacji w plikach config (które tak naprawdę są zwykłymi xmlami), przy czym format pliku jest właściwie nieistotny, bo plik jest domyślnie opakowany w klasę ustawień.

Zapis:

Properties.Settings.Default.Wartość = "comcomcom";
Properties.Settings.Default.Save();

Odczyt:

this.JakieśCoś = Properties.Settings.Default.Wartość;

Więcej: http://msdn.microsoft.com/en-us/library/bb397750.aspx

0

private void bttn1_Click(object sender, EventArgs e)
{
string SendData;

        StreamWriter str = new StreamWriter(txtpath.Text + "/plik.csv");
        SendData = rtfTerminal.Text;
        str.WriteLine(SendData);
        str.Close();

        str = new StreamWriter(txtpath.Text + "/Log.ini");
        //str.WriteLine("Rozpoczecie = "+ DateTime.Now);
        str.WriteLine("COMPort = " + cmbPortName.Text);
        str.WriteLine("BaudRate = " + cmbBaudRate.Text);
        str.WriteLine("Parity = " + cmbParity.Text);
        str.WriteLine("DataBits = " + cmbDataBits.Text);
        str.WriteLine("StopBits = " + cmbStopBits.Text);
        str.WriteLine("Path = " + txtpath.Text);

        str.Close();

        MessageBox.Show("Done", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

Nie bardzo rozumiem jak to zastosować do tego

0

Wbudowanej biblioteki do ini nie ma, bo to relikt epoki maszyn parowych, ale pewno w necie gdzieś się znajdzie taką.

Pliki INI są przyjazne dla człowieka, jeśli mają być ręcznie edytowane.
W przeciwieństwie do XML, który ani nie jest czytelny, ani łatwo edytowalny (zbyt łatwo rozwalić strukturę), ani łatwo parsowalny (spróbujcie napisać prawidłowy parser...)

Z drugiej strony, parser INI trzeba by napisać, choć nie będzie to takie trudne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1