Begin

rk7771

begin - słowo kluczowe języka Delphi

Słowo kluczowe języka Delphi (także języka Pascal) oznaczające rozpoczęcie właściwych instrukcji programu. Pomiędzy słowami kluczowymi begin i end można zawierać także zbiory instrukcji, które można umieścić w dowolnym miejscu kodu (istnieją wyjątki od tej reguły - patrz dalej).

W programie Delphi musi znaleźć się przynajmniej jeden blok instrukcji, aby program był funkcjonalny (czyli coś wykonywał).

program AppName;

{$APPTYPE CONSOLE}

begin
  Writeln('Hello World');
end.

Uruchamiany program rozpoczyna swoje działanie, właśnie w bloku begin .. end, a konkretnie w linii 6. Instrukcja Writeln powoduje wyświetlenie tekstu na konsoli.

Słowo kluczowe begin jest również używane do grupowania instrukcji.

Ilośc instrukcji begin i end musi być sobie równa. W przypadku zbyt dużej liczby słów begin kompilator wyświetla błąd: [Error] nazwa_projektu.dpr: '.' expected but ':' found. Brak słowa end spowoduje wyświetlenie błędu: [Error] nazwa_projektu.dpr: 'END' expected but end of file found. Wyjątkiem są moduły, których zawartość musi kończyć się słowem end.

Wyjątki

Słowo kluczowe begin nie jest dozwolone w sekcji Interface oraz bezpośrednio w sekcji Implementation modułu. Przykład kodu:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  begin

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

Powyższy kod spowoduje wystąpienie błędu: [Error] Unit1.pas(17): Statements not allowed in interface part.


Zobacz także:

9 komentarzy

Jeżeli bierzemy pod uwagę sam wyraz "end;", to twierdzenie że "Ilość instrukcji begin i end musi być sobie równa" jest błędne. end; stosujemy także w rekordach, klasach, obiektach, instrukcjach warunkowych case..of .

Po co takie komentarze ?.. jeśli czegoś brakuje lub jest nie tak zawsze możecie poprawić lub dopisać..

Ilośc instrukcji begin i end musi być sobie równa

niby czemu ? każdy begin musi się kończyć słowem end, ale nie każdy end musi się zaczynać słowem begin, można rozpocząć np try, case, record, class, implementation i jeszcze chyba kilkoma innymi słowami (nie mówię że są to zamienniki begina tylko bloki które też się zamyka endem)

no nie wiem ale używanie begin i end jest normalne, intuicyjne i w ogóle nie ma nic łatwiejszego, natomiast jakbym pierwszy raz naprawdę się spotkał z tymi instrukcjami to mam wrażenie że bym miał strasznie zamotane w głowie, na pewno IMO nie jest to artykuł dla totalnego nowicjusza, a nikomu innemu on się nie przyda ...

A dlaczego by nie? :P

No co Ty tak obcy artykuł poprawiac :P

PS. no teraz gitarra :P

Czemu wiec nie poprawicie? :]

No właśnie - bo z tego wynika, że "begin" i "end" to wymysł Delphi, a przecież pochodzą one z pascala.

Troche temat został potraktowany po macoszemu. To co zostało opisane tworzy samo środowisko przy starcie nowego projektu. Należało raczej skupić się na <ort>wykożystaniu</ort> begin .. end w procedurach, funkcjach, instrukcjach if, with, for, itp. Można tez było napisać, że pascalowe begin .. end odpowiada c (c++) { }

Chciałbym tylko zaznaczyć, że w modułach może występować jedno słowo "end" więcej niż "begin". Zawsze moduł musi kończyć się "end.", ale nie musi mieć pełnego bloku "begin..end." w tym miejscu.
Tam gdzie jest ten błąd: [Error] nazwa_projektu.dpr: '.' expected but ':' found wydaje mi się, że powinien być średnik a nie dwukropek.
Po trzecie bardzo pobieżnie jest zaznaczone, że begin..end występuje jako blok instrukcji, cały czas jest o głównym kodzie programu, w którym spotyka się to statystycznie kilkaset razy rzadziej (pewnie gdzieś tyle wynosi średnia liczba bloków begin..end w programie).