I want to make the type of record that uses dynamic arrays.
Using the variables A and B of this type I want to be able to perform operations A: = B (and other) and be able to modify the content of A without modification B like in snipped code below:
type
TMyRec = record
Inner_Array: array of double;
public
procedure SetSize(n: integer);
class operator Implicit(source: TMyRec): TMyRec;
end;
implementation
procedure TMyRec.SetSize(n: integer);
begin
SetLength(Inner_Array, n);
end;
class operator TMyRec.Implicit(source: TMyRec): TMyRec;
begin
//here I want to copy data from source to destination (A to B in my simple example below)
//but here is the compilator error
//[DCC Error] : E2521 Operator 'Implicit' must take one 'TMyRec' type in parameter or result type
end;
var
A, B: TMyRec;
begin
A.SetSize(2);
A.Inner_Array[1] := 1;
B := A;
A.Inner_Array[1] := 0;
//here are the same values inside A and B (they pointed the same inner memory)
There are two problems:
to avoid problem 1) I want to overload assign operator using:
class operator TMyRec.Implicit(source: TMyRec): TMyRec;
but compilator (Delphi XE) says:
[DCC Error] : E2521 Operator 'Implicit' must take one 'TMyRec' type in parameter or result type
How to resolve this problems. I read several similar posts on stackoverflow but they don't work (if I understood they well) on my situation.
Artik
It is not possible to overload the assignment operator. This means that what you are attempting to do is not possible.
Edit: It is possible now - http://docwiki.embarcadero.com/RADStudio/Sydney/en/Custom_Managed_Records#The_Assign_Operator