Program napisany z nudów

Czyli miejsce, w którym można poruszać tematy nie dające przyporządkować się do pozostałych działów ale uwaga tutaj również obowiązują przyjęte zasady na forum
Awatar użytkownika
owoc_leśny
-
Posty: 40
Rejestracja: 27 sty 2007, 19:16
Kontakt:

Program napisany z nudów

Post autor: owoc_leśny » 07 cze 2007, 19:06

Witam. Ostatnio się nudziłem i napisałem sobie program w Builderze 4 C++. Służy do odczytywania wartości rezystora na podstawie pasków i wyliczania jakiej wartości jest potrzebny rezystor aby podłączyć diodę do danego napięcia.
Chciałbym wykorzystałem go do zaliczenia w szkole z przedmiotu zwanego informatyka więc fajnie by było gdyby go ktoś przetestował i sprawdził czy są jakieś błędy.

PROGRAM

Niestety na RS bo jako załącznik się nie dało. Za duży plik.

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 07 cze 2007, 19:42

Coś duży ten exec. Skompresuj go programem UPX (polecam ten program), ja to zrobiłem i zajmuje teraz 250kB :)

Guzer
Użytkownik
Posty: 167
Rejestracja: 08 lis 2006, 18:36
Lokalizacja: Szczecin
Kontakt:

Post autor: Guzer » 07 cze 2007, 20:58

Taki exec powinien zajmować <100KB, ale niestety Borlandowe wynalazki zwłaszcza na domyślnych ustawieniach linkują mnóstwo niepotrzebnego śmiecia.
Zauważyłem jeden błąd: przy zmianie rodzaju rezystora (ilość pasków) tytuł nad drugą listą rozwijalną od prawej się nie zmienia (cały czas "Trzeci pasek").

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 08 cze 2007, 7:38

Guzer pisze:Taki exec powinien zajmować <100KB, ale niestety Borlandowe wynalazki zwłaszcza na domyślnych ustawieniach linkują mnóstwo niepotrzebnego śmiecia.
Ale przynajmniej taki program wszędzie działa, co w innych kompilatorach nie zawsze ma miejsce. Poza tym, jak sam napisałeś można to wyłączyć w opcjach :)

TeslaBuilder
-
Posty: 80
Rejestracja: 02 lut 2007, 11:31
Lokalizacja: Kalisz
Kontakt:

Post autor: TeslaBuilder » 08 cze 2007, 9:06

Witam.
A co z rezystorami o innej ilości pasków. Trzypaskowe można pominąć, ale te z sześcioma by się przydały.
Pozdrawiam.

Guzer
Użytkownik
Posty: 167
Rejestracja: 08 lis 2006, 18:36
Lokalizacja: Szczecin
Kontakt:

Post autor: Guzer » 08 cze 2007, 9:49

c4r0 pisze:Ale przynajmniej taki program wszędzie działa
Niekoniecznie, co za dużo to niezdrowo. Zazwyczaj bardziej przenośne są takie aplikacje, które mają mniej zależności. Program ładuje do pamięci DLLe, które zdają mi się zupełnie w nim niepotrzebne - m. in. obsługa OLE, drukowania i rejestru systemowego (co on z tego rejestru czyta? bo jakieś wartości odczytuje, chociaż nic nie zapisuje).

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 08 cze 2007, 10:06

Powitanko,
Programik jest...pocieszny. W sumie działa i chwała mu za to, ale pozwól że jednak
dołączę się do listy problemów/niedociągnięć...

ekran1.gif - ten komunikat na koniec nie jest konieczny, co więcej wygląda jakoś
tak strasznie...dziecinnie. Jeżeli zakończenie pracy programu może skutkować utratą
jakichś niezapisanych wcześniej danych - owszem - wystawia się komunikat,
z reguły prośbę o decyzję użytkownika czy zapisać, czy wyjść... w Twoim przypadku
można spokojnie to pominąć.

Dalej ekran1.gif... albo program jest po polsku, albo po angielsku...Zakończ, About...?
A może lepiej "O programie"? Inna sprawa, że w niewłaściwy sposób wykorzystujesz
menu główne. Nie podpina się komend pod główne wejścia rozwijanych w dół menu.
Komendy generują poszczególne elementy już rozwiniętego menu. Tak sie przyjęło,
choć Windows dopuszcza różne kombinacje, nie zawsze estetyczne i sensowne.
Tego menu u Ciebie w zasadzie nie powinno być, ponieważ masz tylko dwa polecenia.
Jedno zamyka program, drugie wystawia dialog z informacją o autorze.
Lepiej jest zlikwidować to górne menu, a na formatce posadzić dwa guziki (np. z ikonkami)
i do nich podczepić obsługę zdarzeń.

Ciągle ekran1.gif - okno (forma) ma ustawiony zły styl, generalnie - to powinna być
foremka, która się nie skaluje ("sajzuje"), jedyny guzik w prawym górnym rogu to X do
zamykania. To dotyczy też pozostałych okienek. Powinny być zwykłe, nieskalowalne okna
dialogowe.

ekran2.gif - to co wspominałam o zmianie rozmiaru okna (popatrz jak to wygląda...)
i dodatkowo wchodzimy z zagadnienie "idiotoodporności" programu.
Ustawiłeś zły styl na combo-boxach, co pozwala wpisać tam cokolwiek, nie pamiętam
jak ten styl nazywa się w VCL, po windowsowemu to ma być CBS_DROPDOWNLIST,
czyli zwykła rozwijana lista wyboru. Żadnego ręcznego wpisywania danych.

Pamiętaj na przyszłość - jeżeli dasz użytkownikowi możliwość zrobienia głupstwa,
to on to zrobi, choćby przez ciekawość co się stanie.
Program musi umieć obronić się przed 'krzywymi' danymi wejściowymi.

ekran3.gif - kontynuacja zabawy we wpisywanie bzdur. Wygląda dość uroczo....
I co gorsza wystawia jakiś "wynik", zamiast nakrzyczeć - popraw dane wejściowe, tak?

Reasumując, według mnie do poprawy:
- zmiana stylu okien na klasyczne, nieskalowalne dialogi;
- zmiana stylu combo-box na proste, rozwijane listy;
- sprawdzanie sensowności danych, tam gdzie je użytkownik wpisuje ręcznie
i wystawienie informacji o błędnych danych, gdy potrzeba;
- usunięcie menu głównego na korzyść dwóch guzików;
- napisy na oknach w jednym języku;

Jak to pozmieniasz - to będzie całkiem fajny i nadający się do pokazania w szkole programik.

pozdrawiam,
N.
Załączniki
ekran1.GIF
(9.85 KiB) Pobrany 8797 razy
ekran2.GIF
(19.09 KiB) Pobrany 390 razy
ekran3.GIF
(16.39 KiB) Pobrany 380 razy

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 08 cze 2007, 21:05

Tasza ma rację, ale jak na to spojrzeć inaczej to robi co ma robić i na własny użytek może być (oprócz tego msgbox-a przy wyłączaniu :P ) Sam piszę takie programy do własnego użytku :) (może do nieco bardziej "ekscentrycznych" zastosowań)

Awatar użytkownika
Zenerek
Użytkownik
Posty: 335
Rejestracja: 21 lip 2006, 11:23
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: Zenerek » 08 cze 2007, 21:18

Pewnie, że może być ale dla własnych zastosowań. Jeżeli chce to pokazać w szkole, to musi to dopracować. Niech program będzie nawet na niskim poziomie, ale zrealizowany z dopieszczeniem najdrobniejszych szczegółów. Trzeba uczyć się od początku profesjonalizmu.
Ale OWOC_LEŚNY już ma zaczątki profesjonalisty - dał program do oceny innym co jest akurat bardzo profesjonalne :!:

ZbeeGin

Post autor: ZbeeGin » 08 cze 2007, 21:27

Przepraszam, że podepnę się do tematu. Mogę wam pokazać; jeśli już macie zamiar oceniać czyjeś programy, mój stary programik do rezystorków. Obecnie udostępniam go razem z kodem źródłowym.

A post może być stać się elementem wymiany własnych elektronicznych programów użytkowych. Co Wy na to?
Ostatnio zmieniony 28 sie 2008, 21:53 przez ZbeeGin, łącznie zmieniany 1 raz.

Awatar użytkownika
Zenerek
Użytkownik
Posty: 335
Rejestracja: 21 lip 2006, 11:23
Lokalizacja: Bydgoszcz
Kontakt:

Post autor: Zenerek » 08 cze 2007, 21:40

Mi się programik ZbeeGin'a podoba. Prosty, przejrzysty, intuicyjny, szybki. Nie ma zbędnych ustawień i to czyni go sensownym i praktycznym :!:

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 09 cze 2007, 9:34

Ja kiedyś coś takiego popełniłem. Dopracowane to to nie jest, nie jest nawet dokończone, ale nie zaszkodzi pokazać :)
Załączniki
kalkulator_elektryczny.zip
(20.57 KiB) Pobrany 470 razy

Guzer
Użytkownik
Posty: 167
Rejestracja: 08 lis 2006, 18:36
Lokalizacja: Szczecin
Kontakt:

Post autor: Guzer » 09 cze 2007, 11:26

Mnie ten kalkulator tylko poinformował, że nie mam TABCTL32.OCX i w związku z tym nie zamierza się uruchomić :sad:

Awatar użytkownika
owoc_leśny
-
Posty: 40
Rejestracja: 27 sty 2007, 19:16
Kontakt:

Post autor: owoc_leśny » 09 cze 2007, 12:59

Dzięki za zainteresowanie, jak tylko będę miał troszkę czasu to zrobię tak jak mi doradziliście.
tasza pisze:dodatkowo wchodzimy z zagadnienie "idiotoodporności" programu.
Ustawiłeś zły styl na combo-boxach, co pozwala wpisać tam cokolwiek
Wybrałem ten styl ponieważ w innym nie wiedziałem jak ustawić żeby z każdym włączeniem czyścił wyświetlane wartości.
A jeśli chodzi o pozostałe opcje idiotoodporności to zrobiłem tylko tak że, button wynik jest Enebled=false dopóki nie podasz wszystkich wartości oraz w momencie kiedy napięcie jest za małe dla danej diody to wyskakuje komunikat zbyt niskie napięcie.
Jeszcze jedno pytanko: Jak wyłączyć możliwość zmiany rozmiaru okienek?? Autosize odpada.

Guzer
Użytkownik
Posty: 167
Rejestracja: 08 lis 2006, 18:36
Lokalizacja: Szczecin
Kontakt:

Post autor: Guzer » 09 cze 2007, 13:09

Nie mam teraz nic Borlandowego więc pewności nie mam. To chyba jest własność okna o nazwie Border - dla niektórych wartości tego parametru okienka nie można sajzować, tylko nie ustawiaj na None ;)

ODPOWIEDZ