Autor Wątek: Problem z kodem (C#)  (Przeczytany 2868 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Problem z kodem (C#)
« dnia: 05 Styczeń 2016, 20:24:25 »
Witam. Piszę generator semaforów w C#, obecnie wygląda to tak:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int Typ = 0;
            string Kom1 = "o";
            while (true)
            {
                Console.Write("Typ: \n1 - Semafor\n2 - Tarcza manewrowa\n3 - Tarcza ostrzegawcza\n4 - Powtarzacz\n5 - Semafor SBL\n>");
                try { Typ = int.Parse(Console.ReadLine()); }
                catch
                {
                    Console.WriteLine("Nie podano odpowiednich danych.");
                }
                if (Typ < 1) Console.WriteLine("Nie podano odpowiednich danych.");
                else
                    if (Typ > 5) Console.WriteLine("Nie podano odpowiednich danych.");
                    else break;
            }
            while (true)
            {
                Console.Write("Komora 1: \nz - zielona\nc - czerwona\np1 - pomarańczowa górna\np2 - pomarańczowa dolna\nb - biała\nn - niebieska\n>");
                try { Kom1 = (Console.ReadLine()); }
                catch
                {
                    Console.WriteLine("Nie podano odpowiednich danych.");
                }
                switch (Kom1)
                {
                    case "z":
                        Kom1 = "light01";
                        break;
                    case "c":
                        Kom1 = "light05";
                        break;
                    case "p1":
                        Kom1 = "light03";
                        break;
                    case "p2":
                        Kom1 = "light04";
                        break;
                    case "b":
                        Kom1 = "light07";
                        break;
                    case "n":
                        Kom1 = "light00";
                        break;
                    default:
                        Console.WriteLine("Nie podano odpowiednich danych.");
                        return;
                }
            }
            while (true)
            {
            }
        }
    }
}
I mam problem. Po uruchomieniu, wybraniu typu i komory wybór komory się zapętla zamiast przejść do następnej (czyt. wyłączyć program, bo modułu drugiej komory jeszcze nie mam). Okazuje się, że break "cofa" nie do następnej komory (while (true)), a z powrotem do case, czyli zapętla. Jak rozwiązać ten problem?

Dodano: 05 Styczeń 2016, 22:25:46


Problem rozwiązałem komendami goto.
« Ostatnia zmiana: 05 Styczeń 2016, 22:25:46 wysłana przez jakubg1 »

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline Misiek5

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 332
  • Kartoteka
  • Siła reputacji: 20
  • Misiek5 dróżnik przejazdowyMisiek5 dróżnik przejazdowyMisiek5 dróżnik przejazdowyMisiek5 dróżnik przejazdowy
  • Młody programista z 5-letnim doświadczeniem
  • Distance Travelled: 3197km
  • Trains Routed: 1473
Re: Problem z kodem (C#)
« Odpowiedź #1 dnia: 05 Styczeń 2016, 23:41:01 »
Problem rozwiązałem komendami goto.
Goto są wysoce niezalecane.

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #2 dnia: 06 Styczeń 2016, 10:20:21 »
Problem rozwiązałem komendami goto.
Goto są wysoce niezalecane.
Niby dlaczego? W pewnym miejscu dajesz goto xxx a w miejscu w którym chcesz do którego przeniosło xxx:. U mnie to działa. Zresztą nie ma innej możliwości.

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline mikson

  • Supporter
  • *
  • Pioneer
  • *
  • Moderowany
  • Wiadomości: 360
  • Kartoteka
  • Siła reputacji: 65
  • mikson prezesmikson prezesmikson prezesmikson prezesmikson prezesmikson prezesmikson prezesmikson prezesmikson prezesmikson prezesmikson prezesmikson prezes
  • Distance Travelled: 2207km
  • Trains Routed: 1556
Re: Problem z kodem (C#)
« Odpowiedź #3 dnia: 06 Styczeń 2016, 10:57:05 »
Problem rozwiązałem komendami goto.
Goto są wysoce niezalecane.
Niby dlaczego? W pewnym miejscu dajesz goto xxx a w miejscu w którym chcesz do którego przeniosło xxx:. U mnie to działa. Zresztą nie ma innej możliwości.
Za długo byłoby pisać. :D Dlatego masz link:
http://bfy.tw/3aLo
« Ostatnia zmiana: 06 Styczeń 2016, 10:59:36 wysłana przez mikson »
Ty deweloper! Czytałeś prawo autorskie?!
Prawo autorskie, co to znaczy?
No jesteś złodziejem, czy nie?

Offline Xoov

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 41
  • Kartoteka
  • Siła reputacji: 2
  • Xoov pracownik torowy
  • Co tam?
  • Distance Travelled: 1982km
  • Trains Routed: 140
Re: Problem z kodem (C#)
« Odpowiedź #4 dnia: 06 Styczeń 2016, 11:08:01 »
W konstrukcji switch … case … break słowo break; powoduje wyjście z bloku switch. Przyjęta przez Ciebie konwencja while(true) bardzo mi się nie podoba, nie lepiej by było to zrobić tak:
bool warunek = true;
while(warunek)

                switch (Kom1)
                {
                    case "z":
                        Kom1 = "light01";
                        warunek = false;
                        break;
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #5 dnia: 06 Styczeń 2016, 13:50:57 »
Najpierw zrobię wszystko, potem będę dopieszczał.

Dodano: 06 Styczeń 2016, 13:53:05


Problem rozwiązałem komendami goto.
Goto są wysoce niezalecane.
Niby dlaczego? W pewnym miejscu dajesz goto xxx a w miejscu w którym chcesz do którego przeniosło xxx:. U mnie to działa. Zresztą nie ma innej możliwości.
Za długo byłoby pisać. :D Dlatego masz link:
http://bfy.tw/3aLo
Cytat: Igor1981
Samo w sobie goto nie jest złe, tylko trzeba umieć właściwie z niego korzystać.

Dodano: 06 Styczeń 2016, 13:55:03


Oto jak wygląda kod na chwilę obecną:
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int Typ = 0;
            string Kom1 = "o";
            string Kom2 = "o";
            string Kom3 = "o";
            string Kom4 = "o";
            string Kom5 = "o";
            while (true)
            {
                Console.Write("Typ: \n1 - Semafor\n2 - Tarcza manewrowa\n3 - Tarcza ostrzegawcza\n4 - Powtarzacz\n5 - Semafor SBL\n>");
                try { Typ = int.Parse(Console.ReadLine()); }
                catch
                {
                    Console.WriteLine("Nie podano odpowiednich danych.");
                }
                if (Typ < 1) Console.WriteLine("Nie podano odpowiednich danych.");
                else if (Typ > 5) Console.WriteLine("Nie podano odpowiednich danych.");
                else break;
            }
            while (true)
            {
                Console.Write("Komora 1: \nz - zielona\nc - czerwona\np1 - pomarańczowa górna\np2 - pomarańczowa dolna\nb - biała\nn - niebieska\n>");
                try { Kom1 = (Console.ReadLine()); }
                catch
                {
                    Console.WriteLine("Nie podano odpowiednich danych.");
                }
                switch (Kom1)
                {
                    case "z":
                        Kom1 = "light01";
                        goto Komora2;
                    case "c":
                        Kom1 = "light05";
                        goto Komora2;
                    case "p1":
                        Kom1 = "light03";
                        goto Komora2;
                    case "p2":
                        Kom1 = "light04";
                        goto Komora2;
                    case "b":
                        Kom1 = "light07";
                        goto Komora2;
                    case "n":
                        Kom1 = "light00";
                        goto Komora2;
                    default:
                        Console.WriteLine("Nie podano odpowiednich danych.");
                        break;
                }
            }
            Komora2:
            while (true)
            {
                Console.Write("Komora 2: \nz - zielona\nc - czerwona\np1 - pomarańczowa górna\np2 - pomarańczowa dolna\nb - biała\nn - niebieska\ne - koniec komór\n>");
                try { Kom2 = (Console.ReadLine()); }
                catch
                {
                    Console.WriteLine("Nie podano odpowiednich danych.");
                }
                switch (Kom2)
                {
                    case "z":
                        Kom2 = "light01";
                        goto Komora3;
                    case "c":
                        Kom2 = "light05";
                        goto Komora3;
                    case "p1":
                        Kom2 = "light03";
                        goto Komora3;
                    case "p2":
                        Kom2 = "light04";
                        goto Komora3;
                    case "b":
                        Kom2 = "light07";
                        goto Komora3;
                    case "n":
                        Kom2 = "light00";
                        goto Komora3;
                    case "e":
                        Kom2 = "o";
                        Kom3 = "o";
                        Kom4 = "o";
                        Kom5 = "o";
                        goto Wskaźniki;
                    default:
                        Console.WriteLine("Nie podano odpowiednich danych.");
                        break;
                }
            }
        Komora3:
            {
                while (true)
                {
                    if (Typ == 2) goto Wskaźniki;
                    else if (Typ == 3) goto Wskaźniki;
                    else
                    {
                        Console.Write("Komora 3: \nz - zielona\nc - czerwona\np1 - pomarańczowa górna\np2 - pomarańczowa dolna\nb - biała\nn - niebieska\ne - koniec komór\n>");
                        try { Kom3 = (Console.ReadLine()); }
                        catch
                        {
                            Console.WriteLine("Nie podano odpowiednich danych.");
                        }
                        switch (Kom3)
                        {
                            case "z":
                                Kom3 = "light01";
                                goto Komora4;
                            case "c":
                                Kom3 = "light05";
                                goto Komora4;
                            case "p1":
                                Kom3 = "light03";
                                goto Komora4;
                            case "p2":
                                Kom3 = "light04";
                                goto Komora4;
                            case "b":
                                Kom3 = "light07";
                                goto Komora4;
                            case "n":
                                Kom3 = "light00";
                                goto Komora4;
                            case "e":
                                Kom3 = "o";
                                Kom4 = "o";
                                Kom5 = "o";
                                goto Wskaźniki;
                            default:
                                Console.WriteLine("Nie podano odpowiednich danych.");
                                break;
                        }
                    }
                }
            }
    Komora4:
        {
            while (true)
            {
                if (Typ == 4) goto Wskaźniki;
                else if (Typ == 5) goto Wskaźniki;
                else
                {
                    Console.Write("Komora 4: \nz - zielona\nc - czerwona\np1 - pomarańczowa górna\np2 - pomarańczowa dolna\nb - biała\nn - niebieska\ne - koniec komór\n>");
                    try { Kom4 = (Console.ReadLine()); }
                    catch
                    {
                        Console.WriteLine("Nie podano odpowiednich danych.");
                    }
                    switch (Kom4)
                    {
                        case "z":
                            Kom4 = "light01";
                            goto Komora5;
                        case "c":
                            Kom4 = "light05";
                            goto Komora5;
                        case "p1":
                            Kom4 = "light03";
                            goto Komora5;
                        case "p2":
                            Kom4 = "light04";
                            goto Komora5;
                        case "b":
                            Kom4 = "light07";
                            goto Komora5;
                        case "n":
                            Kom4 = "light00";
                            goto Komora5;
                        case "e":
                            Kom4 = "o";
                            Kom5 = "o";
                            goto Wskaźniki;
                        default:
                            Console.WriteLine("Nie podano odpowiednich danych.");
                            break;
                    }
                }
            }
        }
Komora5:
    {
        while (true)
        {
            Console.Write("Komora 5: \nz - zielona\nc - czerwona\np1 - pomarańczowa górna\np2 - pomarańczowa dolna\nb - biała\nn - niebieska\ne - koniec komór\n>");
            try { Kom5 = (Console.ReadLine()); }
            catch
            {
                Console.WriteLine("Nie podano odpowiednich danych.");
            }
            switch (Kom5)
            {
                case "z":
                    Kom5 = "light01";
                    goto Wskaźniki;
                case "c":
                    Kom5 = "light05";
                    goto Wskaźniki;
                case "p1":
                    Kom5 = "light03";
                    goto Wskaźniki;
                case "p2":
                    Kom5 = "light04";
                    goto Wskaźniki;
                case "b":
                    Kom5 = "light07";
                    goto Wskaźniki;
                case "n":
                    Kom5 = "light00";
                    goto Wskaźniki;
                case "e":
                    Kom5 = "o";
                    goto Wskaźniki;
                default:
                    Console.WriteLine("Nie podano odpowiednich danych.");
                    break;
            }
        }
    }
            Wskaźniki:
while (true)
{
    if (Typ == 4) goto Wskaźniki;
    else if (Typ == 5) goto Wskaźniki;
    else
    {
    }
}
        }
    }
}
:)

Dodano: 06 Styczeń 2016, 14:43:25


Dobra, stwierdzam, że jest jeszcze za wcześnie na robotę z C#, prace porzucam.
« Ostatnia zmiana: 06 Styczeń 2016, 14:43:25 wysłana przez jakubg1 »

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #6 dnia: 23 Kwiecień 2016, 10:09:53 »
Dzisiaj chcę zrobić taką aplikację czytającą pierwszy wiersz z pliku, usuwającą ten wiersz i jednocześnie wysyłającą tą zawartość wiersza jako komendę do TD2. Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] t = File.ReadAllLines(@"c:\Users\beata\Desktop\td2pulpit\kolejka.txt");
        }
        Socket sListener;
    }
}
Niestety, nic nie działa, a nie wiem, jak naprowadzić się na jakiś trop. Żadne strony nie pomagają, dlatego zwracam się do was.
« Ostatnia zmiana: 23 Kwiecień 2016, 10:12:18 wysłana przez jakubg1 »

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #7 dnia: 27 Listopad 2016, 12:02:21 »
Post wyżej jakby co nieaktualny.
Odgrzewam wątek ponieważ nie ma sensu robić nowego.
Mam takie pytanie: są sobie 2 grupy po 3 radio buttony (screen). Jak mam zrobić, by zaznaczenie któregoś z grupy "Odchylenie semafora" nie odznaczało tego z grupy "Kolejność powtarzacza"? Z góry dziękuję za odpowiedzi.
Pozdrawiam.

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline MrDyrektor

  • Supporter
  • *
  • Moderowany
  • Wiadomości: 92
  • Kartoteka
  • Siła reputacji: 32
  • MrDyrektor dyżurny ruchuMrDyrektor dyżurny ruchuMrDyrektor dyżurny ruchuMrDyrektor dyżurny ruchuMrDyrektor dyżurny ruchuMrDyrektor dyżurny ruchu
  • Distance Travelled: 746km
  • Trains Routed: 264
Re: Problem z kodem (C#)
« Odpowiedź #8 dnia: 27 Listopad 2016, 12:21:19 »
Musisz stworzyć osobny Panel albo Groupbox i do niego władować te buttony, które odpowiadają za jedną opcję. Innymi słowy, każda grupa radiobuttonów musi posiadać swój pojemnik (container).

Teraz wszystkie działają jako jeden, ponieważ wszystkie są przydzielone do domyślnego containera
« Ostatnia zmiana: 27 Listopad 2016, 12:24:06 wysłana przez MrDyrektor »

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #9 dnia: 28 Listopad 2016, 07:20:58 »
Działa, dzięki ;)
Tematu nie zamykam bo dopiero zaczynam pracę nad generatorem i czeka przede mną jeszcze wiele kłopotów i problemów.



Jak wyciągnąć numer wybranej pozycji z listy (Combo Box)?

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline _l0stfake7

  • Administrator
  • Supporter
  • *
  • Wiadomości: 18
  • Kartoteka
  • Siła reputacji: 1
  • _l0stfake7 pracownik torowy
  • Distance Travelled: 1807km
  • Trains Routed: 5
Re: Problem z kodem (C#)
« Odpowiedź #10 dnia: 28 Listopad 2016, 08:21:03 »
Sam numer wybranego indeksu uzyskasz w ten sposób:
int selectedIndex = nazwatwojegocomboboxa.SelectedIndex;
Natomiast wartość danego indeksu uzyskasz tak:
Object selectedItem = nazwatwojegocomboboxa.SelectedItem;
String test = selectedItem.toString();
« Ostatnia zmiana: 28 Listopad 2016, 08:24:23 wysłana przez _l0stfake7 »

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #11 dnia: 28 Listopad 2016, 16:10:02 »
Dzięki. Tak na marginesie, chcesz żebym dodał cię do projektu?
Cytuj
Jeśli chcesz współtworzyć projekt napisz PW na http://eu07.kolej.org.pl z prośbą o dołączenie do projektu.

Kolejny problem. (załącznik)
Jak mam to poprawnie przekonwertować?

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline _l0stfake7

  • Administrator
  • Supporter
  • *
  • Wiadomości: 18
  • Kartoteka
  • Siła reputacji: 1
  • _l0stfake7 pracownik torowy
  • Distance Travelled: 1807km
  • Trains Routed: 5
Re: Problem z kodem (C#)
« Odpowiedź #12 dnia: 28 Listopad 2016, 17:22:42 »
Dodaj mnie, mój nick (l0stfake7). Generalnie to te wszystkie zmienne w twojej klasie okno pełnią rolę pól i powinny być deklarowane przed konstruktorem(wraz z modyfikatorem dostępu) a w jego wnętrzu inicjalizowane, poniższy przykład rozwiązujący przy okazji twój problem:
        private String debug;
        //reszta zmiennych

        public okno()
        {
            debug = "Debugowanie \r\n" + typsemafora;
            //reszta inicjalizacji zmiennych
            InitializeComponent();
        }
« Ostatnia zmiana: 28 Listopad 2016, 17:24:52 wysłana przez _l0stfake7 »

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #13 dnia: 28 Listopad 2016, 17:27:01 »
Zaproszenie wysłane. Dalsza dyskusja będzie na GitHubie. Wątek tymczasowo zamykam, gdy trafimy na poważniejszy problem - napiszemy.

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej

Offline jakubg1

  • Supporter
  • *
  • Pioneer
  • *
  • Wiadomości: 738
  • Kartoteka
  • Siła reputacji: 8
  • jakubg1 pracownik torowy
  • Jestem na diecie... ...postowej.
  • Distance Travelled: 1341km
  • Trains Routed: 340
Re: Problem z kodem (C#)
« Odpowiedź #14 dnia: 11 Grudzień 2016, 12:04:52 »
Mam pytanie, chociaż tym razem związane z tematem tym razem tylko częściowo.
Co należy zrobić aby aplikacja napisana w C# działała w systemie Android?

http://img.uetam.pl/image/tHwn
Koniec z TD2 na zawsze. Zbyt słaby komputer, a w związku z nowymi wymogami procesor ucierpiałby 1000razy bardziej