Wątek przeniesiony 2016-09-05 11:53 z C# i .NET przez DibbyDum.

Sortowanie alfabetyczne

0

Witam wszystkich! Próbuję napisać mechanizm w WPF, który ma posortować alfabetycznie nazwiska w tablicy, a następnie wyświetlić je w oknie.

 


        private readonly string Class;
        private readonly string log;

        public Freq(string c, string l)
        {
            InitializeComponent();

            Class = c;
            log = l;

            if (Directory.Exists(@"C:\Users\Bogus\Desktop\Librus simulator\Librus simulator\users\" + log + @"\classes\" + Class) == false)
                MessageBox.Show("Klasa nie istnieje!");

            else if (File.ReadAllText(@"C:\Users\Bogus\Desktop\Librus simulator\Librus simulator\users\" + log + @"\classes\" + Class + @"\StudentsValue.txt") == "0")
                MessageBox.Show("W klasie nie ma żadnego ucznia!");

            else
            {
                int valueOfStudents = int.Parse(File.ReadAllText(@"C:\Users\Bogus\Desktop\Librus simulator\Librus simulator\users\" + log +
                    @"\classes\" + Class + @"\StudentsValue.txt"));

                string[] tab = new string[valueOfStudents];

                for (int i = 1; i <= valueOfStudents; i++)
                {
                    var surname = @"C:\Users\Bogus\Desktop\Librus simulator\Librus simulator\users\" + log +
                    @"\classes\" + Class + @"\Students\Uczen" + i.ToString() + @"\surname.txt";

                    tab[i--] = surname;
                }

                Array.Sort(tab);

                for (int i = 1; i <= valueOfStudents; i++)
                {
                    Height += 60;

                    Label student = new Label();
                    student.Width = 400;
                    student.Height = 60;
                    student.VerticalAlignment = VerticalAlignment.Top;
                    student.HorizontalAlignment = HorizontalAlignment.Left;
                    student.Content = i.ToString() + ". " + tab[i--];

                    RadioButton rb = new RadioButton();
                    rb.Name = "Student" + i.ToString();
					rb.HorizontalAlignment = HorizontalAlignment.Right;
                    rb.VerticalAlignment = VerticalAlignment.Top;
                }

                Show();
            }
        }

Niestety program wywala się już na pierwszej pętli, nie wyrzuca mi żadnego wyjątku. Proszę o pomoc.

0
  1. Zdefiniuj wywala się (po prostu wyłącza?)
  2. Zdebuguj krok po kroku co się dzieje, śledź co jest w poszczególnych zmiennych, aż znajdziejsz przyczynę.
  3. tab[i--] = surname; - ta linijka wygląda podejrzanie. Nie powinno tu być przypadkiem tab[i-1]? Bo tab[i--] oznacza to samo co:
    tab[i];
    i = i -1;
0
  1. Nie wyłącza się, tylko zawiesza.

  2. Dzięki, spróbuję. Wybacz za głupie pytanie, ale jak to zrobić w VS? Gdy klikam "Start debugging" to w żadnej z zakładek nie wyświetlają mi się aktualne wartości zmiennych.

  3. A tab[--], to nie jest to samo co tab[i - 1]? Przecież "--", to operator dekrementacji.

0

Z tą dekrementacją, to jednak masz rację, sprawdziłem. Teraz program nie zawiesza się już na pierwszej pętli, tylko wyłącza się na drugiej. Wywołałem funkcję "Show()" przed drugą pętlą, okno się otworzyło, jednak za chwilę program przestał działać. Nadal nie wyrzuca żadnych wyjątków.

0

Jeżeli chodzi o debugowanie to w google tutoriali jest pełno. Tu masz nawet po polsku opisane co i jak: http://cezarywalenciuk.pl/blog/programing/post/breakpoints-i-debugowanie-kodu-w-visual-studio-2010. Natomiast w drugiej pętli to już musisz sobie zdebugować co może być nie tak. W drugiej pętli też poprawiłeś tą dekrementację?

0

Głupi błąd. Zmienna "surname" przecież miała w sobie ścieżkę, a nie sczytywała tekstu z pliku. Program się nie wysypuje, sortowanie działa, ale nadal otwiera się puste okno.

0

Stworzyłeś nowe kontrolki, ale nie dodałeś ich do żadnego elementu okna, dlatego się nie wyświetlają.
Tu masz przykłady:
http://stackoverflow.com/questions/2814866/programmatically-add-controls-to-wpf-form
https://arcanecode.com/2007/09/07/adding-wpf-controls-progrrammatically/

0

Problem rozwiązany! Dziękuję ślicznie za pomoc. :)

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