Moduł
Patryk27
Moduł to plik Delphi lub Pascal'a (.pas) zawierający zbiór funkcji.
Aby utworzyć moduł uruchamiamy Delphi (w moim przypadku 2007) wybieramy menu File/New/Unit
Domyślne taki kod stworzy Delphi:
unit Unit2;
interface
implementation
end.
Albo w każdym razie podobny do tego wyżej.
Zamykamy Unit1 (wchodzimy do Unit1, naciskamy prawym przyciskiem i wybierzmy Close Page) i nie zapisujemy zmian.
Teraz mamy tylko Unit2.
Zapisujemy Unit2 do jakiegoś folderu na pulpicie (np.Moduly_lekcja) pod nazwą MyMod.pas.
Teraz popatrz na moduł w oknie Delphi, czy widzisz jakąś zmianę ?
Tak, słowo Unit2 ma teraz nazwę MyMod.
Teraz taki kod wpiszcie do MyMod:
Unit MyMod; //Nazwa pliku
Interface
Uses Windows;
Function MyFunc: String; //Nasza funkcja (z angielskiego "Moja funkcja")
Procedure DisplayMessage; //Nasza procedura (z angielskiego "Wyświetl wiadomość")
Implementation
Uses Dialogs;
Function MyFunc: String;
Begin
Result := 'Hello world !'; //MyFunc zwraca ciąg znaków (string)
End;
Procedure DisplayMessage;
Begin
ShowMessage(MyFunc); //A DisplayMessage wyświetla wynik MyFunc
End;
End.
Opis tego otóż kodu:
Unit - Oznacza rozpoczęcie modułu, po tym słowie należy napisać nazwę pliku do kropki (ale bez kropki) (Delphi po zapisie pliku pierwszy raz zmienia nazwę automatycznie)
Interface - Otwiera część publiczną modułu, w której umieszcza się deklaracje procedur, funkcji, zmiennych i stałych, które mają być dostępne dla innych modułów (korzystających z tego).
Uses - Lista modułów, które wymaga ten moduł.
Implementation - Rozpoczyna "strefę" pisania definicji dla funkcji i procedur "publicznych" (dostępnych dla wszystkich modułów, które korzystają z tego) i "prywatnych" (dostępnych tylko dla tego modułu).
Uses (to drugie) - Moduły wewnętrze (np.jeśli są 2 moduły "A", "B" i moduł A wykorzystuje B (a moduł B wymaga A) to w module B trzeba tutaj napisać moduł A. Przykład potem...)
Function MyFunc: String; - Chyba tutaj nie trzeba nic tłumaczyć
End.Koniec modułu.
Teraz wejdź w menu Project a potem w View Source.
Pokaże się teraz kod aplikacji, po komendzie Application.Run dopisz DisplayMessage; i skompiluj (F9);
Wyświetli się wiadomość z napisem "Hello world !".
Ciekawe to no nie ?
Teraz zostawimy aplikację w spokoju (menu File\Save Project As... i zapisujemy aplikację pod nazwą Moduly_1).
Teraz wybieramy File\New\Other a potem Console Application.
To utworzy nową aplikację konsolową.
↓Idziemy dalej↓
Tak jak obiecałem teraz "powtarzalność modułów":
Wybieramy File\New\Unit i wpisujemy taki kod do nowgo modułu:
Moduł A
Unit A; //Tego nie wpisuj !
Interface
Uses B;
Function Czesc1Tekstu: String;
Implementation
Function Czesc1Tekstu: String;
Begin
Result := 'Hello ';
End;
End.
Jeszcze raz tworzymy nowy moduł (File\New\Unit) i wpisujemy taki kod:
Moduł B
Unit B; //Oczywiście nie wpisuj tego (kompilator sam to wpisze podczas zapisu)
Interface
Uses Dialogs; //I tutaj już nie można dopisać modułu A, ponieważ A używa B (nie dawno się tego dowiedziałem,
//dlatego tak słabo opisałem)
Procedure WyswietlTekst;
Implementation
Uses A; //Tutaj trzeba to napisać :-)
Procedure WyswietlTekst;
Begin
ShowMessage(Czesc1Tekstu + 'world !');
End;
End.
Zapisujemy oba moduły (Moduł A pod nazwą A.pas, Moduł B pod nazwą B.pas)
Teraz wybieramy Project\View Source i kompilator wyświetli nam kod główny aplikacji (teraz powinien tak wyglądać:)
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
{ TODO -oUser -cConsole Main : Insert code here }
end.
Usuwamy linijkę { TODO -oUser -cConsole Main : Insert code here } ;potem zamiast SysUtils wpisujemy B (nasz moduł), i po begin
dopisujemy WyswietlTekst;
Kompilujemy (przycisk F9).
I, wyświetliła się wiadomość "Hello world !".
To ciekawe zagadnienie ?
Co nie ?
Już prawie kończysz, ale to nic.
Teraz 3 wskazówki:
Aby wczytać moduł do programu wystarczy na początku kodu (po słowie Program (np.w aplikacji konsolowej), lub po słowie Interface (np.w module)) dodać:
//...
Uses B;
//...
</dfn>
I aby uruchomić procedurę należy wpisać jej nazwę do kodu (tam gdzie potrzebujemy):
```delphi
//...
WyswietlTekst;
//...
```
A czy wiesz, że podczas tworzenia nowej formy tworzy się także nowy moduł ?
Uwierzysz, że to już koniec ?
Teraz wiesz (przynajmniej troszkę więcej) o słowie moduł
Ponadto nie mogą one sobie tak z dupy stać i język je rozpozna -- o składni coś słyszałeś? Na podstawie tego, co napisałeś, taki program będzie "jednoznacznie rozpoznany przez Delphi": play five nights at freddy's free online game.
"I tutaj już nie można dopisać modułu A, ponieważ kompilator wywali błąd"
A może napiszesz, dlaczego akurat tutaj wywaliłby ten błąd?