Assasin писал(а):
Для того, чтобы хранить размер реально выделенной под поток байт памяти. Использоваться может меньше, а выделяться больше. Это чтобы меньше использовать динамическое выделение.Не смешите мои подковы.
Честное слово, я профессиональный Читатель. Читать - умею.
Вот карта использования этого FAlloced
#pas
constructor TProgram.Create;
...
FAlloced := 0;
...
end;
...
function TProgram.AllocMemIfNeeded(need:integer): boolean;
...
nsz := FAlloced;
...
if nsz <> FAlloced then begin
...
end;
...
procedure TProgram.Clear;
...
FreeMem(FPgm, FAlloced);
FPgm := nil;
FAlloced := 0;
end;
...
procedure TProgram.Truncate;
begin
if FUsed < FAlloced then begin
ReallocMem(FPgm, FUsed);
FAlloced := FUsed;
end;
end;
...
Это называется "Оппа-аньки".
Я то, тупой, думал, что мне как-бы облегчили жизнь, сказавши, что мне надо лишь знать методы ReadXXX, WriteXXX, и Clear.
Оказывается не фига.
Есть еще Truncate
И мне следует произвести криминалистические исследования "а что это за девочка, и где она живет"
А если еще присмотреться, то условие в Truncate никогда не выполнится.
Но давай вспомним самый главный вопрос - НА ХРЕНА МНЕ ЭТИ РАЗБОРКИ.
Как впрочем, и всем остальным.
Сейчас вспомню
Assasin писал(а):
я как раз считаю, что делаю лучше, и что избавляюсь от проблем, которые возникнутА по-моему, ты их создал.
Ибо лучшее средство от перхоти - гильотина
------------ Дoбавленo в 14.16:
Assasin писал(а):
А вот однажды смекалистый юзер такое применение найдет, что откроется бага в нихПро теорию я знаю.
Таковая инкапсуляция осуществляется, чтобы гарантировать реализацией методов сохранение некоторых инвариантов класса (например, некоторые логические соотношения между значениями его полей).
Которые смекалистый юзер сумеет нарушить без инкапсуляции.
ПОКАЖИ мне эти инварианты (условия).
Вспомни: "Не вводи новые сущности без необходимости".
Т.е., сначала НЕОБХОДИМОСТЬ, а потом - новая сущность.
Вот какого черта вы делаете (точнее - вас учат так делать) с точностью ДО НАОБОРОТ