Konwersja kodu konsola->formularz

0

Witam !

Mam pewien problem, otóż mam napisany program w konsoli cpp, a musiałbym go niejako 'przekonwertować' na okienka windows, natomiast kompletnie nie wiem, jak się za to zabrać, nie zajmowałem się tym wcześniej. Jakieś sugestie/wskazówki?

Oto mój kod:
http://wklej.org/id/2168017/

1

Ściągnij Qt (ew. jakąś inną bibliotekę do okienek), wyklikaj sobie projekt GUI, napisz obsługę slotów z wykorzystaniem funkcji, które już masz (na 1. rzut oka jest spoko, nie korzystasz ze stanów globalnych, a funkcje nie wydają się łamać SRP). Jest do tego pełno tutoriali.

2

Rozumiem, że oryginalny kod pisał ktoś inny, bo zdajesz się go zupełnie nie rozumieć.

Nie znam Windows Forms, więc wiele z tym nie pomogę, ale:

  1. Zakładam, że dane wejściowe powinieneś pobierać z editboxów.
  2. W procedurze obsługi przycisku powinieneś je przetwarzać i wypluwać do innego editboxa/labela/textview/czegokolwiek.

I tak już przy okazji: w C++ używanie nagiego new i delete to antyidiom. Od tego są kontenery (np. std::vector) i smart pointery (np. std::unique_ptr)

0
kq napisał(a):

Nie znam Windows Forms, więc wiele z tym nie pomogę, ale:

  1. Zakładam, że dane wejściowe powinieneś pobierać z editboxów.
  2. W procedurze obsługi przycisku powinieneś je przetwarzać i wypluwać do innego editboxa/labela/textview/czegokolwiek.

Tyle wiem. ;) A skąd założenie, że go nie rozumiem, coś jest nie tak w tym drugim kodzie?

0

To co zrobiłeś to nie jest C# tylko C++ CLR/CLI, który dzisiaj jest już tylko reliktem przeszłości. Poza tym @kq ma racje, bo nie rozumiesz co piszesz. Mieszasz managed code ze zwykłymi wskaźnikami etc. Makaron straszny.

Jak już koniecznie chcesz używać C++ CLI to pisz tylko managed code używając chocby gcnew zamiast new etc...

1

Może najpierw poducz się jak się programuje na okienka, a potem zajmij się przerabianiem programu.

W Windows Forms gdy klikniesz 2× na formę, utworzy się metoda - zdarzenie na otwarcie formy. Tam możesz wstawić jakiś kod który ma się wykonać na starcie.

Gdy położysz jakąś kontrolkę, np. Button, i klikniesz ją 2×, utworzy się metoda na kliknięcie przycisku.
Pobaw się tym, zobacz jak się obsługuje np. Label, TextBox, a potem zastanów się, jak przerobić program.

Ćwiczenie: Button, Label, TextBox. Zrobić tak, by po kliknięciu przycisku label przyjmował tekst wpisany w textboksa.
To pierwszy program (takie “hello world”) który zawsze piszę gdy poznaję nowe GUI.

0

...przecież to chyba to samo.

Właśnie chodzi o to, że to nie powinno być to samo. Przenoszenie nawyków z C++ do zarządzanego kodu .NET to niemądre posunięcie. Przedkładasz niebezpieczny kod niezarządzany przez GC, wskaźniki, zero automatycznej kontroli pamięci nad podstawowe mechanizmy .NET czyli Garbage Collector usuwający na bieżąco niepotrzebne obiekty, typy referencyjne ^, używanie gcnew czy ref class o przestarzałym C++ CLI już nie wspominając. Nie mówiąc już także o uzywaniu tablic zamiast list i to nawet nie list z STL tylko tych dostępnych od razu w .NET'cie.

Przeczytaj jakikolwiek kurs WinForms i C++ CLI raczej sobie daruj na rzecz C#, bo pisząc w CLI przenosisz się wstecz o dobre 15 lat.

0

Mój kod http://wklej.org/id/2172140/
Błędy, głównie z tablicami (jakieś podstawowe, to dlatego, że nie miałem c#;) ) http://screenshot.sh/n7Wu9ie85limk

1

Jak piszesz w C# to używaj struktur .NET,** a nie niezarządzanego kodu.**
Masz to napisane jak wół w błędach. Ile mam Ci jeszcze to powtarzać? Przerobił byś byle kurs C# i byś wiedział o co chodzi, a nie przerabiał na pałę.

**Gołe wskaźniki, goły new i delete etc... to niebezpieczny, niezarządzany kod z punktu widzenia .NET'a i NIEWSKAZANE JEST JEGO UŻYWANIE tak jak przenoszenie praktyk z C/C++ do C# **

Mówię ostatni raz :)

Dlatego pozbądź się wreszcie tych gwiazdek z kodu, wydal tablice na rzecz listy, powywalaj wszystkie delete, dowiedz się, że klasa to typ referencyjny etc..., a przede wszystkim przeczytaj jakikolwiek kurs C#, bo C# to nie jest C++ i pisanie programów w sposób jaki teraz to robisz NIC NIE DA.

0

To jest w c#

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