With Statements

A with statement is a shorthand for referencing the fields of a record or the fields, properties, and methods of an object. The syntax of a with statement is withobjdostatement or withobjl,..., objndostatement where obj is an expression yielding a reference to a record, object instance, class instance, interface or class type (metaclass) instance, and statement is any simple or structured statement. Within the statement, you can refer to fields, properties, and methods of obj using their identifiers alone, that is, without qualifiers.

For example, given the declarations type

TDate = record Day: Integer; Month: Integer; Year: Integer; end;

OrderDate: TDate;

you could write the following with statement.

with OrderDate do if Month = l2 then begin

you could write the following with statement.

if OrderDate.Month = l2 then begin

  1. Month := l;
  2. Year := OrderDate.Year + l; end else
  3. Month := OrderDate.Month + l;

If the interpretation of obj involves indexing arrays or dereferencing pointers, these actions are performed once, before statement is executed. This makes with statements efficient as well as concise. It also means that assignments to a variable within statement cannot affect the interpretation of obj during the current execution of the with statement.

Each variable reference or method name in a with statement is interpreted, if possible, as a member of the specified object or record. If there is another variable or method of the same name that you want to access from the with statement, you need to prepend it with a qualifier, as in the following example.

with OrderDate do begin


When multiple objects or records appear after with, the entire statement is treated like a series of nested with statements. Thus withobjl, obj2,..., objndostatement is equivalent to with obj1 do with obj2 do with objn do // statement

In this case, each variable reference or method name in statement is interpreted, if possible, as a member of objn; otherwise it is interpreted, if possible, as a member of objnl; and so forth. The same rule applies to interpreting the objs themselves, so that, for instance, if objn is a member of both obj1 and obj2, it is interpreted as obj2.objn.

Project Management Made Easy

Project Management Made Easy

What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.

Get My Free Ebook

Post a comment