Avatar billede GoofyDK Nybegynder
06. december 2010 - 09:18 Der er 25 kommentarer og
1 løsning

Read sections count ini

Hej.

Jeg har lidt bøvl med denne kode:

string serv = @"C:\serv.ini";
string contents;
                using (StreamReader sr = new StreamReader(serv))
                {
                    contents = sr.ReadToEnd();
                }
               
                string[] array = contents.Split(new char[] { '[' }, StringSplitOptions.RemoveEmptyEntries);

Den virker ellers fint nok, men hvis jeg så obfuscator mit projekt. Så vil den ikke læse hvor mange sections der er i serv.ini - Så skriver den bare alle mulige tegn.

Hvordan kommer jeg det problem til bunds?
Avatar billede Syska Mester
06. december 2010 - 10:15 #1
Hvor skriver den mærkelige tegn ?
Avatar billede GoofyDK Nybegynder
06. december 2010 - 14:04 #2
I min combo.

public void combo()
        {
            try
            {
                string combotal = "1";

                string contents;
                using (StreamReader sr = new StreamReader(serv))
                {
                    contents = sr.ReadToEnd();
                }
               
                string[] array = contents.Split(new char[] { '[' }, StringSplitOptions.RemoveEmptyEntries);

                if (comboBox1.Text.Length >= 1 && Convert.ToInt32(combotal) <= array.Length && array.Length >= 1)
                {
                    combotal = comboBox1.Text;
                }

                List<ComboItem> list = new List<ComboItem>();
                for (int i = 1; i <= array.Length; i++)
                {
                    if (i != 0 && array.Length != 0)
                    {
                        list.Add(new ComboItem() { Name = "" + i.ToString(), Value = "" + i.ToString() });
                    }
                }

                comboBox1.DataSource = list;
                comboBox1.DisplayMember = "Name";
                comboBox1.ValueMember = "Value";

                comboBox1.SelectedValue = combotal;
                comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
            }
            catch { }
        }
Avatar billede Syska Mester
06. december 2010 - 14:10 #3
ja ?
Avatar billede GoofyDK Nybegynder
06. december 2010 - 14:17 #4
Det er i den kode, at den skriver de mærkelige tegn til min combo.
Avatar billede GoofyDK Nybegynder
06. december 2010 - 14:20 #5
Og kan hives ud med comboBox1.Text
Avatar billede Syska Mester
06. december 2010 - 14:26 #6
hmmm, den burde vel skrive 1,2,3,4,5 ovs.

Hvad bruger du til at obfuscator dit projekt med ?

Kan du tage et screen shot af det du kalder mærkelige tegn ?
Avatar billede GoofyDK Nybegynder
06. december 2010 - 14:29 #7
+XYhuwsSXm4HS4dACG3OoLy3W42YLpKTzyLdGdzAYLpKTzyLdGdzAgoLheQ5YPFCA

Det her skriver den, og jeg bruger skater .NET
Avatar billede Syska Mester
06. december 2010 - 14:35 #8
Er det når du prøver at decompile dit obfucated project eller ?

Jeg er sq ik' helt klar over hvor du ser den streng henne.
Avatar billede GoofyDK Nybegynder
06. december 2010 - 14:48 #9
http://img121.imageshack.us/i/combop.png/ Sådan ser min combo ud.

Når jeg har obfucated min .exe fil, og så starter den nye som kommer, så laver den det der.
Avatar billede Syska Mester
06. december 2010 - 14:59 #10
Prøv at decompile din kode med: http://www.red-gate.com/products/reflector/index.htm

og se hvad den har lavet din: combo() metode om til ... den må have fucket den helt.

mvh
Avatar billede Syska Mester
06. december 2010 - 15:00 #11
Eventuelt lav:

list.Add(new ComboItem() { Name = "" + i.ToString(), Value = "" + i.ToString() });

om til:

list.Add(new ComboItem() { Name = i.ToString(), Value = i.ToString() });

Måden den går ind og piller lidt for meget ...
Avatar billede GoofyDK Nybegynder
06. december 2010 - 15:04 #12
Jeg kan ikke se den i reflector, da alle mine strings osv. hedder alt muligt andet.

http://img149.imageshack.us/i/unavngivet0.png/

Se. :-)
Avatar billede GoofyDK Nybegynder
06. december 2010 - 15:09 #13
list.Add(new ComboItem() { Name = i.ToString(), Value = i.ToString() });

Gav samme resultat. Men jeg tror problemet er:
string[] array = contents.Split(new char[] { '[' }, StringSplitOptions.RemoveEmptyEntries);
Avatar billede Syska Mester
06. december 2010 - 15:09 #14
Så bliver du nød til at lede efter det.

ComboItem må være en .NET type, den den bliver nok ikke obfuscated.

jeg ville også prøve at lave den "" + i.ToString() del ... måske den går ind og laver sjove ting.

Lav en simplificeret del af dit program som stadig laver den fejl, og derefter lav en decompile på det.

Btw. er det samme string hver gang, som kommer med i din combobox ? eller er det en ny hver gang du starter dit program ?
Avatar billede GoofyDK Nybegynder
06. december 2010 - 15:15 #15
Det som kommer med i min combobox er tal, altså for hver section der er i min ini.

[1]
blabla

Vil give resultatet 1 til min combobox.

[1]
blabla
[2]
blabla

Dette giver så resultatet:
1
2

I sådan en drop down list (kaldes den vist?), og så kan man vælge et nummer. Pt. står der kun:

[1]
blabla
[2]
blabla
Avatar billede Syska Mester
06. december 2010 - 15:27 #16
Hvorfor skulle følgende give det problem du snakker om:
Gav samme resultat. Men jeg tror problemet er:
string[] array = contents.Split(new char[] { '[' }, StringSplitOptions.RemoveEmptyEntries);

Hvis det kun sker når du laver en obfuscated version af dit program, må du jo prøve at arbejde baglens og kun obfuscate dele af dit program ...
Avatar billede GoofyDK Nybegynder
06. december 2010 - 15:30 #17
Kan jeg prøve på, men kender du andre måder til sections. Hvor jeg kan se hvor mange sections der er, og kun dem med tal i [ ]?
Avatar billede GoofyDK Nybegynder
06. december 2010 - 15:49 #18
Jeg har så fundet ud af, at det ikke er den linje alligevel.

Så må problemet være i dette:

List<ComboItem> list = new List<ComboItem>();
                for (int i = 1; i <= array.Length; i++)
                {
                    if (i != 0 && array.Length != 0)
                    {
                        list.Add(new ComboItem() { Name = "" + i.ToString(), Value = "" + i.ToString() });
                    }
                }

                comboBox1.DataSource = list;
                comboBox1.DisplayMember = "Name";
                comboBox1.ValueMember = "Value";

                comboBox1.SelectedValue = combotal;
                comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
Avatar billede Syska Mester
06. december 2010 - 16:10 #19
Ja ... derfor jeg også siger:
list.Add(new ComboItem() { Name = "" + i.ToString(), Value = "" + i.ToString() });

til:

list.Add(new ComboItem() { Name = i.ToString(), Value = i.ToString() });

Ingen grund til at have et prefix af "" med i overstående:

mvh
Avatar billede GoofyDK Nybegynder
06. december 2010 - 16:19 #20
Ja, det har jeg rettet. Kopirede bare det fra Eksperten.
Avatar billede Spotgun Seniormester
06. december 2010 - 16:26 #21
Nu er jeg ikke sindssygt hård til obfuscation, men det kunne lyde til at din INI fil også er blevet obfuscated, og dermed ikke længere indeholder de linier tekst du forventer? Den burde vel reelt blive holdt ude af obfuskeringen, hvis du vil kunne aflæse indstillingerne fra den.
Avatar billede Syska Mester
06. december 2010 - 22:45 #22
Da han læser filen fra:
string serv = @"C:\serv.ini";

Går jeg ikke ud fra den bliver obfuscated ... var også en af mine første ideer.

mvh
Avatar billede Spotgun Seniormester
07. december 2010 - 08:21 #23
Præcis. Jeg tænkte dog at ini filen måske var embedded i programmet, og blev skrevet ned på disken under runtime hvis den manglede. Det kunne i hvert fald være en forklaring, men er selvfølgelig svært at sige noget om, når man ikke sidder med projektet foran sig :)
Avatar billede GoofyDK Nybegynder
07. december 2010 - 09:18 #24
Jeg har hentet nyt Obfuscator program ned, og det har åbenbart hjulpet. Så jeg ved ikke, hvorfor det lige skulle drille.

Men læg et svar, så kan du få point som tak for din hjælp. :-)
Avatar billede Syska Mester
07. december 2010 - 09:23 #25
Jeg ville stadig prøve at lave en simpel udgave af dit program, med den oprindelige udgave for at finde ud af om det er din empty string den sætter noget foran.

Det burde være relativt nemt ... hvis du siger din drop down box får tilføjet ekstra text.

og svar.
Avatar billede GoofyDK Nybegynder
07. december 2010 - 16:36 #26
Jeg vil prøve og se på det. :-) Tak endnu en gang.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester