Tworzenie programu na podstawie interfejsu w programie delphi

0

Hej pierwszy raz aktualnie mam styczność z jakim kolwiek programowaniem w swoim życiu. Moim zadaniem jest napisanie programu którego interfejs dodam w załączniku. Chodzi o zamiane jednostek . Jedyny mój pomysł to aby wprowadzić zmienne i zamianę jednostek zrobić poprzez mnożenie stałej . Ale nie wiem jak to ogólnie maja te kody wyglądać . Pomoglby ktoś ? Język to Pascal.

2
Asiiik napisał(a):

Hej pierwszy raz aktualnie mam styczność z jakim kolwiek programowaniem w swoim życiu. (...) Ale nie wiem jak to ogólnie maja te kody wyglądać.

Sugeruję zatem zacząć od nauki podstawowej składni Pascala i podstaw tworzenia aplikacji okienkowych w tym języku. Po kilku dniach/tygodniach nauki powinnaś/powinieneś z grubsza wiedzieć jak się za to zabrać i być w stanie stworzyć prototyp i w razie problemów pokazać jakiś kod i zadać konkretne pytanie z czym masz problem.

0

A pomijając kwestię samego przeliczania, czy masz chociaż okienko/formatke/interface zrobione?

Jakie narzędzia i srodowisko planujesz wykorzystać (albo już wykorzystujesz), bo samo napisanie "język to Pascal" to trochę mało.

0

Aktualnie jestem na tym etapie(załącznik ) . Wprowadziłam zmienne , chcę później też wykonać mnożenie, ale na razie ciągle jakiś error i juz nie mam pomysłów co dalej :/

0

Asiiik, toć tam w załączniku, na dole masz ciąg komunikatów "Unit1.pas(XX) missing operator or semicolon"
@cerrato jak to jest ze składnią Pascala, czy tu jak w C/C++ też każda linia musi kończyć się średnikiem?

0

Zgodnie z komunikatem błędu brakuje średników po wszystkich linijkach po 'else'

0

@MasterBLB: tak, każdą linie powinien kończyć średnik. Ty możesz tego nie wiedziec, skoro nie używasz tego języka, ale dziwię się OP, bo po pierwsze to są zupełne podstawy, a po drugie taka zwykła ciekawość powinna spowodować zainteresowaniem się tymi błędami, a nie jedynie stwierdzenie, że błędy są...

0

Tak zauważyłam ten błąd juz działa , ale moje pytanie było do tego ze nie dokładnie wiem jak to dalej ma wyglądać . A:=X*8192; B:=X*1024 ? I jeszcze nie wiem jak ułożyć komunikat z showmessage ktory będzie się wyswietlal gdy wprowadzimy liteki zamiast liczb w edit1 :/

No właśnie są to podstawy . A ja dzisiaj 2 raz w życiu otworzyłam delphi miałam o tym wykład lecz tłumaczono ze są przypadki gdzie nie daje się średnikow. Myślałam że komunikat dotyczy źle sformułowanego kodu.

0

@Asiiik: może to nawet nie uwaga do ciebie, ale uczelni. W każdym razie z twojego pierwezego posta jako wynika, że potrzebujesz to w ramach zarabia do szkoły /uczelni. I ewidentnie coś poszło źle - albo olalas temat, albo wykłady z Delphi były słabe.

0

Po pierwsze to dopiero jeden wykład miałam . Po drugie to i tak dużo zrobiłam , wiem że na końcu maja być średniki ale jeszcze mi się zapomina . A po trzecie to myślałam że z tej strony wyniose coś pożytecznego bo nie prosilam o gotowa prace tylko pomysł jak to zrobić . Ale na razie to tylko ludzie mnie pouczają i oceniają moja uczelnie . W takim razie nie ma to sensu . Wielkie dzięki za pomoc to mój ostatni post tutaj .

1

@Asiiik: strzelanie focha to nie jest dobra droga do nauczenia się języka programowania.
Natomiast co do pouczania - dziewczyno ty jesteś na etapie tak początkującym, że wpierw czeka cię posiedzenie nad jakąś książką do Pascala aby ogarnąć składnię języka, narzędzia do kompilowania i debugowania...obrazowo mówiąc oczekujesz od nas, że ci powiemy jak być Mistrzynią Świata Formuły 1 podczas gdy ty jeszcze nawet na rowerze z dokręconymi po bokach kółkami nie umiesz jeździć.
Nie jest to komentarz złośliwy, tylko po prostu nie będziesz umiała skorzystać z naszych objaśnień bo brakuje ci podstaw.

Natomiast żeby nie było iż nie pomagamy
Zadanie 1

  • wsadź do GroupBoxa(?) 4 pary elementów Label i LineEdit, a nad nim Label, LineEdit i PushButton - to jako tako zrobiłaś sama
  • pamiętaj, że użytkownik jako rozmiar w kb może sobie wpisać np Dupadupa, albo 20 spacji. I co wtedy?
  • w procedurze obsługi przycisku licz wpierw sprawdź, czy LineEdit KB zawiera tekst.
    • jeśli zawiera, korzystając z odpowiednich wzorów przelicz wartości dla pozostałych jednostek, i wpisz je do odpowiednich pól. Taka ciekawostka - dowiedz się dziewczę czemu 1 KB to nie jest 1000B, a 1024B
    • jeśli jest pusty no to musisz sama zdecydować co w takim przypadku. Chować przycisk Licz? Dezaktywować go?
      I co, pomoże ci coś takiego?
0

Cóż - skoro autorka sama stwierdziła, że nie ma to sensu i to mój ostatni post tutaj, nie ma co trzymać tego wątku otwartego.

0

@Asiiik: nie denerwuj się – w końcu atak na uczelnię to atak na uczelnię, nie na Ciebie. ;)

A skoro już atakujemy uczelnię, to IMO każdą, w której nadal naucza się obiektowego Pascala w Delphi 7, powinno się zbombardować. Nie wiem czy wiesz, ale to środowisko ma 16 lat i jest potwornie ubogie w stosunku do bieżących, zarówno pod względem składni języka, jak i funkcjonalności IDE (poza tym jest płatne). Ja rozumiem, że Pascal jest świetnym językiem (trolle sio!), ale można się go uczyć w Lazarusie – jest w pełni darmowy i przede wszystkim aktualny. Wyjdzie nowa wersja to można sobie szybko i za darmo zaktualizować.


Wracając do tematu – jeśli masz jakieś pytania to pytaj, jednak nauka podstaw języka raczej Cię nie ominie, bo bez znajomości podstaw nie dasz rady napisać żadnego programu. Tym bardziej, jeśli nigdy wcześniej nie miałaś styczności z programowaniem.

0

@Asiiik:
Skoro temat modzi odblokowali to tutaj.
Do zabezpieczenia przed wprowadzaniem niechcianych znaków do jakiejś kontrolki GUI służy coś zwanego walidatorem; występują one powszechnie w językach programowania, Delphi też ma.
Natomiast jak sobie poradzić z problemem - otóż nie tylko trzeba się uodpornić na wprowadzanie pustego pola i liter, ale też i dowolnych znaków nie będących cyframi. Jak to zrobić? Odpowiedzią tutaj jest walidator akceptujący wyłącznie cyfry [0-9], i niczego innego.

BONUS:
Możliwość wprowadzania danych przez użytkownika do kontrolek przechowujących wynik konwersji z kilobajtów na inne też wypadałoby zablokować skoro to ma wyliczać program.

0

Zrobiłam przez showmessage komunikat jeśli ktoś pole puste zostawi. Nie wiem jak zrobić gdy litery zamiast liczb zostaną wprowadzone . Aktualnie zrobiłam tyle ( załącznik ) choć nie jestem pewna czy w dobrym miejscu wpisałam mnożenie :(

Jedyne komponenty których używamy to shape label edit button form groupbox. A w zadaniu mam jedynie zrobić aby po kliknięciu button przeliczal jednostki i 2 komunikaty . Gdy w edit1 ktoś zostawi puste pole i gdy wpisze litery .

0

StrToFloat rzuci wyjątek, jeśli ciąg znaków z zapisem liczby zawierać będzie niedozwolone znaki. Aby uniknąć wyjątku, skorzystaj z funkcji TryStrToFloat, która zwróci True jeśli konwersja się powiodła, lub False jeśli się nie powiodła.

Na podstawie zwracanej przez tę funkcję wartości należy wyświetlić komunikat o nieprawidłowych danych. Oczywiście tylko wtedy, gdy konwersja nie powiedzie się.

2

Temat trochę przycichł, więc nie wiem, czy nadal oczekujesz pomocy, ale napiszę, co mi tam. Punkty są wpisane trochę chaotycznie, ale dzisiaj nie jestem w szczytowej formie, więc pisałem tak, jak mi myśli do głowy nachodziły ;)

1) o ile rozumiem, to program ma pobrać wartość z Edit1 (zapisuje ją do zmiennej X), a następnie ma ją odpowiednio przetworzyć i wpisać do pozostałych 4 Edit'ów. W takim razie sensowne i potrzebne jest jedynie przypisanie x:= strtofloat..., ale pozostałe 4 są bezsensowne, i to z dwóch powodów: po pierwsze te wartości dopiero zostaną wyliczone w oparciu o X, a po drugie (skoro mają zostać one dopiero obliczone) to strtofloat wykonane na pustych Edit'ach niczgo sensownego nie zwróci.

2) zrobiłaś komunikat o pustym Edit1, dałaś w tym celu if'a, który sprawdza czy została jakaś treść wpisana. Ale zwróć uwagę, że w obecnej postaci, IF jedynie dotyczy pierwszej linii po else, a cała reszta zostanie wykonana, niezależnie od tego, co ten if stwierdzi. Chyba nie o takie działanie Ci chodziło.

3) Odnośnie samego przeliczania jednostek - na pierwszy rzut oka jest OK, ale dzisiaj przez 6 godzin siedziałem z dzieciakiem w poczekalni u lekarza i średnio już kontaktuję ;) Dlatego prośba do kogoś o ustosunkowanie się do tej kwestii (wiem, że jest to sprawa trywialna, ale mam totalny zgon i jakoś nie mam dzisiaj do siebie zaufania ;) ). Natomiast - niezależnie od samego sposobu przeliczania, zauważ, że jedyne co robisz to jest przypisanie odpowiednich wartości do zmiennych. W żaden sposób nie są one przekazywane do Edit'ów.

4) Przekazanie do Edita jest bardzo proste, zasadniczo robisz to analogicznie (tylko "odwrotnie") do pobrania treści Edit1 i przypisania jej do zmiennej X. Czyli zamiast strtofloat dajesz floattostr, a w poleceniu przypisania po lewej stronie dajesz Edit, a wartość przypisywaną po prawej.

5) taka uwaga odnośnie nazywania zmiennych. Obecnie stosujesz X, A, B itp. O wiele lepszą opcją jest ich nazwanie w jakiś sposób, który będzie czytelny i będzie dawał jakieś pojęcie o tym, za co dana zmienna odpowiada. Ten programik jest malutki,ale gdy pojawia się więcej kodu, to potem inni ludzie (albo Ty po pół roku) mogą niepotrzebnie tracić czas na rozgryzanie do czego dana zmienna służy. Lepszymi nazwami by były chociażby "rozmiar_kb", "rozmiar_bajty" itp. Oczywiście - tutaj z jednej strony jest pełna dowolność, ale z drugiej są pewne konwencje nazywania zmiennych, chociażby słynna https://pl.wikipedia.org/wiki/Notacja_w%C4%99gierska albo w wypadku Delphi bardziej pasujący https://pl.wikipedia.org/wiki/PascalCase

6) Nie wiem czemu ma służyć "objęcie" przypisań A:= X..., B:= X... begin'em i end'em. Wyjaśnij proszę, z czego to wynika, a jeśli z niczego to po prostu wywal ;)

7) Napisz proszę, jakie masz dokładne wymagania dot. tego programu, co on ma dokładnie robić. Przykładowo - czy weryfikowanie wprowadzanego przez użytkownika tekstu jest wymagane przez szkołę, czy Ty chcesz to dodać we własnym zakresie? Wspomniałaś też wcześniej, że masz określoną grupę kontrolek, z których możesz korzystać. Czy ta lista jest narzucona odgórnie i nie można jej poszerzyć? Jest to o tyle istotne, że zamiana TEdit na TMaskEdit bardzo by ułatwiła pracę. Korzystając z samego TEdit można także przeprowadzić filtrowanie, ale wymaga to trochę dodatkowej pracy. W dużym uproszczeniu - widzę dwie opcje. Albo podczas wprowadzania znaków na bieżąco sprawdzasz, co jest wprowadzane i jeśli dany znak nie pasuje, to podejmujesz stosowne działanie, albo na etapie wprowadzania treści do Edit1 olewasz to, a sprawdzasz dopiero na etapie przeliczania (czyli coś w stylu tego, co chciałaś mieć obecnie).

P.S. nie wkurzaj się i nie obrażaj.Teraz, kiedy dałaś jakiś dowód tego, że sama siedzisz nad tematem i coś próbujesz, sprawa wygląda inaczej. Często pojawiają się tu ludzie, którzy liczą na gotowce i odwalenie całej pracy za nich.

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