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ł

2 komentarzy

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?