[C#] Co w tym kodzie jest nie tak

0

Hej! Tak jak w temacie Co w poniższym kodzie jest nie tak??

Kod:

 private void wczytajToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "All Files (*.*) | *.*";

            openFileDialog1.ShowDialog();

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                for (int a = 0; a >= zzmienna111; a++)
                {
                    string sciezka = openFileDialog1.FileName;
                    string[] abcde = sciezka.Split(Convert.ToChar(@"\"));

                    string patch = abcde[0] + @"\" + abcde[1] + @"\" + abcde[2] + @"\" + abcde[3] + @"\Clients\Client" + a + ".cl";

                    if (File.Exists(patch))
                    {

                        StreamReader odczytaj = new StreamReader(patch);

                    string linia;

                    while ((linia = odczytaj.ReadLine()) != null)
                    {

                        string[] podzielenie = linia.Split('=');

                        foreach (string pom in podzielenie)
                        {
                            for (int i = 0; i >= podzielenie.Count(); i++)
                            {
                                if (pom == "nazwisko")
                                {
                                    int abc = i + 1;
                                    string nazwiskoo = podzielenie[abc];
                                    comboBox1.Items.Add(nazwiskoo);
                                }
                            }
                        }
                    }
                    odczytaj.Close();
                    }

Zastanawiałem się nad tym dość długo i za cholere nie mogę dojść dlaczego elementy nie dodają mi się do combobox...

0

Sprawdź pętle for czy ma być >= czy też <=

0

Nie...To nie to...

0

Próbowałeś step-ować debuggerem po tym kodzie?

0

Eam...To znaczy?? (Nie odnajduje się zazwyczaj w takich "fachowych" określeniach... :/)

0

Prześledź debuggerem każdą linijkę, patrząc na wartości zmiennych i zachowanie programu.

1

Mnie zastanawia co ma robić ta perełka?

foreach (string pom in podzielenie)
                        {
                            for (int i = 0; i >= podzielenie.Count(); i++)
                            {
                                if (pom == "nazwisko")
                                {
                                    int abc = i + 1;
                                    string nazwiskoo = podzielenie[abc];
                                    comboBox1.Items.Add(nazwiskoo);
                                }
                            }
                        }
0

Foreach rzeczywiscie jak sie tak \zastanawiam to srednio ale for ma sprawdzackolejne elementy tablicy i kiedy znajdzie element o wartosci "nazwisko" wtedy element o indexie o 1 wiekszym od tego w ktorym jest nazwisko jest dodawany do combobox...

0
  1. nie sprawdzasz czy tablica abcde ma co najmniej 4 elementy
  2. warunek: i >= podzielenie.Count() powinien wyglądać tak: i < podzielenie.Count()
0

Też nie pomogło...

0

Warunek:
if(pom.Equals("nazwisko"))

2
Remix17 napisał(a):

Hej! Tak jak w temacie Co w poniższym kodzie jest nie tak??

Wiele rzeczy.

            openFileDialog1.ShowDialog();

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

Czemu dwa razy otwierasz okno wyboru pliku?

for (int a = 0; a >= zzmienna111; a++)

zzmienna111, cóż za wspaniała nazwa dla zmiennej!

string[] abcde = sciezka.Split(Convert.ToChar(@"\"));

Bo:

string[] abcde = sciezka.Split('\\');

byłoby za mało pr0, nie?

No i abcde - kolejna wspaniała nazwa.

string patch = abcde[0] + @"\" + abcde[1] + @"\" + abcde[2] + @"\" + abcde[3] + @"\Clients\Client" + a + ".cl";

patch? Chyba chodziło o path...
Tak czy siak, łatwiej to chyba osiągnąć w ten sposób:

string path = Path.ChangeExtension(Path.Combine(abcde[0], abcde[1], abcde[2], "Clients", "Client", a), ".cl");

Tylko po co to wcześniej dzielić abcde, żeby zaraz to połączyć?| :|
Rozsądniej byłoby tak nie robić.

string path = Path.ChangeExtension(Path.Combine(abcde, "Clients", "Client", a), ".cl");
StreamReader odczytaj = new StreamReader(patch);

Taka uwaga - StreamReader lepiej używać w using: http://msdn.microsoft.com/en-us/library/yh598w02.aspx

for (int i = 0; i >= podzielenie.Count(); i++)

Zamiast Count() wystarczyłoby po prostu Length.
No i wnętrze tej pętli przecież nigdy się nie wykona.

A świetną instrukcję debugowania w Visual Studio zamieścił @ŁF tutaj: Debugowanie

0

Dzięki za wszelkie uwagi, a z tymi swoimi "za mało pr0" & "wspaniała nazwa dla zmiennej" mógłbyś siępowstrzymać bo ani tu dobrego wrażenia na nowych użytkownikach nie robisz ani nikt tu cięchyba za te twoje wyrafinowane teksty nie podziwia...

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