Форум: "Потрепаться";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
ВнизПара функций для DMClient a Найти похожие ветки
← →
jack128 © (2004-07-10 01:14) [0]Не знаю как кому, а мне нравиться просматривать различные статистические выкладки ;-)
И вот захотелось мне сколько же постов я сделал на этом форуме.. К сожелению это невозможно, но те посты, которые хранятся в архиве DMClient"a я подсчитать могу. В итоге написана пара функций, которы вы можите применить на свои архивы форумов..
// кол-во постов в файлеfunction GetPostCount(NickName: string; Filename: string; sl: TStrings = nil): Integer;
var
f: boolean;
i, j: Integer;
CurNick: string;
TempP: PChar;
begin
Result := 0;
f := Assigned(sl);
if not f then
sl := TStringList.Create;
try
sl.LoadFromFile(Filename);
for i := 0 to sl.Count - 1 do
begin
CurNick := sl[i];
if Length(CurNick) < 2 then Continue;
if CurNick[1] <> "<" then // у кого нет мыла
begin
for j := 2 to Length(CurNick) - Length(" ") do
begin
// если встретили ссылку на анкету или эту последовательность символов
// (хз, что такое, но тоже служет признаком окончания ника)
if (CurNick[j] = "<") or (copy(CurNick, j, Length(" ")) = " ") then
begin
CurNick := copy(CurNick, 1, j - 2);
Break;
end;
end;
end
else
begin // у кого есть мыло
TempP := @CurNick[pos(">", CurNick) + 1];
CurNick := copy(TempP, 1, pos("<", TempP) - 1);
end;
if CurNick = NickName then inc(Result);
end;
finally
if not f then
sl.Free;
end;
end;
// кол-во постов во всех файлах директории и поддиректории
function GetTotalPostCount(NickName: string; InitDir: string): Integer;
var
ffh: THandle;
ffd: TWin32FindData;
sl: TStringList;
begin
Result := 0;
sl := nil;
ffh := FindFirstFile(PChar(InitDir + "\*.*"), ffd);
if ffh <> INVALID_HANDLE_VALUE then
begin
try
sl := TStringList.Create;
repeat
if (ffd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY then
begin
if (string(ffd.cFileName) = ".") or (string(ffd.cFileName) = "..") then Continue;
inc(Result, GetTotalPostCount(NickName, InitDir + "\" + ffd.cFileName))
end
else
if StrToInt64Def(copy(ffd.cFileName, 1, pos(".", ffd.cFileName) - 1), -1) > 0 then
inc(Result, GetPostCount(NickName, InitDir + "\" + ffd.cFileName, sl));
until not FindNextFile(ffh, ffd);
finally
Windows.FindClose(ffh);
sl.Free;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := IntToStr(GetTotalPostCount(Edit1.Text, "F:\Internet\DeplhiMasterForums\DMClient_2.0a"));
end;
в общем пользуйтесь, если хотите..
← →
jack128 © (2004-07-10 01:18) [1]гы. Скрипт удалил кой какую важную детать
Попробуем так
const
MagicStr = "&"+"n"+"b"+"s"+"p";
> for j := 2 to Length(CurNick) - Length(MagicStr) do
> begin
> // если встретили ссылку на анкету или эту последовательность
> символов
> // (хз, что такое, но тоже служет признаком окончания
> ника)
> if (CurNick[j] = "<") or (copy(CurNick, j, Length(MagicStr)) = MagicStr) then
> begin
> CurNick := copy(CurNick, 1, j - 2);
> Break;
> end;
> end;
>
← →
DeadMeat © (2004-07-10 01:24) [2]Круто... Оказывается у меня 217 постов...
Хотелось бы ещё узнать с какого по какое число... :))
---
...Death Is Only The Begining...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c