Стек в Delphi.
Ибо с TObjectStack неполучилось записывать real. Просьба и спользование динамических массивов не предлагать.
Переходи на .NET. :D :D :D
А если серьезно, предлагаемое решение уже реализовано в .NET - там все типы являются классами, просто некоторые из них могут быть представлены сразу значениями, как System.Integer, например.
Короче, если хочешь пользоваться именно TObjectStack, придется превратить значения типа real в классы, описав что-то вроде:
private
FValue: Real;
public
property Value: Real read FValue write FValue;
end;
Короче, если хочешь пользоваться именно TObjectStack
Зачем это? Помоему TList – вполне подходит для этих целей!
Зачем это? Помоему TList – вполне подходит для этих целей!
SizeOf(Real) проверял или как?
SizeOf(Real) проверял или как?
Вы имеете ввиду, что раз у него размер 6 байт, то указатели истользовать глупо?
Вообще, я TList использую обычно для удобства, вместо всяких-там массивов. В Пасе раньше приходилось такие штуки самому писать (двухсвязные списки), а теперь - M : TList, и все проблемы!
Я так думаю, что обращение к информации через свойства работает медленнее, чем к обычным массивам(или к чему-нибудь еще).
Вы имеете ввиду, что раз у него размер 6 байт, то указатели истользовать глупо?
Вообще, я TList использую обычно для удобства, вместо всяких-там массивов. В Пасе раньше приходилось такие штуки самому писать (двухсвязные списки), а теперь - M : TList, и все проблемы!
Если быть до конца точным, при настройках компилятора по умолчанию не шесть байт, а 8 (Real = Double).
Во-вторых, для использования TList требуется написание некоторого дополнительного кода по выделению и освобождению памяти, что делает это решение не таким гибким, как хотелось бы. Для полного решения проблемы надо разработать класс-наследник TList, выделяющий и освобождающий память автоматически, как сделал это я в своем TItemList. Самое интересное, что все необходимое для этого в TList уже есть, надо только перекрыть один метод! Не позаботились в Borland о программистах в этом месте...
В-третьих, TList для предложенной задачи может оказаться непригодным, если нужен действительно стек. TObjectStack - это именно стек, имеющий методы Push и Pop.
Ну, а в четвертых - это уже флуд, не отосящийся к поставленной теме.
Для полного решения проблемы надо разработать класс-наследник TList, выделяющий и освобождающий память автоматически, как сделал это я в своем TItemList.
Кстати, могу поделиться, если кому надо.