♬ ☘ Moja muzyka do kodowania ♬ ♬ ♬ ☘
♫ ♩ ♪ Abyssphere ⚡ ☘ ⚡ Пыль ( На пути к забвению ) ♪ ♩ ♫
https://youtu.be/nTDtVrNx-j4
Skoro język Pascal zaczął pojawiać się na tym forum, to może garść informacji o bardzo ciekawym projekcie pt. Lazarus, to w skrócie wielkim Delphi-o podobne środowisko RAD (Rapid Application Development), które czyni kodowanie aplikacji z graficznym interfejsem użytkownika bardzo przyjemnym, a to ze względu na ogromną ilość różnej maści wizualnych komponentów (kontrolek). Obsługa sieci oraz wsparcie dla baz danych także poukładano w zestawy komponentów, korzystając z tych dobrodziejstw można robić całkiem ciekawe rzeczy przy minimalnej ilości pisanego własnoręcznie kodu. Lazarus bazuje na Free Pascal w wersji 3, to jest obiektowy Pascal, naprawdę dojrzałe narzędzie.
instalacja Lazarus
Strona domowa projektu
skąd możemy pobrać najnowszą wersje środowiska: lazarus-1.6.4-fpc-3.0.2-win32.exe

uruchamiamy instalator lazarus-1.6.4-fpc-3.0.2-win32.exe i pierwsze co to wybieramy język:

i już wyjaśniam, dlaczego angielski - jeżeli coś się nie uda, angielskojęzyczne komunikaty o błędach po prostu wklejamy w google i mamy sporą szanse wyszukać na forach etc, coś, co pomoże nam rozwiązań problem
start instalatora:

wybieramy folder docelowy

i najlepiej pełną instalację ( ponad 900MB po wypakowaniu)

określamy nazwę dla skrótu i decydujemy czy tworzyć ikonkę na pulpicie:


po zebraniu tych informacji instalator jest gotowy do pracy:

podczas trwania instalacji jest tak:

i końcowe gratulacje

nie jest wymagany restart maszyny, ani nic takiego, można śmiało kliknąć ikonę na pulpicie:

pierwsze uruchomienie wyświetli okno dialogowe z konfiguracją IDE (ścieżki do kompilatora etc), warto sobie to poprzeglądać, czy nie ma jakichś niepokojących dziwadeł

po zamknięciu tego dialogu Lazarus wystartuje w domyślny dla siebie sposób - proponując kadłubek nowej aplikacji okienkowej:

teraz przełączamy IDE na angielski z powodów jak powyżej (no chyba, że ktoś strasznie nie lubi, to można pominąć)
główne menu -> Narzędzia -> Opcje

po lewej Środowisko -> Ogólne, po prawej ustawiamy angielski i restartujemy IDE

proponuje wykonać test prościutkiej aplikacji, to ostatecznie potwierdzi, że Lazarus jest w pełni zainstalowany i gotowy do pracy:
na formę widoczną na ekranie kładziemy przycisk, zmieniamy mu właściwość Caption na 'Exit', po dwukrotnym kliknięciu edytor wygeneruje nam pusty handler zdarzenia Click, wypełniamy go prościutkim kodem jak niżej:
Kod: Zaznacz cały
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( 'to jest test' );
Application.Terminate;
end;
budowanie testowego projektu (główne menu -> Run -> Build) powinno zakończyć się sukcesem

projekt uruchamiamy guzikiem F9 albo główne menu -> Run -> Run
po wciśnięciu przycisku Exit, aplikacja wyświetli komunikat i zakończy pracę

zamykanie aplikacji jest kontrolowane przez IDE (z racji debugera) więc będziemy dostawać taki komunikat

proponuje nie zmieniać domyślnych ustawień i jednak pozostawić to okienko wyskakujące,
bardzo wiele problemów z alokacją pamięci objawia się właśnie przy zamykaniu aplikacji (wołane są destruktory okien, etc)
wtedy bardzo łatwo o wyjątek typu Access Violation i będziemy mogli to wykryć
jak już mamy ten trywialny projekcik skompilowany i nawet zadziałał, warto pooglądać sobie co jest na dysku w folderze roboczym, proszę zwrócić uwagę na rozmiar pliku wykonywalnego (taki właśnie, bo włączone są do kodu wykonywalnego informacje dla debuggera)

instalacja dodatkowych komponentów
dla wprawy i lepszego zapoznania z IDE zainstalujemy sobie kilka klocków, które umożliwią stworzenie aplikacji z 'industrialnym' interfejsem czyli LED-y, wyświetlacze, gałki i inne pokrętła; dodatkowo doinstalujemy komponent do obsługi portu szeregowego, nasze następne aplikację bedą intensywnie z niego korzystać
kontrolek, że tak ujmę 'automatyczno-przemysłowych' jest w sieci wiele, niestety im ładniejsze i fikuśniejsze tym droższe w zakupie, dlatego też idziemy po taniości i zainstalujemy garść komponentów darmowych, ale za to dostępnych wraz z kodem źródłowym, w którym też potem pogmeramy.
to co chcę pokazać zapakowałam w paczkę na wynos - paczka_do_components.zip - ale zawsze można sobie pobrać najnowsze z internetu
zawartość proszę wypakować do foldera /Components środowiska, tak aby równolegle z istniejącymi dołożyły się
zaczynamy od portu szeregowego - 5dpo
idziemy do główne Menu -> Package -> Open package file (.lpk) i doklikujemy się do pliku z pakietem sdposeriallaz.lpk, który u mnie akurat jest tu: D:\lazarus\components\Sdpo\SdpoSerial
w okienku instalatora pakietów zobaczymy nasz szeregowy klocek, jak i wszelkie jego zależności, włącznie z informacją o jakichś brakach, tu jest akurat czysto

wciskamy guzik Compile i chwilę zastanawiamy się nad informacjami w okienku Messages

są tylko ostrzeżenia kompilatora, miejmy nadzieje, że nie ziszczą się w formie problemów przy korzystaniu z komponentu
potem instalujemy paczkę wywołując Use -> Install

instalacja komponentu na paletce wymaga statycznego dolinkowania wykonywalnego kodu nowego klocka do Lazarusa, no to niestety jest przypadłość, ale idzie wytrzymać

po wydaniu zgodę na przebudowanie IDE chwilę pochrupie nam dyskiem, ponieważ następuje rekompilacja wszystkich paletek

jeżeli sztuczka się uda (a przy odrobinie uwagi udaje się prawie zawsze) zrestartowane automatycznie środowisko udostępni nam komponent TSdpoSerial, znajdziemy do na zakładce 5dpo

no to teraz zabieramy się za ledziki i inne wyświetlacze - zestaw RackCtls, analogicznie jak wyżej - otwieramy managera pakietów i doklikujemy się na dysku do pliku RackCtlsPkg.lpk

po skompilowaniu, instalacji i przebudowie IDE na zakładce Simon będzie garstka całkiem sympatycznych świecidełek

a teraz pokaże co się dzieje gdy nasz komponent będzie wymagał dodatków, a owych nie będzie - naruszenie zależności
doklikajmy się do trzeciej paczuszki uecontrols.lpk i wskażmy ją managerowi komponentów

widać bombę z wykrzyknikiem przy BGRABitmapPack - tego środowisku jeszcze nie mamy (a to, że leży na dysku w /components to póki co nic nie znaczy), próba kompilacji spowoduje, że Lazarus rozpłacze się okienkiem pokazującym graf pakietów i ... musimy to jakoś naprawić

tu akurat nie było zbyt trudno (ale też chwilkę musiałam pogoglować...) - z foldera components\bgrabitmap trzeba do pakieciarki załadować plik bgrabitmappack.lpk i wykonać kompilację, tylko tyle...
ponowne załadowanie paczki z ueControls pokaże, że wszystko jest w porządku, zależności są spełnione i można dogrywać ten pakiet:

i jak zwykle (zakładam, że nabieramy wprawy) przebudowane środowisko udostępni nam nowe klocki na zakładce ueControls

można teraz, zupełnie niezobowiązująco powrzucać na formę aplikacji te kontrolki, które nam się podobają, w szczególności kostkę do portu szeregowego; proszę zauważyć, ze widać ją w postaci małej ikonki na formie w trybie `design`, ale po uruchomieniu aplikacji - nic tam nie ma...

po prostu ten komponent nie jest kontrolką wizualną, nie ma interface użytkownika, działa sobie w tle pracowicie robiąc to czego oczekujemy
i to tak w skrócie wygląda instalacja Lazarus IDE oraz garści przydatnych komponentów, od teraz wspierając się googlem możemy tworzyć desktopowe aplikacje wyglądające czasem prawie jak w LabVIEW...


