Начну издалека. Есть комплексное число и массив этих чисел. Хочу сделать всё через interface. Итак:
| Код | IObject = interface function to_s: string; // в виде строки end;
TComplex = class(TInterfacedObject, IObject) Real, Imag: extended; function to_s: string; end;
|
IObject делаю, потому что в дальнейшем от него получу комплексный вектор и матрицу. Создаю массив:
| Код | var m:array of IObject;
|
и процедуру занесения данных в этот массив:
| Код | procedure Add(const obj:IObject); begin SetLength(m,Length(m)+1); m[Length(m)-1]:=obj; end;
|
Далее пытаюсь занести в массив данные:
| Код | setlength(m,0); add(TComplex.Create); add(TComplex.Create);
|
Так вот, при первом занесении данных смотрю через ctrl+F7:
| Код | TComplex(m[0]): (0, 0, 0)
|
А при втором занесении данных, когда только вхожу в процедуру, получаю:
| Код | TComplex(m[0]): (0, 0, 3,6854775808e-987)
|
Вопрос: почему изменяюстся данные и что я делаю не так?
|