Diskuze: Obchodní čtečka kódů

C# .NET .NET (C# a Visual Basic) Obchodní čtečka kódů American English version English version

Avatar
mlnice
Člen
Avatar
mlnice:

Ahoj,
prosím vás, potřeboval bych poradit s jedním programem.
Vytvořil jsem si v textovém dokumentu soubor data.csv, kam bych chtěl postupně vkládat zboží(jde pouze o simulaci) v podobě

135897156716 ; Banany ; 14.50 ; 500
646497521399 ; 3bit ; 9.90 ; 400

První je načtený kód, pak název zboží, cena a množství. V programu mám 4 textové pole, do prvního se vloží kód zboží a po stisknutí na tlačítko se k tomuto danému číslu načtou zbylé informace o konkrétním zboží do zbylých textboxů.
Přidávám kód jak jsem se o to pokoušel já sám, ale bohužel tomu moc nerozumím, nemohli by jste mi poradit aby to v tom CSV opravdu vyhledávalo podle té první informace? Děkuji

private void hledani()
{
var reader = new StreamReader(Fi­le.OpenRead(@"da­ta.csv"));
List<string> listA = new List<string>();
List<string> listB = new List<string>();
List<string> listC = new List<string>();
List<string> listD = new List<string>();
while (!reader.EndOf­Stream)
{
var line = reader.ReadLine();
var values = line.Split(';');

listA.Add(kod­zbozi.Text);
listB.Add(valu­es[1]);
listC.Add(valu­es[2]);
listD.Add(valu­es[3]);

nazevzbozi.Text = values[1].ToS­tring();
cenazbozi.Text = values[2].ToS­tring();
mnozstvizbozi.Text = values[3].ToS­tring();

}

}

Editováno 27.12.2014 16:09
 
Odpovědět 27.12.2014 16:09
Avatar
Odpovídá na mlnice
Ondřej Štorc:

Takže já bych to udělal takto. Nejdříve bych si vytvořil nějakou strukturu která by obsahovala položky: Kód zboží, název, cena a počet kusů. To by vypadalo například nějak takto:

struct Zbozi
    {
        public int KodZbozi;
        public string NazevZbozi;
        public double Cena;
        public int PocetKusu;
        public Zbozi(int KodZbozi, string NazevZbozi, double Cena, int PocetKusu)
        {
            this.KodZbozi = KodZbozi;
            this.NazevZbozi = NazevZbozi;
            this.Cena = Cena;
            this.PocetKusu = PocetKusu;
        }
    }

A k nalezení prvku s určitým číslem objednávky bych použil tuhle metodu:

private Zbozi najdiZbozi(int kodZbozi)
            {
                Zbozi hledanyProdukt = zboziNaSklade.Find(x => x.KodZbozi == kodZbozi);
                return hledanyProdukt;
            }

Kdy zboziNaSkladě je kolekce, v mém přpadě typu list

Nahoru Odpovědět 27.12.2014 16:46
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
mlnice
Člen
Avatar
Odpovídá na Ondřej Štorc
mlnice:

Děkuji, a co znamená prosím konkrétně ta datová struktura? Nevím jak to mám přesně vložit do toho kódu. Pochopil jsem, že třeba:

Zbozi hledanyProdukt = listB.Find(x => x.KodZbozi == kodZbozi);

tenhle kod chápu jakože hledanýprodukt bude hledat listB, podle KodZbozi, ale když místo KodZbozi dosadím listA, jakože podle listuA, tak to nefunguje

 
Nahoru Odpovědět 27.12.2014 17:06
Avatar
Odpovídá na mlnice
Ondřej Štorc:

Ta struktura vlastně zabalí ty 4 předměty do jednoho objektu takže nemusíš mít 4 listy ale jenom jeden. Jinak ta struktura je hodně podobná třídě

Nahoru Odpovědět 27.12.2014 17:16
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
mlnice
Člen
Avatar
mlnice:

Aha, ale jak ta struktura pozná, že mám jednotlivé položky odděleny středníkem?

 
Nahoru Odpovědět 27.12.2014 17:44
Avatar
Odpovídá na mlnice
Ondřej Štorc:

Nepozná musíš jí to naparsovat třebat takto:

private Zbozi naparsujZbozi(string csv)
            {
                string[] temp = csv.Split(';');
                return new Zbozi(Convert.ToInt32(temp[0]), temp[1], Convert.ToDouble(temp[2]),Convert.ToInt32(temp[3]));
            }


private void pridejZbozi(string soubor)
            {
                using (StreamReader sr = new StreamReader(soubor))
                {
                    string s;
                    while ((s = sr.ReadLine()) != null)
                    {
                        zboziNaSklade.Add(naparsujZbozi(s));
                    }
                }
            }

Samozřejmě to není dokonalý kód ale základ v tom je

Editováno 27.12.2014 18:21
Nahoru Odpovědět 27.12.2014 18:19
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
mlnice
Člen
Avatar
mlnice:

Tak se to tak nějak snažím pořád dávat do kupy a moc se mi to nedaří :( nemohl by jsi mi prosím udělat nějakou funkční ukázku? Jsem v tom opravdu začátečník Děkuju :)

 
Nahoru Odpovědět 12.1.2015 20:08
Avatar
lukas2901
Člen
Avatar
Odpovídá na mlnice
lukas2901:

Ukázku ti tu už několikrát postoval

 
Nahoru Odpovědět 13.1.2015 9:12
Avatar
mlnice
Člen
Avatar
mlnice:

Já jen nevím jak definovat to zboziNaSklade :(

 
Nahoru Odpovědět 13.1.2015 18:07
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mlnice
Jan Vargovský:
List<Zbozi> zboziNaSklade = new List<Zbozi>()
 
Nahoru Odpovědět 13.1.2015 18:19
Avatar
mlnice
Člen
Avatar
mlnice:

Aha, děkuju, ale musel jsem to dát zvlášť do pridejZbozi a najdiZbozi. A když chci aby se to pak vypsalo každá položka do jiného textboxu? :)

 
Nahoru Odpovědět 13.1.2015 18:23
Avatar
Lukáš Křehula
Redaktor
Avatar
Odpovídá na mlnice
Lukáš Křehula:

Nebylo by vhodnější použít listBox?

 
Nahoru Odpovědět 13.1.2015 18:25
Avatar
mlnice
Člen
Avatar
mlnice:

listBox použít neumím :(

 
Nahoru Odpovědět 13.1.2015 18:31
Avatar
mlnice
Člen
Avatar
mlnice:

Nevím jak udělat to zapisování

 
Nahoru Odpovědět 13.1.2015 18:39
Avatar
mlnice
Člen
Avatar
mlnice:

Nemohl by prosím někdo ochotný třeba na ICQ nebo Skype prosím? :)

 
Nahoru Odpovědět 13.1.2015 18:44
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na mlnice
Jan Vargovský:

Pošli nám celý projekt tady (nebo podstatnou část kódu), k tomu nám napiš co přesně má program dělat.

Používej tlačítko odpovědět, pak bych si tvé odpovědi všiml dříve.

 
Nahoru Odpovědět 13.1.2015 21:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.