Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Вниз

Как ограничить размер текстового файла   Найти похожие ветки 

 
лошок   (2004-01-20 15:21) [0]

Помогите пожалуйста! Нужно чтобы размер текстового лог-файла был ограничен. Посоветуйте с помощью каких процедур и функциий этого добиться.
Нужно каждый раз при записи лог-фалйа смотреть его размер и удалять в начале файла лишние строки, а как это сделать быстрее всего? Спасибо


 
Плохиш_   (2004-01-20 15:25) [1]

АП уже сказал, что текстовый файл - это устройство последовательного доступа, поэтому только копированием из одного файла в другой


 
Anatoly Podgoretsky   (2004-01-20 15:26) [2]

Какой размер?


 
Плохиш_   (2004-01-20 15:44) [3]


> Anatoly Podgoretsky © (20.01.04 15:26) [2]
> Какой размер?

Ну Вам всё расскажи (краснея и смущаясь...)


 
Anatoly Podgoretsky   (2004-01-20 15:45) [4]

От этого зависит решение


 
лошок   (2004-01-20 15:50) [5]

размер лог-файла. соответственно самые старые строки надо удалять а новые писать в конец файла.


 
Плохиш_   (2004-01-20 15:54) [6]


> лошок (20.01.04 15:50) [5]
> размер лог-файла. соответственно самые старые строки надо
> удалять а новые писать в конец файла.

Товарисчь не понимает. :-(
У текстового файла можно выделить 2 размера в байтах и в строках, какой интересует.


 
Семен Сорокин   (2004-01-20 15:54) [7]

вот мой вариант этого решения:

Info.LogFile - файл
Info.LogSize - нужный размер

procedure CheckLogSize;
var
_f: file of Byte;
_size: Longint;
_diff: longint;
_i: integer;
_strs: TStrings;
begin
if FileExists(Info.LogFile) then begin
AssignFile(_f, Info.LogFile);
Reset(_f);
try
_size := FileSize(_f);
_diff := _size - LOG_SIZES[Info.LogSize] // размер файла больше допустимого
finally
CloseFile(_f)
end;
if _diff > 0 then begin // удаляем все лишнее и первые 10%
_strs := TStringList.Create;
try
_strs.LoadFromFile(Info.LogFile);
_diff := Round(((_diff + LOG_SIZES[Info.LogSize] div 10)/_size)*_strs.Count);
for _i := _diff downto 0 do
_strs.Delete(_i);
_strs.SaveToFile(Info.LogFile)
finally
_strs.Free
end
end
end
end;

{Запись в логфайл}
procedure SaveToLog(const AMessage: string);
var
_file: TextFile;
_date: string;
begin
CheckLogSize;
AssignFile(_file, Info.LogFile);
{$I-}
Append(_file);
{$I+}
if IOResult <> 0 then
Rewrite(_file);
try
_date:= FormatDateTime("[d/mmm/yyyy hh:nn:ss]" + CRLF, Now);
WriteLn(_file, _date + AMessage);
WriteLn(_file, "--------------------------------------------------------------------------");
finally
CloseFile(_file)
end
end;


 
Anatoly Podgoretsky   (2004-01-20 15:56) [8]

Нет он не понимает, что когда просят указать размер, надо не общии разглагольствование а указать размер в физических единицах.


 
лошок   (2004-01-20 15:57) [9]

большое спасибо семену сорокину за идеи!


 
Плохиш_   (2004-01-20 15:57) [10]

>Семен Сорокин © (20.01.04 15:54) [7]

Ну вот лишил человека возможности подумать :-(


 
Семен Сорокин   (2004-01-20 16:01) [11]

Плохиш_ (20.01.04 15:57) [10]
>Семен Сорокин © (20.01.04 15:54) [7]

Ну вот лишил человека возможности подумать :-(

вот же ... блин
эт я не подумал, ну ничего я там про Info.LogSize немного наврал, подумать придется всетаки :))


 
Anatoly Podgoretsky   (2004-01-20 16:02) [12]

А нас возможности узнать размер файла, редиска, в переводе нехороший человек.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.016 c
1-2096
Марат
2004-01-20 08:15
2004.02.02
HotKey


4-2435
Aleksandr
2003-11-04 11:33
2004.02.02
Объясните мне, как работать с WaitForMultipleObjects?


14-2353
Cerber
2004-01-09 08:10
2004.02.02
RTFM или тупые вопросы.


1-2192
Boroda Oleg
2004-01-21 10:20
2004.02.02
Как подключится к сетевому рессурсу и стащить (если нужно) файл


6-2257
2ac
2003-11-26 07:31
2004.02.02
Какое событие в TWebBrowser срабатывает при обнаружении ошибки ск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский