[ borcha @ 19.09.2010. 11:07 ] @
Pokusavam od jutros da iscitam samo odredjeni broj stavki i to od odredjene grupe..
Koristim StreamReader sa metodom Split('=') i met. ReadLine().....

recimo...

[GRUPA0]
stavka_1 = Vrednost
stavka_2 = Vrednost
stavka_3= Vrednost

[grupa1]
stavka_1 = Vrednost
stavka_2 = Vrednost
stavka_3= Vrednost

[GRUPA2]
stavka_1 = Vrednost
stavka_2 = Vrednost
stavka_3= Vrednost


recimo ja hocu da izlistam samo [GRUPA1] u ComboListu...


hvala unapred.....
[ Shadowed @ 19.09.2010. 12:16 ] @
Citas liniju po liniju i proveravas da li je jednako "[grupa2]", ako nije, ignorises, ako jeste, od sledeceg reda pamtis linije sve dok ne naidjes na praznu. Tada si zavrsio i to sto si popamtio ubacujes u ComboBox.
[ borcha @ 19.09.2010. 12:39 ] @
To i pokusavama svo vreme...
Ali nikako da napravim brojac ili petlju kako bih nastavio dalje od stvake _1.
Znaci dodje do [GRUPA1] i iscita naredni red tj. Stavka_1 ali nece dalje. To je i problem!!!
Molio bih te za jedan primer ako mozes??

hvala!!
[ lonelyrider_44 @ 19.09.2010. 13:29 ] @
Da li imash uvek isti broj stavki pod svakom grupom, ili konkretno grupom
1 ?
[ borcha @ 19.09.2010. 14:13 ] @
samo jednu stavku pod [GRUP1] i to prva

STAVKA_1..

a problem je sto nece dalje da ide nego se zavrsi na STAVKA1 po tom grupom. Ja zelim sve stavke pod [GRUPA1]..

;-)
[ lonelyrider_44 @ 19.09.2010. 16:38 ] @
Dobro, kod bi izgledao ovako, otprilike:
Code (csharp):

string stavkaVrednost="";
void readFile(){
     Stream s = File.OpenRead("grupe.ini");
         StreamReader sr = new StreamReader(s);
         while (!sr.EndOfStream)
         {
            if (sr.ReadLine() == "[Grupa1]")
            {
                 stavkaVrednost = sr.ReadLine();
            }
         }
}
 


Ovim kodom u string stavkaVrednost upisujesh sledecu liniju, ispod linije
u kojoj pishe Grupa1 . Zato sam te pitao koliko imash stavki u toj grupi.
Ako ochekujesh da moze da bude promenljiv broj, onda ovaj kod nece raditi.
Ako ce uvek biti fixno jedna stavka, onda moze i ovako.
[ borcha @ 19.09.2010. 16:47 ] @
Upravo tako izgleda i moj kod....
ponovi cu .. ja sam uspeo da izvucem jednu stavku i da je podelim sa ('=') ali meni trebaju i ostale stavke...!! znaci promenjivo!
[ borcha @ 19.09.2010. 16:58 ] @
File.ini
[ADVERTIZE]
ROW_0=
ROW_1=
ROW_2=
ROW_3=
ROW_4=
ROW_5=
[DEPARTMENTS]
DESCRIPTION_1=Sank
DESCRIPTION_2=Kuhiwa
DESCRIPTION_3=
DESCRIPTION_4=
DESCRIPTION_5=
DESCRIPTION_6=
DESCRIPTION_7=
DESCRIPTION_8=
DESCRIPTION_9=
DESCRIPTION_10=

__
Znaci treba mi sve pod sekcijom [DEPARTMENTS] i sve stavke koje joj pripadaju tj 10 komada. DESCRIPTION_1=Sank, DESCRIPTION_2=Kuhiwa itd...
__
Code:

public void CitanjeOdeljenjaIzINIFil()
        {


            ListaGrupa_comboBox.Items.Clear();

            String BLUCOMINI = @"c:\BluComXMR\BlucomINI.ini";

            

            Stream s = File.OpenRead(BLUCOMINI);
            StreamReader sr = new StreamReader(s);

           
            while (!sr.EndOfStream)
            {

                

                if (sr.ReadLine() == "[DEPARTMENTS]")
                {   
                    string[] stavkaVrednost = sr.ReadLine().Split('=');
                   
                    ListaGrupa_comboBox.Items.Add(stavkaVrednost[1]);
                }

            }

[ lonelyrider_44 @ 19.09.2010. 16:59 ] @
Ochekivao sam da cesh odgovoriti direktno ima toliko i toliko, ili da je promenljiv broj u pitanju, pa zato chim sam u mail-u video pochetak tvog posta, nisam dalje gledao.

Code (csharp):

string stavkaVrednost="";
void readFile(){
     Stream s = File.OpenRead("grupe.ini");
         StreamReader sr = new StreamReader(s);
         while (!sr.EndOfStream)
         {
            if (sr.ReadLine() == "[Grupa1]")
            {
                while((stavkaVrednost = sr.ReadLine())!=""){
                    //ovde kod za splitovanje i ubacivanje u combo ili shta ti vec treba
                }
            }
         }
}

 
[ borcha @ 19.09.2010. 17:03 ] @
Znaci samo ugnjezdjivanje WHILE(){} ???
[ lonelyrider_44 @ 19.09.2010. 17:11 ] @
Da. Chitaj sve dok ne dodjesh do prazne linije (jer si takav primer naveo na pochetku) ili dok ne dodjesh do sledece grupe (jer si takav primer stavio u pretposlednjem postu), znachi samo uslov varira u zavisnosti da li imash praznu liniju izmedju tih grupa. ako nemash, onda je uslov za taj while da prochitana linija bude razlichita od [sledeca_grupa] .
[ borcha @ 19.09.2010. 18:31 ] @
Kod ne funkcionise!! Daljim prolaskom pokazuje da ima null vrednost!
Ok , nema veze ... valjda ce mi pasti neka ideja pasti na pamet!! ;-)
[ lonelyrider_44 @ 19.09.2010. 19:03 ] @
Pa ne moze tako...Ko ima null vrednost ? U kojoj liniji koda ? Jako si neprecizan. Sad sam probao, kod radi!! Zavisi koji test primer mu pustish.

Evo ti primer ovog koda, podesi samo putanju do fajla: "primer.ini" i probaj. Ako taj ini fajl treba drugachije da izgleda, okachi tu drugu verziju, i takodje reci gde "puca" tvoj program. Po mogucstvu, okachi ceo kod.

program
[ borcha @ 19.09.2010. 19:31 ] @
Ok, ok. Znam da ne moze tako!! Sory.. Malo me ovo nervira pa zurim sa.... Probacu , probacu.. a tebi hvala na strpljenju!!!
[ bojan21 @ 19.09.2010. 19:41 ] @
Napisao sam na brzinu, probao sam samo na jednom primeru:

Code (csharp):


        //filePath = putanja do INI datoteke
        //section = sekcija koju hoces da procitas
        private string[] ReadData(string filePath, string section)
        {
           
            List<string> result = new List<string>();

            StreamReader sR = new StreamReader(filePath);

            string sectionName = "[" + section + "]";

            bool dataRead = false;
            bool readStart = false;


            while (!sR.EndOfStream && !dataRead)
            {
                string line = sR.ReadLine();

                if (readStart)
                {
                    if (line != "")
                        result.Add(line);
                    else
                        dataRead = true;
                }
                else
                {
                    if (line == sectionName)
                        readStart = true;
                }
                 
            }

            sR.Close();

            return result.ToArray();
        }



        //na primer, ispis procitanih vrednosti u ListBox
        private void button1_Click(object sender, EventArgs e)
        {
            string[] lines = ReadData("C:\\test.ini", "MY_SECTION");

            foreach (string line in lines)
            {
                listBox1.Items.Add(line.Split('=')[1]);
            }
        }
 


Pozdrav
[ borcha @ 19.09.2010. 19:51 ] @
Sve je to odlicno!! I meni je kod isti !! Tvoj radi zato sto koristis drugi fajl!! Kod mene se ponavljaju kljucevi i vrednosti..
Evo izlistaj .INI pa ces videti ako je nesto u fajlu problem..(CRVENIM). Ja stvarno sa INI nisam bas radio pa zato malo, hm... vise sam za XML.
I postoji rastojanje izmedju dve grupe!!!


BLUCOM]
VERSION=EUEIOBBB210979
[HEADER]
ROW_0=Pizzeria caffe 00
ROW_1=ANGOLO 00
ROW_2=021/727-059 00
ROW_3=ul. Ise Sekickog 44a 00
ROW_4=00
ROW_5=00
[ADVERTIZE]
ROW_0=
ROW_1=
ROW_2=
ROW_3=
ROW_4=
ROW_5=
[DEPARTMENTS]
DESCRIPTION_1=Sank
DESCRIPTION_2=Kuhiwa
DESCRIPTION_3=
DESCRIPTION_4=
DESCRIPTION_5=
DESCRIPTION_6=
DESCRIPTION_7=
DESCRIPTION_8=
DESCRIPTION_9=
DESCRIPTION_10=

[OPERATORS]
CODE_1=1
NAME_1=Velibor
CODE_2=2
NAME_2=Olga
CODE_3=3
NAME_3=Boris
CODE_4=4
NAME_4=
CODE_5=5
NAME_5=
CODE_6=6
NAME_6=
CODE_7=7
NAME_7=
CODE_8=8
NAME_8=
CODE_9=9
NAME_9=
CODE_10=10
NAME_10=Kasir 10
CODE_11=11
NAME_11=Kasir 11
CODE_12=12
NAME_12=Kasir 12
CODE_13=13
NAME_13=Kasir 13
CODE_14=14
NAME_14=Kasir 14
CODE_15=15
NAME_15=Kasir 15
CODE_16=16
NAME_16=Kasir 16
CODE_17=17
NAME_17=Kasir 17
CODE_18=18
NAME_18=Kasir 18
CODE_19=19
NAME_19=Kasir 19
CODE_20=20
NAME_20=Kasir 20
CODE_21=21
NAME_21=Kasir 21
CODE_22=22
NAME_22=Kasir 22
CODE_23=23
NAME_23=Kasir 23
CODE_24=24
NAME_24=Kasir 24
CODE_25=25
NAME_25=Kasir 25
CODE_26=26
NAME_26=Kasir 26
CODE_27=27
NAME_27=Kasir 27
CODE_28=28
NAME_28=Kasir 28
CODE_29=29
NAME_29=Kasir 29
CODE_30=30
NAME_30=Kasir 30
CODE_31=31
NAME_31=Kasir 31
[SISTEM]
CASH=01
PRINT=0
GRAFICA1=0
GRAFICA1_IMG=0
GRAFICA2=0
GRAFICA2_IMG=0
OBLIGATE=0
TEST_MENY=0
SINGLE=0
SPEED=0
[SETPORT]
PORT=1
SPEED=9600
[SETLNG]
LNG=True
[SETWDTH]
WDTH=22
[SETPHONE]
PHONENM=
PHONEPT=
PHONEPSS=
[VAT]
TAX_2=
TAX_3=
TAX_4=
TAX_5=
TAX_6=
TAX_7=
TAX_8=
TAX_9=
[VALUTE]
DESCRIPTION_1=
CONVERSION_1=
DESCRIPTION_2=
CONVERSION_2=
DESCRIPTION_3=
CONVERSION_3=
DESCRIPTION_4=
CONVERSION_4=

[UNITS]
DESCR_1=
DESCR_2=
DESCR_3=
DESCR_4=
DESCR_5=
[PLUTYPE]
DESCR_1=Sokovi
DESCR_2=Piva
DESCR_3=Zestina
DESCR_4=kolaci
DESCR_5=pizza
DESCR_6=riba
DESCR_7=domaca kuhin
DESCR_8=Ostalo
[ bojan21 @ 19.09.2010. 20:08 ] @
Nema veze ponavljanje sa tim, sekcija je sekcija :). Problem je sto sam pretpostavio (primer iz prvog posta) da su sekcije odvojene praznom linijom (sto u poslednjem primeru nije slucaj). Zameni ovu liniju:
Code (csharp):

if (line != "")
 

sa ovom:
Code (csharp):

if (line[0] != '[')
 


Pokusaj sad. :)
[ lonelyrider_44 @ 19.09.2010. 20:41 ] @
Mozda je bolji uslov:
Code (csharp):

if (line.Contains("="))
 


U svakom sluchaju, lepshe reshenje je predlozio Bojan21 , kachim ti isti program sa preradjenim kodom, slichan Bojanovom reshenju.
[ bojan21 @ 19.09.2010. 21:06 ] @
Mnogo je bolji, pogotovo sto format INI datoteke varira od aplikacije do aplikacije. Svaka cast. :)

P.S. Ako se borcha sad javi i kaze da ne metoda radi, ja cu da obrisem nalog. :)

Pozdrav
[ borcha @ 19.09.2010. 22:30 ] @
Ne radiii!!!!


Hahahah!! Salim se....

nemoj brisati nalog , trebaju nam takvi....... ;-))

Svaka cast!!!