From Appmethod Libraries
Jump to: navigation, search

Object Pascal

procedure Assign(Source: TPersistent); virtual;


virtual void __fastcall Assign(TPersistent* Source);


Type Visibility Source Unit Parent
System.Classes TPersistent


Copies the contents of another similar object.

Assign copies properties and other attributes of the specified <Source> object to the current object. The standard form of a call to Assign is:

Destination.Assign(Source); {Delphi}
Destination->Assign(Source); // C++

which tells the current object to copy the contents of the <Source> object to itself.

Most objects override Assign to handle the assignment of properties from similar objects. When overriding Assign, call the inherited method if the destination object cannot handle the assignment of properties from the class of the <Source> parameter.

If no overridden Assign method can handle the assignment of properties from <Source>, the method implemented in TPersistent calls the source object's AssignTo method. This allows the source object to handle the assignment. If the <Source> object is nil (Object Pascal) or NULL (C++), Assign raises an EConvertError exception.

In general, the statement

Destination := Source; {Delphi}
Destination = Source; // C++

is not the same as the statement

Destination.Assign(Source); {Delphi}
Destination->Assign(Source); // C++

The assignment operator makes Destination reference the same object as <Source>, whereas the Assign method copies the contents of the object referenced by Source into the object referenced by Destination.

Note: The types of some properties are also objects. If these properties have written methods that use Assign to set the value of the property, then in these cases the assignment operator does the same thing as the Assign method.

See Also