Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Внизмодифицирующий себя компонент Найти похожие ветки
← →
umbra © (2005-09-20 17:12) [0]Пишу компонент - логгер, наследник TFileStream.
TLogger = class(TFileStream)
private
FMaxSize: Int64;
function RotateLog: TLogger;
public
constructor Create(const FileName: string; Mode: Word; mSize: Int64);
end;
Поле FMaxSize - это максимальный размер лог-файла, после достижения которого текущий файл надо закрыть, создать новый на диске, открыть его
и писать дальше - и все в текущем экземпляре класса, предположительно в процедуре RotateLog. Предположительно, экземпляр будет полем другого компонента.
Как это возможно? Заранее спасибо
← →
Плохиш © (2005-09-20 17:16) [1]
> Поле FMaxSize - это максимальный размер лог-файла, после
> достижения которого текущий файл надо закрыть, создать новый
> на диске, открыть его
> и писать дальше - и все в текущем экземпляре класса, предположительно
> в процедуре RotateLog.
В каком месте проблемы?
← →
Digitman © (2005-09-20 17:18) [2]
> создать новый
с каким же, пардон, именем его создать ? при том что имя файла здесь ЖЕСТКО оговорено параметром FileName констр.метода Create() ?
← →
umbra © (2005-09-20 18:14) [3]
> В каком месте проблемы?
>
Проблема в том, что я не понимаю, как это вообще возможно. Все упирается в дескриптор открытого файла (свойство Handle). Единственное, что приходит в голову - апишкой CreateFile создать файл
uses SysUtils;
{.............}
procedure RotateLog;
var newname: string;
begin
newname := MakeNewName; //предположим, что эта функция гдето есть
Handle := CreateFile(newname);
end;
а что при этом будет с Size и Position?
← →
umbra © (2005-09-20 18:19) [4]
> при том что имя файла здесь ЖЕСТКО оговорено параметром
> FileName констр.метода Create()
В конструкторе предка. У наследника в конструкторе можно сделать с FileName что угодно и передать это что угодно inherited Create(...). Тут дело не в имени скорее...
← →
Digitman © (2005-09-20 18:22) [5]КТО заставляет тебя наследовать свой класс непосредственно от TFileStream ?
никто !
наследуй его от, например, TComonent, сделай TFileStream полем своего класса и верти им как угодно ! Создавай, уничтожай его как и когда тебе вздумается !
← →
Плохиш © (2005-09-20 18:22) [6]
> а что при этом будет с Size и Position?
Что ты с ними сделаешь, то и будет.
← →
umbra © (2005-09-21 10:27) [7]
> Что ты с ними сделаешь, то и будет
Прошу прощения! Затупил. В хелпе пишут про Size из TStream, а посмотрел в модуль Classes - в TFileStream он read-write и все методы реализованы
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c