Справочник функций и процедур Delphi: With

  Навигация по первой букве:

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

With
Ключевое слово
Средство упрощения ссылок к структурированным переменным unit
  
1 with data name do Statement;

2 with data name do
  begin
   Statement;
   {...}
  end;

Delphi Sources

Описание
Ключевое слово With - удобство, обеспеченное Delphi для того, чтобы сослаться на элементы сложной переменной, типа записи или объекта.

Это упрощает код, удаляя потребность в префиксе для каждого упомянутого элемента переменной со сложным именем.

Например:

myObject.colour:= clRed;
myObject.size:= 23.5;
myObject.name:= 'Fred';

может быть перезаписан:

With myObject do
begin
colour:= clRed;
size:= 23.5;
name:= 'Fred';
end;

Однако будьте осторожны, так как его использование может, к удивлению, сделать код более трудным для восприятия. А также это может создать такие проблемы, где изменение кода может подразумевать неправильный адресат для 'дочернего' поля, которое упоминают.
Примечания
В пределах предложения With, Delphi пробует решить эти 'неполные' ссылки, смотря сначала на адресат стоящий после With.

Затем просматриваются другие типы данных, типа локальных переменных, параметры подпрограмм и т.п. Это то, где начинаются некоторые опасности с ключевым With.

Используйте с осторожностью!
Похожие команды
Begin  Ключевое слово, которое начинает операторный блок

End  Ключевое слово, которое заканчивает операторные блоки

Record  Структурный тип данных содержащий поля данных

 
Пример кода : Использование ключевого слова with со структурой записи
type
  // Объявление записи клиента
  TCustomer = Record
    firstName : string[20];
    lastName  : string[20];
    address1  : string[100];
    address2  : string[100];
    address3  : string[100];
    city      : string[20];
    postCode  : string[8];
  end;

var
  John, Sarah : TCustomer;

begin
  // Установка подробностей клиента Джона
  With John do
  begin
    firstName := 'John';
    lastName  := 'Smith';
    address1  := '7 Park Drive';
    address2  := 'Branston';
    address3  := 'Grimworth';
    city      := 'Banmore';
    postCode  := 'BNM 1AB';
  end;

  // Установка подробностей сестры Джона - просто копируя целой записи
  Sarah := John;

  // И затем изменяем имя
  Sarah.firstName := 'Sarah';

  // Теперь показываем подробности обоих клиентов
  With John do ShowCustomer([firstName, lastName,
                             address1, address2, address3, city,
                             postCode]);
  With Sarah do ShowCustomer([firstName, lastName,
                             address1, address2, address3, city,
                             postCode]);
end;

// Процедура, которая отображает переменный число строк
procedure TForm1.ShowCustomer(const fields: array of string);
var
  i : Integer;

begin
  // Отображение всех переданных полей - примечание: массивы начинаются с 0
  for i := 0 to Length(fields)-1 do
    ShowMessage(fields[i]);
end;
John
Smith
7 Park Drive
Branston
Grimworth
Banmore
BNM 1AB

Sarah
Smith
7 Park Drive
Branston
Grimworth
Banmore
BNM 1AB
 


Последние добавленные на сайт исходники

DeLiKaTeS Tetris (Тетрис)

TDictionary Custom Sort

Fast Watermark Sources

3D Designer

Sik Screen Capture

Patch Maker

 

Айболит (remote control)

ListBox Drag & Drop

Доска для игры Реверси

Графические эффекты

Рисование по маске

Перетаскивание изображений

 

Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software (источник – "DelphiBasics")

Группа ВКонтакте