ART1 (18)






PureBasic






PureBasic

PureBasic to kompilator Basica występujący w wersjach dla systemów operacyjnych:
Windows, Linux i AmigaOS. Ucieszony wiloplatformowością programu bardzo się z niego
ucieszyłem. Zapał ostudziło pierwsze uruchomienie programu. Pojawiło się info o
ograniczeniach. To, że nie można Tworzyć DLLi to bajka, ale ograniczenie do 800 linii
kodu to wręcz masakra (tym bardziej, że do kodu wlicza się również kod który
odpowiada za wygląd formularza). 800 linii to dość zły limit, gdyż nie napiszesz
większego programu (często w VB moje programy mają 2-3 tys linii a w PureBasic
składnia jest o tyle specyficzna, że program mający w VB 1 linii w PB miał by około
1,5-2 tys linii). Ograniczenie w wersji dla windowsa to niemożliwość używania API i
... przy skompilowanych programach pojawia się okno dialogowe debbugera !! Cena jest
dość wysoka 59 euro. Program jest dużo lepszy od RapidQ, ale trochę się z nim
męczyłem i osobiście to nawet 20 euro uważam za zbyt wygórowaną cenę (VB6 w
najtańszej wersji kosztuje około 200 zł a ma duuuużo większe możliwości niż
PureBasic). Jednak z drugiej strony za 59 euro dostajesz dożywotnio update'y i 59 euro to
cena za wersje na wszystkie 3 systemy, na stronie nawet pisze, że jak w przyszłości
wyjdzie PureBasic na inne platformy (np. MacOS) to będziesz mógł pobrać tą wersję za
darmo !! Jeśli chcesz napisać jakiś większy program, nawet się za to nie bierz, gdyż
PureBasic ma może dużo "kontrolek" (zwanych gadżetami) ale ma bardzo ubogą
listę zdarzeń (aby nie było np. MouseMove, to można się załamać a Click, DblClick,
LeftClick i RightClick i 3 inne zdarzenia dla textboxa to stanowczo za mało). Możliwe,
że w pełnej wersji jest więcej zdarzeń, nie wiem, jeszcze nie kupiłem pełnej wersji.
W PureBasicu powstało dużo większych gier, ponieważ jest szybkie, można w nim pisać
gry 2D i 3D ale do aplikacji użytkowych się nie nadaje ze względu na obsługę małej
ilości zdarzeń. Pomimo iż występują wersje dla Linuxa Windowsa i AmigaOS, PureBasic
jest niekompatybilny !! Napisałem prosty programik w wersji dla Windowsa i postanowiłem
skompilować pod Linuxem. A tu niespodzianka: po pierwsze w wersji dla Linuxa nie ma np.
kontrolki Memo (programiści Delphi wiedzą o co mi chodzi, otóż memo to taki TextBox z
ustawioną cechą Multiline na true). Druga niespodzianka to drobne róznice w składni,
musiałem analizować inne sample i nieco zmienić kod, który pod windowsem się
kompilował !! O dziwo po przerobieniu kodu wersja z linuxa kompilowała się pod
windowsem ;-) Ba nawet w dokumentacji pod linuxem pisze, że funkcja WindowsOpen może
przyjmować flagę #PB_Window_ScreenCentered
(wycentrowane okno), ale niestety linuxowy kompilator pieprzy, że nie zna takiej stałej
(to po jakiego grzyba jest w dokumentacji info o tej stałej?). Niestety, ale wersji dla
AmigaOS nie przetestowałem, gdyż nie mam i nigdy nie miałem Amigi :-( Na pocieszenie
jeszcze raz dodam, że w PureBasicu powstało dużo wielkich aplikacji np. gier, kod
generowany przez PureBasic jest bardzo szybki.

Po tym pesymistycznym wstępie przejdę do omówienia programu. Może nie jest on
najlepszy ale do napisania prostego okienkowego programu (pod Linuxa) jest w sam raz. Na
pewno nie zbudujesz dużego programu, ale prosty programik napiszesz (i pochwalisz się
kumplom, że potrafisz programować pod Linuxa). PureBasic wymaga, aby była zainstalowana
biblioteka graficzna GTK+ i kompilator GCC (czyli prawdopodobnie PureBasic generuje kod w
C++ i kompiluje go kompilatorem GCC, tutaj jest dziwna sprawa, gdyż bez zainstalowanego
kompilatora GCC nie da się skompilować programów natomiast w katalogu z kompilatorem
jest fasm (kompilator asemblera) a PureBasic posiada także opcję generowania plików
asemblerowych. Ale nie wnikałem w wyjaśnienie tej zagadki, pewnie fasm jest używany do
kompilowania wstawek asemblerowych, które są potem linkowane za pomogą GCC, bo w
asemlerze raczej ciężko jest bawić się "funkcjami API" (sorki, ale pod
linuxem jestem nowiciuszem i nie wiem, czy to coś tak się nazywa). Wersja dla Windowsa
posiada wygodnę IDE (linuxowa wersja IDE nie posiada). IDE zostało napisane w ...
PureBasicu ;-) Największą zaletą PureBasica jest narzędzie do projektowania formularzy
(bardzo podobne do tego z VB) projekt formularza można zapisać do osobnego pliku, ale
konwertując wygląd formularza do kodu nie można wykonać tej operacji w drugą stronę
(czyli na podstawie kodu nie zostanie wygenerowany wygląd formularza w IDE). Składnia
jest bardzo podobna do Basicowej, ale jest dużo różnic (np. zamiast End If pisze się
EndIF, nie ma jednolinijkowego IFa, należy IFa rozpisać na 3 linijki np.:

if a=5
   rób coś tam
   rób coś tam innego
EndIf

Bardzo dziwna sprawa to brak THEN. Oczywiście nie mam zamiaru opisywać takich
drobiazgów jak różnice w składni, bo to można w Helpie sobie poczytać, albo
poanalizować dołączone sample (to jedna z mocniejszych stron PureBasica: obszerna
dokumentacja i dość duża liczba sampli). O dziwo help dla Linuxa jest w formacie HTML a
dla windowsa w formie pliku CHM. Powracając do głównej myśli składnia jest nieco inna
niż w VB. Teraz opiszę główną zasadę tworzenia formularzy. Jeśli programowałeś
choć trochę w MASMie (Macro Asembler) lub w czystym C dla windowsa to szybko załapiesz
ogólną zasadę działania kodu. Otóż najpierw się tworzy okno z kontrolkami, każdej
kontrolce nadaje się ID (ja daję cyfry tj. 100, 101, 102 itp.) Każda kontorlka musi
mieć inną cyfrę. To ID to coś podobnego do cechy (NAME) z VB. W kodzie jest
nieskończona pętla, której zadaniem jest sprawdzanie, czy nie zostało wygenerowane
jakieś zdarzenie i jeśli zostało to instrukcja SelectCase (albo zagnieżdżony IF)
wykonuje odpowiedni kod (jest zwracany numer kontrolki, która wygenerowała jakieś
zdarzenie a potem ewentualnie może być sprawdzone jaki rodzaj zdarzenia został
wygenerowany (np. klik, podwójny klik)). Wydaje się Tobie nienaturealne, ale tak działa
każdy program napisany dla windowsa, z tym, że VB odwala za Ciebie czarną robotę i tam
kod jest dużo prostrzy. Przyglądnijmy się prostemu przykładowi (nie wycinałem
dłuższych fragmentów procedur, gdyż chcę, abyś z grubsza zapoznał się ze
składnią tego języka a nie tylko ze szkicem pisania okienkowego programu).


; Od razu Otwórz okno i utwórz na nim
kontrolki. ButtonGadget to zwykły commandButton, StringGadget to TextBox a Frame3DGadget
to nic innego jak zwykły Frame pierwszy parametr to numer (ID) kontorlki a 4 następne to
wymiary (left, top, width i height) podane w pixelach
If OpenWindow(0, 250, 250, 300, 139, #PB_Window_TitleBar, "Generator
antyspamowych mailii")
If CreateGadgetList(WindowID())
ButtonGadget(101,
220, 10, 70, 20, "Go")
StringGadget(102,
10, 70, 190, 20,"")
ButtonGadget(103,
220, 40, 70, 20, "Info")
ButtonGadget(104,
220, 70, 70, 20, "Koniec")
Frame3DGadget(105,
5, 55, 200, 70, "Wygenerowana wstawka
HTML",0)
Frame3DGadget(106,
5, 7, 200, 40, "Wpisz mail, który mam
zakodowac",0)
StringGadget(107,
10, 20, 180, 20, "test@com.pl")
ButtonGadget(108,
25, 95, 160, 20, "Kopiuj do schowka")
EndIf
EndIf


Repeat
EventID = WaitWindowEvent() ;Czekaj na zdarzenia
Select WaitWindowEvent()

Case #PB_EventGadget ;nastąpiło
zdarzenie jakiejś kontrolki

Select EventGadgetID()

Case
101 ; główna procedura kodująca adres email, troszkę skomplikowana, ale tu jest tylko
parę FORów i operacji na stringach - nic strasznego
Z$=GetGadgetText(107)
W$="<p><script language="+Chr(34)+"JavaScript"+Chr(34)+"><!--"+Chr(10)
W$=W$+"var malpa='@';"+Chr(10)
W$=W$+"var kropa='.';"+Chr(10)
W$=W$+"var m1='mai';"+Chr(10)
W$=W$+"var m2='lto:';"+Chr(10)
W$=W$+"document.write('<a href="+Chr(34)+"'+m1+m2+'"
SetGadgetText(102,Z$)

For a=1
To Len(Z$)
Q$=Mid(Z$,a,1)
P$=P$+"&#"+Str(Asc(Q$))+";"
Next a

V$=""

For a=1
To Len(Z$)
Q$=Mid(Z$,a,1)
If
(Q$<>"@") And (Q$<>".")
V$=V$+Q$
EndIf
If Q$="@"
V$=V$+"'+malpa+'"
EndIf
If Q$="."
V$=V$+"'+kropa+'"
EndIf
Next a

W$=W$+V$+Chr(34)+">"+P$+"</a>');"+Chr(10)
W$=W$+"// --></script>";

SetGadgetText(102,W$)

Case
103 ; About
dialog - zwykły message box
MessageRequester("Info o programie", "Autorem programu
jest Jelcyn"+Chr(10)+"Ten program jest freeware"+Chr(10)+Chr(10)+"www: www.jelcyn.com"+Chr(10)+"mail: jelcyn@hat.pl", 64)

Case
104 ;button Koniec
Quit=1

Case
108 ;proste operacje na schowku
ClearClipboard()
SetClipboardText(GetGadgetText(102))


EndSelect


Case #PB_EventCloseWindow ; Kliknięcie w X (lub
naciśnięcie ALT+F4)
Quit = 1
EndSelect
Until
Quit = 1 ;powtarzaj cały kod w pętli
dopóki zmienna Quit nie jest równa 1

End

Program wygląda o tak:

Przyciski minimalizacji i maksymalizacja są, pomimo iż nie mają prawa tam być, w
wersji dla windowsa ich nie ma, jest to kolejna niekompatybilność wersji Linuxowej w
Windowsowej :-(

Teraz co nieco informacji o tym, jak kompilować programy. Najpierw trzeba
zainstalować PureBasic, z tym nie ma problemu, wystarczy pobrać plik PureBasic_Demo.tar.gz
ze strony www.purebasic.com i rozpakować
w jakimś katalogu (np. /home/uzytkownik). Teraz proponuję uruchomić dwie sesje
terminala i w obu przejść do katalogu /home/uzytkownik/purebasic/Compilers. W pierwszym
oknie terminala włącz MC (klon Norton Commandera, aby go uruchomić należy napisać mc
i nacisnąć enter) i zacznij edytować jakiś plik z rozszerzeniem .pb (najpierw należy
go utworzyć, albo skopiować z innego katalogu). Aby edytować plik należy najechać na
niego kursorem i nacisnąć klawisz F4, aby zapisać zmieny należy nacisnąć klawisz F2
(jak znasz Norton Commandera, lub Dos Navigatora, nie będziesz miał problemów z
poruszaniem się po programie MC). W drugin oknie terminala będziesz wydawał z linii
komend różne komendy (głównie jedną, która kompiluje program). Oczywiście jeśli
nie masz MC, lub wolisz inny edytor to nic nie stoi na przeszkodzie, aby używac innego
edytora, wtedy też wystarczy odpalić tylko jedną sesję terminala. W oknie terminala
należy wydać następujące polecenie, aby skompilować program: ./pbcompiler
gam.pb -e gam gdzie gam.pb to nazwa pliku źródłowego a
gam to nazwa pliku wykonywalnego, który zostanie utworzony. Aby
uruchomić program należy wydać kolecenie ./gam.Po przetestowaniu
programu zamknij go (najlpeiej klikając w przycisk Koniec bo nie wiem dlaczego klikając
w X nie zawsze się zamyka, ba ten cholerny X nawet nie ma prawa się pojawić, ale to
wina wersji linuxowej, że jest niekompatybilna z Windowsową. Poniżej prezentuję
wygląd wbudowanego edytora programu MC


Edytor przypomina ten znany z NC, ale jest wygodniejszy od Nortnonowskiego.

Podsumowując PureBasic to dobry język programowania, ale ma wiele wad (np.
niekompatybilność brak IDE dla Linuxa), ale mam nadzieje, że w pełnej wersji jest
dużo lepszy. Jest to jeden z lepszych kompilatorów niestety cena 59 euro jest zbyt
wygórowana abym go kupił, aczkolwiek, gdyby nie miał tych wad, które opisywałem wtedy
poważnie bym się zastanowił nad zakupem programu (kusząca jest propozycja dożywotnich
updateów i możliwość kompilowania programów na 3 platformach).

Jelcyn

www.jelcyn.com






Wyszukiwarka

Podobne podstrony:
2565 18
kawały(18)
Załącznik nr 18 zad z pisow wyraz ó i u poziom I
A (18)
consultants howto 18
Kazanie na 18 Niedzielę Zwykłą C
R 18
18 Prezentacja
18 Mit mityzacja mitologie współczesne
18 (36)

więcej podobnych podstron