Moduły » System

Dec

Dec
Moduł: System

procedure Dec(var X[ ; N: Longint]);

Procedura zmniejsza wartość parametru X o 1 lub wartość parametru N, a w wypadku, gdy to jest wskaźnik typowany, przesuwa go o rozmiar typu, na który wskazuje, co jest przydatne, np. przy optymalnym korzystaniu z tablic.

Procedura Dec ma zastosowanie przy:


Wartość parametru X może być dowolnego typu porządkowego (włączając Int64). Procedura Dec generuje optymalny kod, jest zalecana do używania w pętlach, zamiast operatora odejmowania (-):

var
  X : Integer;
begin
  X := 10;
  Dec(X); // efekt: X będzie miało wartość 9
  X := X - 1; // efekt: X będzie miało wartość 8
  Dec(X, 2); // efekt: X będzie miało wartość 6
end;


Parametr X nie może być właściwością

Przykładowe użycie gdy parametr X jest wskaźnikiem:

program Foo;
 
{$APPTYPE CONSOLE}
 
var
  E : PExtended;
begin
  // przydzielenie pamięci
  GetMem(E, SizeOf(Extended) * 2);
  E^ := 2.45; // przypisanie danych
  Inc(E); // zmiana położenia bloku
  E^ := 4.56; // przypisanie wartości
 
  Dec(E);
 
  Writeln(E^); // wyświetli: 2.45
  Inc(E);
  Writeln(E^); // wyświetli: 4.56
 
  Readln;
  FreeMem(E); // zwolnienie pamięci
end.


Możliwe jest również użycie procedury Dec na wartościach znakowych. Poniższy przykład prezentuje użycie tej procedury na zmiennej C typu Char:

var
  C : Char;
begin
  C := 'B';
  Dec(C); // zmienna posiada wartość 'A'
end;



W połączeniu ze zbiorami, procedura Dec przesuwa aktywny element o N:

program Foo;
 
{$APPTYPE CONSOLE}
 
type
  TMySet = (Audi, BMW, Mercedes);
 
var
  mySet : TMySet;
begin
  mySet := BMW;
 
  // mySet będzie miało wartość 'Audi'
  Dec(mySet);
 
  case mySet of
    Audi: Writeln('Audi');
    BMW: Writeln('BWM');
    Mercedes: Writeln('Mercedes');
  end;
  Readln;
end.


Po wykonaniu takiego kodu, wartość mySet będzie równa Audi.

Zobacz też: