pdf @ download @ do ÂściÂągnięcia @ pobieranie @ ebook

[ Pobierz całość w formacie PDF ]

 

Rozdział 21.
Delphi i Builder C++









C:\Dokumenty\Roboczy\Delphi 4 dla kazdego\21.doc              801









Rozdzia³ 21. ¨ Delphi i Builder C++              815

 

Kiedy firma Borland wypuściła na rynek pakiet Delphi 1, okazał się on ogromnym sukcesem. Obecnie kontynuacją tego sukcesu jest Delphi 4. Tuż po powstaniu Delphi 2 Borland postanowił zwiększyć sukces Delphi tworząc środowisko RAD (Rapid Application Development) dla języka C++. Zamierzenia te powiodły się między innymi dzięki wykorzystaniu elementów Delphi w środowisku Builder C++. Czytając ten rozdział poznasz różnice i podobieństwa zachodzące między Delphi, a Builderem C++. Dowiesz się również, w jaki sposób wymieć kod między Delphi, a C++ Builderem, a także jak konwertować kod z Buildera C++ do Delphi.

Podobieństwa między Delphi
i Builderem C++

Delphi i Builder C++ posiadają więcej cech wspólnych niż różnic. Przyjrzymy się najpierw podobieństwom.

Zintegrowane środowisko programisty

Jeżeli miałeś okazję korzystać zarówno z Delphi jak i z Buildera C++, być może zwróciłeś uwagę na niezwykłe podobieństwo ich środowisk IDE (Integrated Development Environment). Wystarczy spojrzeć na rysunki 21.1. i 21.2 – jeden z nich jest zrzutem ekranowym IDE Delphi 3, a drugi – Buildera C++ 3. W obu przypadkach z pasków tytułu usunięte zostały nazwy programów oraz ich ikony, dlatego nie można od razu określić pochodzenia zrzutu. Czy jesteś w stanie wskazać różnicę?

Poddajesz się? Rysunek 21.1 przedstawia środowisko Delphi, natomiast na rysunku 22.2. widoczne jest środowisko Builder C++. O tym, który z rysunków reprezentuje dane środowisko można przekonać się obserwując Inspektor Obiektów. W Delphi Inspektor Obiektów wyświetla wartości boolowskie jako True i False, podczas gdy Inspektor Obiektów Buildera C++ wyświetla je w postaci true i false.

Rysunek 21.1.

Delphi, czy Builder C++?

 

Rysunek 21.2.

Delphi, czy Builder C++?

 

Celem tego ćwiczenia jest pokazanie, iż środowiska programisty w Delphi i Builderze C++ są niemal identyczne. (W powyższym przykładzie zamiast Delphi 4 użyte zostało Delphi 3, ponieważ porównanie dotyczy Buildera C++ 3 – najnowszej wersji Buildera C++ – istniejącej w trakcie powstawania tego tekstu i odpowiadającej Delphi 3).

Naturalnie bliższe zapoznanie się z systemem menu wykaże pewne różnice, jednak ogólnie rzecz biorąc obydwa interfejsy użytkownika są na tyle podobne do siebie, że znajomość jednego z nich pozwala na korzystanie z drugiego. Niesie to ze sobą pewne oczywiste korzyści. Załóżmy, że pewna firma od dłuższego czasu korzysta z Delphi, a teraz do swojego zestawu narzędzi chce również włączyć C++. Dzięki wykorzystaniu Buildera C++ firma ta zaoszczędzi czas i pieniądze, ponieważ jej programiści nie będą musieli uczyć się obsługi nowego środowiska programistycznego. Wiąże się to z jeszcze jednym podobieństwem między Delphi i Builderem C++, a mianowicie biblioteką komponentów wizualnych VCL (Visual Component Library).

Biblioteka komponentów wizualnych

Delphi i Builder C++ nie tylko są niemal identyczne pod względem wyglądu środowiska programisty, ale również korzystają dokładnie z tej samej biblioteki komponentów VCL (z pewnymi drobnymi różnicami, o których będzie mowa później w sekcji „Nowe elementy VCL”), napisanej w Object Pascalu.

 

Swego czasu programiści C++ prowadzili w grupach dyskusyjnych Borland liczne dyskusje dotyczące zamieszczenia biblioteki komponentów napisanej w Pascalu w środowisku programistycznym C++. Niektórzy programiści nie potrafili zaakceptować faktu, iż biblioteka VCL została napisana w języku Object Pascal, chociaż większość z nich zastosowała praktyczne podejście nie przejmowania się tym, jaki język posłużył do jej stworzenia. Interesowało ich jedynie wykonanie swojej pracy w wyznaczonym czasie i środkach budżetowych. Dodatkowa wydajność Buildera C++ miała dla nich większe znaczenie niż zagadnienia językowe.

Korzystanie przez Delphi i Buildera C++ z tej samej podstawowej struktury (szkieletu) niesie ze sobą ogromną korzyść dla osób, które pracują w obydwu tych środowiskach. Pomijając różnice syntaktyczne występujące między C++ i Object Pascalem, w obu środowiskach komponenty VCL są wykorzystywane identycznie. Weźmy pod uwagę następujący kod Delphi:

 

if OpenDialog1.Execute then

  Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Teraz przyjrzyjmy się odpowiednikowi tego kodu w Builderze C++:

 

if (OpenDialog1->Execute())

  Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

Jak widać, nie ma żadnej różnicy w użyciu biblioteki VCL. Widoczna jest jedynie różnica zachodząca między składnią C++ i składnią Object Pascala. Oznacza to, że przejście ze środowiska Delphi do Buildera C++ (i vice versa) nie wymaga uczenia się od nowa zasad funkcjonowania podstawowej struktury aplikacji. Dzięki temu w firmach pracujących nad dużą ilością programów można do maksimum wykorzystać wiedzę programistów. Znajomość Delphi i Buildera C++ jest bardzo ceniona również wśród samodzielnych programistów.

Pliki formularzy

Pliki formularzy stosowane w Delphi i Builderze C++ są również identyczne. Można więc stworzyć formularz w Delphi, a następnie wykorzystać w go Builderze C++. O tym, jak to zrobić, dowiesz się w sekcji „Wielokrotne użycie formularzy”. Mimo że proces tworzenia formularzy w Delphi i Builderze C++ jest względnie prosty, wymaga pewnego czasu szczególnie wtedy, gdy budowany formularz jest komplikowany. Dzięki ponownemu wykorzystaniu formularzy nie trzeba powtarzać pracy, która została już wcześniej wykonana.

Pakiety

Zarówno Delphi, jak i Builder C++ korzystają z pakietów. Pakiety stworzone w Delphi mogą być niemal bez wyjątku użyte w Builderze C++. Wykorzystanie pakietów Delphi w środowisku Buildera C++ będzie prawdopodobnie wymagało ich ponownej kompilacji, jest to jednak zadanie trywialne. Zdolność Buildera C++ do korzystania z pakietów Delphi oznacza, że jest dla niego dostępne całe mnóstwo komercyjnych, shareware’owych i freeware’owych komponentów VCL. Komponenty te są tworzone zazwyczaj w Delphi, można więc korzystać z nich obydwu środowiskach. Na razie nie można jeszcze korzystać w Delphi z pakietów napisanych dla Buildera C++, sytuacja ta może jednak ulec zmianie w ich kolejnych wersjach.

Różnice między Delphi i Builder C++

Mimo opisanych podobieństw, pomiędzy Delphi i Builderem C++ występują również liczne różnice. Większość z nich wynika z oczywistej różnicy języków Object Pascal i C++.  Inne różnice można przypisać zjawisku, które lubię określać mianem „żabiego skoku”. Na początku było Delphi 1, a po nim Delphi 2. Po wypuszczeniu na rynek Delphi 2, Borland rozpoczął pracę nad Builderem C++. Builder C++ 1 pojawił się w następstwie Delphi 2 (wypuszczonego na rynek mniej więcej rok wcześniej). W efekcie Builder C++ 1 przejął większość swoich cech od Delphi 2, nie dodając jednak ze swojej strony żadnych znaczących elementów (których nie można by było znaleźć w Delphi 2) – było to po prostu wierne odwzorowanie. Wkrótce po ukazaniu się na rynku Buildera C++ 1, Borland wypuścił Delphi 3.

Kolejnym produktem był Builder C++ 3 (wersja 2 została celowo pominięta, aby doprowadzić do zgodności z numerami wersji Delphi). Builder C++ 3 jest następstwem Delphi 3, tak jak Builder C++ 1 był następstwem Delphi 2. Tym razem jednak w Builderze C++ pojawiły się pewne cechy  nie występujące w Delphi 3 (np. Menedżer Projektów). Delphi 4 odziedziczyło cechy wprowadzone do Buildera C++ 3, oczywiście otrzymując oprócz tego również kilka całkowicie nowych elementów. Builder C++ 4 prawdopodobnie będzie posiadał wszystkie nowe cechy środowiska Delphi 4 plus kilka własnych elementów nie istniejących jeszcze do tej pory, itd. Takie „przeskakiwanie” będzie zapewne trwało jeszcze przez jakiś czas, nadając każdemu nowemu produktowi (niezależnie czy będzie to Delphi, czy Builder C++) cechy poprzedników wzbogacone o pewne nowe elementy.

Przyjrzyjmy się teraz różnicom, zachodzącym między Delphi i Builderem C++.

Język

Podstawowe różnice wynikają z samej różnicy pomiędzy C++ i Object Pascalem – która to różnica uwidacznia się już w strukturze środowiska IDE. Przykładowo, Delphi posiada opcję menu o nazwie Use Unit (użyj modułu). W Builderze C++ opcja ta nosi nazwę Include Unit Hdr, ponieważ C++ dla każdego modułu stosuje plik nagłówkowy (.H lub .HPP). Z oczywistych powodów różnice tego typu występują w wielu miejscach obu środowisk.

Rozszerzenia plików

W Delphi i Builderze C++ stosowane są inne rozszerzenia nazw plików dla projektów i plików towarzyszących; częściowo jest to rezultat różnych języków programowania stosowanych przez oba produkty. Kontrast między rozszerzeniami nazw plików pozwala rozróżnić pliki Delphi od plików Buildera C++. Rozmaite elementy projektu oraz odpowiadające im rozszerzenia plików (w Delphi i Builderze C++) zestawione zostały w tabeli 21.1.

Tabela 21.1. Rozszerzenia plików stosowane w Delphi i Builderze C++

Element

Delphi

C++ Builder

Plik projektu

.DPR

.BPR

Plik grupy projektowej

.BPG

.BPG

Plik kodu źródłowego

.PAS

.CPP

Plik nagłówkowy

brak

.H lub .HPP

Plik formularza

.DFM

.DFM

Skompilowany plik binarny

.DCU

.OBJ

Skompilowany plik zasobów

.RES lub .DCR

.RES

Zapisane ustawienia pulpitu

.DSK

.DSK

Ustawienia projektu

.DOF

brak

Pliki źródłowe pakietu

.DPK

.BPK

Skompilowany pakiet

.BPL

.BPL

Zauważ, że w niektórych przypadkach rozszerzenia plików stosowane przez Delphi i Builderze C++ są takie same.

Zintegrowane środowisko programisty

Delphi 4 posiada całkiem nowe środowisko programisty. W szczególności, do nowych cech należą przestawione poniżej elementy środowiska, których nie można znaleźć w bieżącej wersji Buildera C++:

u                                          Możliwość dokowania menu, pasków narzędzi i Palety Komponentów.

u                                          Nowe bitmapy dla przycisków pasków narzędzi

u                                          Bitmapy dla kluczowych elementów menu

u                                          Możliwość dokowania okien narzędzi

Niektóre z przedstawionych wyżej udoskonaleń są zaledwie kosmetyczne (ale w końcu to żaden grzech zafundować aplikacji lifting od czasu do czasu!). Inne modyfikacje, takie jak możliwość dokowania pasków narzędzi, menu i okien narzędzi mają na celu zwiększenie wydajności pracy.

Edytor Kodu

Edytor Kodu w Delphi 4 został wzbogacony o wiele cech, których nie posiada Builder C++. Do cech tych zaliczyć można między innymi:

u                                          Nawigację po module

u                                          Uzupełnianie kodu

u                                          Uzupełnianie klas

u                                          Parametry kodu

Nawigacja po module jest operacją specyficzną dla języka Object Pascal, stąd nie budzi zdziwienia fakt, iż Builder C++ nie posiada takiego mechanizmu – dlaczego jednak Builder C++ nie posiada możliwości uzupełniania kodu i parametrów kodu? Każde zastosowanie mechanizmu uzupełniania kodu lub parametrów kodu wiąże się z koniecznością skompilowania bieżącego modułu. Jest to możliwe dzięki niewiarygodnej szybkości kompilatora języka Object Pascal. Komplikacja kodu C++ zajmuje znacznie więcej czasu, stąd zastosowanie powyższych mechanizmów w Builderze C++ przy użyciu tej samej techniki jest niewykonalne. Istnieją alternatywne metody implementacji tych cech, więc być może kolejne wersje Buildera C++ będą posiadały możliwości uzupełniania kodu i parametrów kodu.

Builder C++ nie posiada możliwości uzupełniania klas, ponieważ jest to nowa cecha wprowadzona razem z Delphi 4. Kolejna wersja Buildera C++ najprawdopodobniej zostanie wyposażona w ten mechanizm.

Eksplorator Kodu

Eksplorator Kodu jest również nową cechą Delphi 4, stąd nie można go znaleźć w żadnej z wersji Buildera C++. Jest to również cecha oczekiwana w kolejnej wersji Buildera C++.

Nowe elementy VCL

Biblioteka VCL wchodząca w skład Delphi 4 zawiera kilka nowych rzeczy niedostępnych jeszcze w środowisku Buildera C++. Do nowych rzeczy zaliczyć należy w szczególności następujące klasy:

u                                          TActionList

u                                          TControlBar

u                                          TDateTimePicker

u                                          TPageScroller

u                                          TSimpleMail

u                                          Dodatkowe komponenty ...

[ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czarkowski.pev.pl