klasa do obsługi plików.

0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;

namespace PDN
{
    public class FileIOFuncions
    {
         static public void sprawdzenie(string _filename)
        {
            if (File.Exists(_filename) == false)
            {
                Opcje op = new Opcje();
                op.ShowDialog();
            };

                   
        }
         static public void odczyt(string _filename)
         {
             FileInfo F = new FileInfo(_filename);
             StreamReader p = new StreamReader(_filename);
             string server = p.ReadLine();
             string database = p.ReadLine();
             string uid = p.ReadLine();
             string password = p.ReadLine();
             p.Close();
         }

         static public void stworz(string _filename)
         {
    
         FileStream f1 = new FileStream(_filename,
         FileMode.Create, FileAccess.ReadWrite);
         Opcje op = new Opcje();
         try
         {
             StreamWriter sw = new StreamWriter(f1);

             sw.WriteLine(op.OTB1.Text);
             sw.WriteLine(op.OTB2.Text);
             sw.WriteLine(op.OTB3.Text);
             sw.WriteLine(op.OTB4.Text);
             sw.Close();
             MessageBox.Show("Utworzono plik konfiguracyjny");
         }
         catch
         {
             MessageBox.Show("Błąd przy tworzeniu pliku " + _filename);
         }
         }
    }
}

Proszę o pomoc, gdyż funkcja nie tworzy pliku. nie potrafię znaleźć błędu proszę o szybką pomoc.

Plik jest tworzony, lecz jest pusty ;/

1

Jesteś pewien że w

sw.WriteLine(op.OTB1.Text);

coś jest a ja zrobisz prosty test i dasz sw.WriteLine("Test123");

 to wciąż plik jest pusty bo sam kod wygląda okej.

Bo nie wiem jaka logika jest zaszyta w 
```csharp
Opcje op = new Opcje();

bo nigdzie nie widać żebyś "op" uzupełniał jakimiś danymi. ;)

0

ze statycznymi wpisami tworzy plik konfiguracyjny, lecz ja chcĘ skorzystać z tych obiektór op.OTB1.Text gdyż tam wpisuje wartości które mają być zapisane do pliku.

0

Do kodu mam sporo zastrzeżeń ale co do jego działania to dopowiem do wypowiedzi @DibbyDum że powinieneś w metodzie stworz wywalić linijkę Opcje op = new Opcje();
zamiast tego zmienić nagłówek metody.

static public void stworz(string _filename, Opcje op)

zakładając że wywołujesz ją w klasie Opcje to wywołanie pownieneś zmienić na

FileIOFuncions("Nazwa pliku", this);

Jeżeli nie to wywołanie będzie bardziej złożone.
Opcje op = new Opcje() tworzy nowe, czyste, okienko którego nie wyświetlasz dlatego plik jest pusty (a w zasadzie zawiera kilka pustych linii).

0

Dobra jak na razie mam gotową klasę do zarządzania plikiem, lecz chcĘ wykorzystać funkcję odczyt w innej klasie, podpowie ktoś jak to zrobić?

Kod klasy do plików:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;

namespace PDN
{
    public static class FileIOFuncions
    {
         static public void sprawdzenie(string _filename) // funkcja sprawdzająca czy plik istnieje i czy nie jest pusty
        {
            Opcje op = new Opcje();
            if (File.Exists(_filename) == false) //jeżeli sprawdzenie czy plik istnieje zwróci fałsz otworzy się okno, które umożliwi utworzenie go.
            {
                op.ShowDialog();
            }
            StreamReader p = new StreamReader(_filename);
            if (p.ReadLine() == null)   // jeżeli strumień odczytu jest pusty oznacza to że plik jest pusty i pojawi się okno do utworzenia go.
            {
                p.Close();
                op.ShowDialog();
            }
        }
         static public void odczyt(string _filename) // funkcja odczytująca plik.
         {
             StreamReader p = new StreamReader(_filename);
             string server = p.ReadLine();
             string database = p.ReadLine();
             string uid = p.ReadLine();
             string password = p.ReadLine();
             p.Close();
         }

         static public void stworz(string _filename, Opcje op) //funkcja tworząca plik.
         {
                 FileStream f1 = new FileStream(_filename, FileMode.Create, FileAccess.ReadWrite);
                 StreamWriter sw = new StreamWriter(f1);
                 sw.WriteLine(op.OTB1.Text);
                 sw.WriteLine(op.OTB2.Text);
                 sw.WriteLine(op.OTB3.Text);
                 sw.WriteLine(op.OTB4.Text);
                 sw.Close();
                 MessageBox.Show("Utworzono plik konfiguracyjny");
         }
    }
} 

Kod klasy do SQL:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.IO;
using System.Windows.Forms;

namespace PDN
{
    static class MYSQLFuncions
    {
        static public void utwpol(string _connection)
        {
            FileIOFuncions.odczyt("config.dat");
            MessageBox.Show(server);
        }
    }
}

z czytanych wartości z pliku "config.dat" ma tworzyć połączenie, ktoś podpowie jak to zrobić?

0

Może powinieneś sobie stworzyć własny typ danych i zwrócić go z metody odczyt?

0

jak na razie chcĘ uzyskać takie rozwiązanie jakie mam zamierzone, jutro muszę oddać cały projekt. Kolego szogun1987, możesz podpowiedzieć mi jak zrobić żeby przekierować z fileIOFuncions.odczyt("config.dat") dane do funkcji tworzącej połączenie która wygląda mniej więcej tak: MySqlConnection polaczenie = new MySqlConnection("SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

0

Tak jak ci powiedziałem, tworzysz własny typ (nazwijmy go roboczo MyConfig) który będzie wyglądał mniej więcej tak:

class MyConfig 
{
    public string Server { get; set; }
    public string DataBase { get; set; }
    public string UId { get; set; }
    public string Password { get; set; }
}

i metodę odczyt

static public MyConfig odczyt(string _filename)
         {
             FileInfo F = new FileInfo(_filename);
             StreamReader p = new StreamReader(_filename);
             MyConfig result = new MyConfig();
             result.SerVer = p.ReadLine();
             result.Database = p.ReadLine();
             result.UId = p.ReadLine();
             result.Password = p.ReadLine();
             p.Close();

             return result
         }
0

never mind już sobie poradziłem, dzięki śliczne ;)

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