Witam. Mam kilka problemów które wydają się być proste, ale ja już na to nie mam pomysłów.
1)Pierwszy z nich to zabezpieczenie przed wpisywaniem znaków, liter do Editów. W editach mogą znajdować się tylko cyfry 0-9. Bo gdy wpiszę literę lub znak, to wywala błąd przy kliknięciu buttona który ma rysować funkcję matematyczną. Próbowałem robić tak:
*for(int i=0;i<=9;i++){
if(Edit1->Text!=i){
Application->MessageBox("Nie można wpisywac liter i znakow do Edita", "Blad",MB_OK | MB_ICONWARNING);
break;
oraz tak (zakres cyfer w ascii):
/*if(Edit1->Text <'48' || Edit1->Text > '57')
Application->MessageBox("Nie można wpisywac liter i znakow do Edita","Blad", MB_OK | MB_ICONWARNING);
nic z tego nie działa i błąd jak był tak jest. Próbowałem zamienić też Edity na MaskEdity ale to nie dobry pomysl bo mask edit wyświetla w Edicie te znaki “_”.
2)drugi problem to aktualizowanie informacji o wykresie. Mam Forma 5 w którym są labele które mają za zadanie wyświetlać Dane funkcji. Czyli współczynnik a, b,c, delta, miejsca zerowe. Po narysowaniu pierwszego wykresu działa, ale jak narysuje kolejny to już się nie aktualizuje, a co ciekawe jak narysuje f.kwadratową to aktualizuje się zawsze, a kod jest identyczny jak do pozostalłych funkcji. Tutaj próbowałem kod wrzucić do buttona który rysuje wykres i po narysowaniu przekazywał by dane do tego Forma5. Próbowałem też osobnym przyciskiem lecz nic z tego.
3)Kolejny problem to rysowanie funkcji Logarytmicznej. przerabiałem ją tyle razy ale błędu nie usunąłem. jak klikam przycisk do rysowainia wywala błąd log sing error, ale funkcję rysuje (o dziwo) ale troche nie tak jak trzeba bo zamiast rysować mniej więcej tak(zielony kolor) to rysuje tak(czerwony):
Bo cały Edit traktuje się jako obiekt,przed sprawdzeniem musisz wyciągnąć tekst przypisując go zmiennej stringowej i dopiero na tej zmiennej możesz sprawdzić.
AnsiString lancuch;
lancuch = Edit1->Text();
Tu chyba nawet funkcja jest GetString
dopiero tą zmienną możesz traktować jako tablicę
Co do drugiego punktu przed narysowaniem wykresu czyść Canvas np rysując biały prostokąt.
Obsługę grafiki łatwo znajdziesz.
int myValue = Edit1->Text.ToInt(); - wyciąganie wartości z konwersją na liczbę
1 sposób z tym przypisaniem editów dalej nie działa
a co do wykresu to czyszczenie canvasa mi nie pasuje bo jak chce narysować np. pare wykresów na jednym układzie to lipa :). Już nawet olać błąd, ale żeb dobrze rysowalo.
to znaczy ja c++ ucze sie okolo rok, bo to robie do szkoly projekt. Edity mam, ale nie znam tak zaawansowanych funkcji dlatego opieram to na takich podstawowych i na takich chcę to tez zrobic. a co do log, to nie dziele przez 0, bo ustawilem zabezpieczenie e wpisana liczba nie moze byc mniejsza niz 1.
uporałem się, po problemie. została kwestia znaków w editach (żeby nie można było wpisywac) oraz aktualizacja danych o wykresie. (jak naciskam przycisk rysuj, to pokazują się informacje. ale jak narysuje inny wykres to się nie aktualizują)