ładowanie i odczyt z tablicy

0

witam,

problem może banalny, ale problem:

wczytuję z pliku tablicę np.

345 456 456 343 678
344 567 452 989 002
...

zawsze jest ich 5 w linii i teraz muszę je poprzydzielać do zmiennych, czyli jedynka = 345, dwójka = 456, trójka = 456, czwórka =343, piątka = 678. Potem ma być przejście do następnej linii i... tak w kółeczko aż do końca pliku
doprowadziłem już do tego, że wczytują sie mi po kolei wartości. Teraz wg mnie muszę zrobić tablicę i wrzucić tam po kolei wartości z linii a potem po kolei odczytać podstawiając do zmiennych. Łatwo powiedzieć, trudniej zrobić...

POMOCY!

0

Dobra, a moje pytanie jest: po co się tak męczysz. A nie możesz np. (de)serializować z/do XML`a ?

0
Deti napisał(a)

Dobra, a moje pytanie jest: po co się tak męczysz. A nie możesz np. (de)serializować z/do XML`a ?

wtam,

a o co chodzi, może jaśniej...

0

Tu masz funkcje do de/serializacji dowolnych obiektów w listach (pochodzi z jednego z moich programów - była mi potrzebna)

public static void XMLSerialize<T>(string xmlFile, List<T> list) 
    {
        XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
        TextWriter writer = new StreamWriter(Directory.GetCurrentDirectory() + @"\data\" + xmlFile);
        serializer.Serialize(writer, list);
        writer.Dispose();
    }

public static List<T> XMLDeserialize<T>(string xmlFile)
    {
        if (File.Exists(Directory.GetCurrentDirectory() + @"\" + xmlFile))
        {
            List<T> items = new List<T>();
            XmlSerializer deserializer = new XmlSerializer(typeof(List<T>));
            TextReader reader = new StreamReader(Directory.GetCurrentDirectory() + @"\" + xmlFile);
            items = (List<T>)deserializer.Deserialize(reader);
            reader.Dispose();
            return items;
        }
        else
            return new List<T>() { };
    }

Teraz możesz zapisać do pliku WSZYSTKO i odczytać WSZYSTKO za jednym zamachem.

0

Poradziłem sobie inaczej (ładuję sobie jedną "komórkę" za drugą i jest OK... ale potem robię sobie case i wrzucam w odpowiednie zmienne:
string towar_paragon; //symbol - do usunięcia w każdej linijce
string ilosc_paragon; //ilość towaru na paragonie
string cena_paragon; //cena towaru na kasie

        StreamReader tr = new StreamReader("c:\\plik.txt");
        string ss = tr.ReadToEnd();
        ss = ss.Replace("\r\n", "|");
        string[] linie = ss.Split('|', '\t');
        
        for (int j = 0; j <= 11; j++) ;
        {
            int w = 0;
            foreach (string s in linie)
            {
                w = w + 1;
                switch (w)
                {
                    case 0:
                        towar_par = s;
                        break;
                    case 1:
                        ilosc_par = s;
                        break;
                    case 2:
                        cena_par= s;
                        break;
                        ;
                }
            }
        }
        tr.Close();
    }

a mi chodzi o to, aby to zrobić "ładniej" - bez case...

0

o rany .. - mówisz, że chcesz ładniej .. bez case - napisałem Ci 2 funkcje (odczyt i zapis) dowolnej listy (jako <T> możesz podać cokolwiek chcesz: string, int, klasę .. wszystko. Nie musisz się martwić o separatory, kolejność itd..

Co jest niejasne?

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