![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте.
Столкнулся с некоторыми проблемами при создании объекта и массива этого-же объекта, конкретно - с манипуляцией элементов в массиве. Объект содержит только энный набор данных и несколько функций "одиночной" обработки. Код:
type TCommand = class (TObject) ComList: TStringList; Error: Cardinal; public procedure AssignObjects (ObjArray: array of TObject) ; procedure AssignStrings (Str: TStrings); procedure AssignObjectsStrings (Str: TStrings); constructor Create; destructor Free; end; Код:
TCommandStackElement= record Command: TCommand; Time: TDateTime; end; TCommandStackElmt = array of TCommandStackElement; PCommandStackElmt = ^TCommandStackElmt; TCommandStack = class (TObject) private PCommandStack: PCommandStackElmt; Created: Boolean; //проверка на "созданность" FSize: Cardinal; //под сколько элементов уже выделено памяти FCount: Cardinal; //количество занятых элементов public function AddNew (ICommand: TCommand): Boolean; //и остальные функции обработки Код:
ReallocMem(PCommandStack,(FSize)*SizeOf(TCommandStackElement)); 2я проблема в добавлении элемента - для этого вызывается AddNew (ICommand: TCommand): Код:
function TCommandStack.AddNew (ICommand: TCommand): Boolean; var OldLength: Cardinal; begin try Result:=True; if FSetSize(Self.FCount+1) then begin Inc(FCount); try PCommandStack^[Self.FCount].Time:=Now; PCommandStack^[Self.FCount].@Command:=@ICommand; except Result:=False; PCommandStack^[Self.FCount].Command:= TCommand.create; PCommandStack^[Self.FCount].Command:=ICommand; end; end; except end; end; Код:
PCommandStackElement = ^TCommandStackElement; TCommandStackElmt = array of ^PCommandStackElement; PCommandStackElmt = ^TCommandStackElmt; TCommandStack = class (TObject) private PCommandStack: PCommandStackElmt; Последний раз редактировалось Velz, 02.04.2012 в 16:19. |