Free Pascal - Prekladač jazyka Pascal

Anketa

Ktorý návod by ste cheli ako ďalší?:

Partenské projekty

Free Pascal - Operátor adresy

Verzia pre tlačSend by emailPDF verzia

Operátor adresy @ vracia adresu premennej procedúry alebo funkcie. Používa sa nasledovne:



Operátor adresy
--operátor adresa- @ -----|-------referencia premennej---------|------------------------
                          |-----identifikátor procedúry--------|
                          |------identifikátor funkcie---------|
|-kvalifikovaný identifikátor metódy-|

Operátor @ vracia typový smerník ak je zapnutý prepínač $T. Ak je prepínač $T vypnutý, potom operátor adresy vracia smerník bez typu, ktorý je možné priradiť do akéhokoľvek typového smerníka. Typ smerníka je ^T, pričom T je typ referencie premennej. V takom prípade sa nasledujúci príklad preloží

Program tcast;
{$T-} { @ vracia smerník bez typu }
 
Type art = Array[1..100] of byte;
Var Schranka : longint;
    PVelkaSchranka : ^art;
begin
 PVelkaSchranka := @Schranka;
end.

Ak zmeníme {$T-} na {$T+} prekladač program nepreloží, a zobrazí chybu nesúlad typov (type mismatch).

V predvolenom stave operátor adresy vracia smerník bez typu – pri použití operátora adresa na identifikátor funkcie, metódy alebo procedúry, získame smerník na vstupný bod danej funkcie. Výsledkom je smerník bez typu.

To znamená, že nasledujúci program bude fungovať:

Procedure MojaProcedúra;
 
begin
end;
 
Var: PChar;
 
begin
  P:=@MyProc;
end;

V predvolenom stave sa operátor adresy musí priradiť do premennej procedurálneho typu. Tomuto správaniu môžeme zabrániť pomocou prepínačov -Mtp alebo -MDelphi, ktoré vedú k väčšej kompatibilite so syntaxou Delphi a Turbo Pascal.