Programowanie w języku Delphi

Out

out - słowo kluczowe języka Delphi

Słowo kluczowe out używane jest w połączeniu z procedurami i funkcjami, poprzedzenie parametru tym słowem oznacza iż jego wartość będzie zwracana przez referencję. Działanie prawie identyczne jak w przypadku poprzedzenia parametru słowem Var:

procedure Foo(var S);
procedure Bar(out S);


Różnica pomiędzy tymi dwoma deklaracjami jest taka, iż procedura Bar w ogóle nie będzie w stanie przyjmować wartości wejściowych - umożliwia tylko zwracanie wartości poprzez parametr S. Przykład:

procedure Foo(out S : String);
begin
  // parametr S jest pusty
end;
 
var
  Bar : String;
begin
  Bar := 'Hello World';
  Foo(Bar);
end.


W przedstawionym przykładzie, mimo iż przekazujemy wartość do parametru S - jego wartością będzie pusty ciąg. Poniższy przykład prezentuje użycie słowa kluczowego out w implementacji algorytmu Rot13</wiki>:

procedure Rot13(var Input : String; out Output : String);
var
  StrLen, I : Integer;
begin
  StrLen := Length(Input);
 
  for I := 0 to StrLen do
  begin
    if (((Input[i] >= 'A') and (Input[i] <= 'M')) or ((Input[i] >= 'a') and (Input[i] <= 'm'))) then
            Output := Output + Chr(Ord(Input[i]) + 13)
    else if (((Input[i] >= 'N') and (Input[i] <= 'Z')) or ((Input[i] >= 'n') and (Input[i] <= 'z'))) then
            Output := Output + Chr(Ord(Input[i]) - 13);
  end;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Bar, S : String;
begin
  // przypisanie tekstu z kontrolki
  S := Edit1.Text;
  // szyfrowanie
  Rot13(S, Bar);
  // przypisanie zaszyfrowanego tekstu
  Edit1.Text := Bar;
end;


Do realizacji tego zadania równie dobrze można by było użyć funkcji.

Zobacz też: