Visual C++ - Pętla switch i While || WinAPI, C++ Builder

Po pierwsze wszędzie pozbyłeś się: else Dobrze=false;

Po drugie, z treści komunikatu jednoznacznie wynika że ma być:

(TXB20->Text->Length>0)

ale ty twierdzisz że to sprawdzałeś, jedno z was (ty lub kompilator) kłamie.

Jest ok. (TXB20->Text->Length>0) działa. Za dużo projektów z tą samą zawartością porobiłem i panował chaos. Działa. Znaczy wybieram 3 to dodaje liczby z 3 pierwszych pól. OK ale średnia. Więc wpisałem to co poleciłeś:

if(Dobrze) MessageBox::Show (Convert::ToString (wynik/NumericUpDown->Value),"Wynik");

else MessageBox::Show("Wpisz dane");

I jak zwykle błąd.

c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll: or 'System::Decimal System::Decimal::operator /(System::Decimal,System::Decimal)'

        while trying to match the argument list '(double, System::Decimal)'

Bo zmieniłeś nazwę z NumericUpDown na wybor. Czy ty próbujesz czasami samodzielnie się zastanowić ?

Zrezygnuj z tego .NET i będzie o wiele mniej problemów.

zmieniłem an wybor bo nazwe tego NumericUpDown też na wybor zmieniłem.

Ok mogę zrezygnować z .NET

I dajmy już sobie lepiej siana z tym “liczydłem średniej” bo więcej z tego SPAMU niż czegokolwiek. taki mały programik a tyle problemów.

Co ty byś polecił ? WinApi. Spoko. nawet miałem kilka kursów, ale z nich się nic nie dowiedziałem. Nawet głupiego Button nie umiałem wstawić. Pracowałem w Dev-C++.

W czym ty pracujesz bo widzę że na C++ się znasz. Co polecasz itp.

Jeżeli wersja co podałeś liczyła poprawnie sumę to nie ma prawa nie zadziałać.

wynik/=wybor->Value;Dobrze) MessageBox::Show (Convert::ToString (wynik),"Wynik");MessageBox::Show("Wpisz dane");   [/code]



C++ Builder, najlepiej, albo DevCpp + mingw + QT

W tym co napisałeś znajduje błąd wynik/=wybor->Value; (chodzi o ten znak =) więc go wywaliłem i znowu ten sam błąd co wcześniej.

P.S. co to QT ? minigw to kompilator prawdopodobnie.

DevCpp mam ale coś mi się rypie. nawet Pustego projektu nie kompiluje. jakiś błąd z main.o. Re instalację zrobie bo wcześniej działało.

Czy Turbo C++ Explorer się nadaje ? Czy raczej C++ Builder lepszy.

W Builder’ze tworząc formatkę widzisz co tworzysz.

Zgaduje jak to może być w tym cholernym .NET

wynik/=Convert::ToDouble(wybor->Value);

Nie ma to jak utrudniać sobie życie :smiley:

baciany , czy Tobie nie chodzi może o coś takiego?

double suma = 0, ile = 0;

 //przeszukanie wszystkich kontrolek

 for(int i = 0; i < this->Controls->Count; i++)

 {

	 //jeśli to TextBox

	 if(this->Controls[i]->Name->StartsWith("textBox"))

	 {

		 double wartosc = 0;

		 //próba konwersji

		 if(double::TryParse(this->Controls[i]->Text, wartosc))

		 {

			 suma += wartosc;

			 ile++;

		 }

	 }

 }

 double srednia = suma / ile;

 MessageBox::Show("Średnia podanych liczb wynosi: " + srednia.ToString());

//dopisane: A tu wersja z numeric:

double suma = 0, ile = 0;

 //tyle razy, ile podano w numericu

 for(int i = 1; i <= this->numericUpDown1->Value; i++)

 {

	 //sprawdzenie każdej kontrolki

	 for(int j = 0; j < this->Controls->Count; j++)

	 {

		 //jeśli jest szukanym TextBoxem

		 if(this->Controls[j]->Name == ("textBox" + i.ToString()))

		 {

			 double wartosc = 0;

			 //próba konwersji

			 if(double::TryParse(this->Controls[j]->Text, wartosc))

			 {

				 suma += wartosc;

				 ile++;

			 }

			 else

			 {

				 MessageBox::Show("Podaj wartość w TextBox" + i.ToString());

			 }

		 }

	 }

 }

 double srednia = suma / ile;

 MessageBox::Show("Średnia podanych liczb wynosi: " + srednia.ToString());

No i Brawo. IDEALNIE.

A teraz jakbyś mi pomógł (nawet na PM) wyjaśnić jak tego dokonałeś to byłbym wdzięczny.

Nie bardzo rozumiem, co tu wyjaśniać… Znam .NET, to napisałem, zamiast kombinować w nieskończoność i narzekać. Wszystko to, co nie jest standardowymi konstrukcjami języka programowania, okomentowałem. Ale jak masz jakieś konkretne pytania, to śmiało.

To tak na początek.

.NET lepsze czy WinAPI ??

Co bardziej uniwersalne i lepsze dla początkującego (co chyba widać i to bardzo). Jakie środowiska najlepiej używać itp. takie podstawowe pytania.

Co do twojego kodu to jak się wczytałem to go nawet rozumiem.

WinAPI raczej będzie traciło na popularności jeśli chodzi o tworzenie aplikacji okienkowych na rzecz .NET, bo to drugie jest łatwiejsze i przyjaźniejsze, a poza tym bardziej teraz promowane. Poza tym .NET jest w zasadzie formą opakowania WinAPI, no i z .NET da się też korzystać z WinAPI w razie potrzeby. Tu np. jest dyskusja o tym: http://forum.4programmers.net/viewtopic.php?p=519104, mam też nadzieję, że jak Fiołek skończy świętować urodziny, to coś Ci napisze :wink:

Co do środowiska - to zależy od języka i poziomu zaawansowania.

Początkujący powinni się raczej zająć programowaniem w konsoli, bo w okienkach się pogubią.

bardziej uniwersalne, to jest wspomniane Qt :wink: btw: ślicznie się integruje z Eclipse :slight_smile:

Hmm konsola mnie już nie zaspakaja. Znam może podstawy C++ (zmienne, funkcje, pętle, tablice itp) ale to wystarcza do prostych programów. Chciałem przejść na coś w Okienkach i tak jakby wszystko to co zrobiłem w konsoli “przelać” na okienka. Martwią mnie te różnice.

W Dev-C++ (nie w wxDev-X++) jak się utworzy nowy projekt Windows Application to tak się używa WinAPI czy czego ? Jak w tym wstawić najnormalniejszy BUTTON a w nim dać MessageBox jakiś ?? Bo jak skopiuje z Visual C++ komendy to ani rusz a kursy z internetu to za bardzo mi nie pomagają…

Najlepiej by było jakbym sie nauczył C++ pod to Dev-C++ bo jest darmowe.

Więc co anajlepsze by było dla mnie (jako początkującego): Dev-C++, C++ Builder czy Visual C++ ??

Co to tego QT to co to jest ?? Też jakaś biblioteka wizualna ?

Razem z DevCpp masz dostarczone przykłady programików

%DevPath%\Examples\

w tym napisanych w WINAPI np:

%DevPath%\Examples\WinTest

QT: Jest to oczywiście biblioteka, jeżeli napisałeś program okienkowy z użyciem QT, to bez kłopotów skompilujesz go zarówno pod Windows’ami jak i pod Linux’em/Unix’em.

Masz jakieś pojęcie o programowaniu obiektowym? Bo jeśli nie, to rzucanie się na okienka to skok na głęboką wodę.

Hmm więc teraz jestem w rozterce co wybrać.

Visual C++ - Gotowe komponenty, wykorzystuje .NET, wcale nie takie trudne. Kursów też kilka mam (dobrych)

Borland C++ Builder - Też gotowe komponenty ale już gorzej z całą resztą bo polecenia z Visual C++ tunie działają (więc to chyba daruje sobie)(kursów dobrych znalazłem mało)

QT+Eclipse+minigw - tego jeszcze nie znam ale zapowiada się ciekawie

Dev-C++ (czyli winAPI chyba) - no tu to musiałbym jakiś dobry kurs WinAPI zdobyć.

wxDev-C++ - wxWidgets - nie wiem co to, po co to i czy dobre to ale z rożnych komentarzy programu na stronie DobreProgramy wynika że coś ciekawę…

Co jest najbardziej przydatne, w czym można najwięcej osiągnąć, co jest najłatwiejsze, co jest najlepsze.

Co do Programowania obiektowego to nie znam.

Jeżeli mi nic z tego nie wyjdzie to trudno, wrócę do KONSOLI a dopiero za jakiś czas zacznę OKIENKA.

Borland C++ Builder - nie działa .NET, pozostałe polecenia działają jak najbardziej, kurs nie potrzebny bo prawie na każdy komponent jest przykład użycia, to nie jest jakiś Visual, dopóki ci nie powiedzą jak to zrobić to możesz tylko się domyślać i zgadywać, nie mówiąc o tym że prawie każda pozycja help’a z przykładami.

Super.

Dziś znalazłem wtyczkę do Dev-C++ co się zowie RAD C++. Wydaje się stosunkowo łatwe.

Przykłady co prawda są ale za dużo z nich się nie dowiedziałem.

Jak na razie zajmę sie chyba dalej konsolą a Okienka będę testował w różnych technikach (WinApi, .NET, RAD C++, C++ Builder itp)

Dzięki wam za pomoc. Jakbym miał dalsze pytania to napiszę… Ale jak na razie widzę że Okienka to nie taka łatwa sprawa.

Nie wiem, jak w innych technologiach, ale w .NET pisanie aplikacji okienkowych jest łatwiejsze niż tabliczka mnożenia. Do tego masz olbrzymią i dobrze opracowaną dokumentację on-line z przykładami do wszystkiego. I jeszcze coś - C++ nie jest najlepszym językiem do .NET, moim zdaniem używanie tego połączenia jest nieco na siłę.

Tylko, że jeśli się chce sensownie pracować z czymkolwiek okienkowym najpierw trzeba dobrze znać podstawy, które są niezwiązane z interfejsem, takie jak programowanie obiektowe, struktury danych, dostępne biblioteki, itp.