With
Adam Boduch
With - instrukcja wiążąca
Instrukcja with
jest przeważnie używana wraz z rekordami lub obiektami. Nie pełni ona żadnej znaczącej roli ? uwalnia za to programistę od pisania zbędnego kodu. Załóżmy, że program zawiera następujący rekord:
var
Rec : packed record
X, Y : Integer;
Imię : String[20];
Nazwisko : String[20];
Wiek : Byte;
end;
Prawidłowe wypełnienie rekordu jest przedstawione poniżej:
Rec.X := 12;
Rec.Y := 24;
Rec.Imię := 'Jan';
Rec.Nazwisko := 'Kowalski';
Rec.Wiek := 20;
Dzięki zastosowaniu instrukcji wiążącej with
kod ten można skrócić do następującej postaci:
with Rec do
begin
X := 12;
Y := 24;
Imię := 'Jan';
Nazwisko := 'Kowalski';
Wiek := 20;
end;
Instrukcja with
jest bardzo często używana przy tworzeniu dynamicznych obiektów, głównie okien. Zamiast pisać:
procedure Foo;
var
F: TForm;
begin
F := TForm.Create(Self);
F.Top := 40;
F.Left := 57;
(...)
F.Show;
end;
można napisać:
procedure Foo;
begin
with TForm.Create(Self) do
begin
Top := 40;
Left := 57;
(...)
Show;
end;
end;
Uwaga
<font color="red">Użycie "with" przysłania funkcje o identycznych nazwach w danym module, przez co dostęp do formularza i innych obiektów nadrzędnych jest tylko przez nazwę bądź self..</span> NP : ```delphi var Obszar : Trect; ..... With Obszar do Left := 20; // Ustala left zmiennej "Obszar" a nie np Formy Top := 10; end; ```Zobacz też:
Przy użyciu with można dokonać pewnych optymalizacji np. jeśli wywołujemy metodę z tym samym parametrem kilka razy zamiast pisać
można to samo zapisać tak:
w ten sposób nie musimy czekać na kilkukrotne przetworzenie metody Szukaj tylko operujemy na wcześniej zwróconym rezultacie