Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизПомогите найти ошибку, плиз Найти похожие ветки
← →
RDS © (2006-01-05 21:20) [0]есть код
unit ProcList;
interface
uses classes, SysUtils, tlhelp32, windows;
type
TSnapItem=record
ProcessID: DWORD;
Name: string[255];
end;
type
TDiffSnapItem=record
SnapTime: TDateTime;
ItemType: Boolean; // 0 - äîáàâèëñÿ, 1 - óáðàëñÿ ýëåìåíò
Item: TSnapItem;
end;
type
TSnapShot=class
// Îáùèå
Logging: boolean;
LogFileName: string;
// Îïîðíûé ñíèìîê
ControlSnapTime: TDateTime;
ControlSnapCount: integer;
ControlSnap: array of TSnapItem;
// Äèôôåðåíöèàëüíûé ñíèìîê
DiffSnapCount: integer;
DiffSnap: array of TDiffSnapItem;
// ïðîöåäóðû
constructor Create;
destructor Destroy; override;
procedure Clear;
procedure CreateControlSnap;
function LogInit(Continue: boolean): boolean; // 0 - rewrite, 1 - reset
procedure LogClose;
private
LogFile: text;
LastSnapCount: integer;
LastSnap: array of TSnapItem;
procedure CreateSnap;
procedure LastSnapAddItem(Item: TSnapItem);
procedure WriteControlSnapToLog;
end;
implementation
constructor TSnapShot.Create;
begin
// inherited Create;
end;
destructor TSnapShot.Destroy;
begin
inherited Destroy;
end;
procedure TSnapShot.Clear;
begin
SetLength(ControlSnap,0);
ControlSnapCount:=0;
SetLength(DiffSnap,0);
DiffSnapCount:=0;
SetLength(LastSnap,0);
LastSnapCount:=0;
end;
procedure TSnapShot.CreateControlSnap;
var i: integer;
begin
Clear;
ControlSnapTime:=now;
CreateSnap;
ControlSnapCount:=LastSnapCount;
SetLength(ControlSnap,ControlSnapCount);
for i:=0 to LastSnapCount-1 do ControlSnap[i]:=LastSnap[i];
if Logging then WriteControlSnapToLog;
end;
function TSnapShot.LogInit;
begin
Logging:=true;
if LogFileName<>"" then
{$I-}
try
assignfile(LogFile,LogFileName);
if Continue then begin
Append(LogFile);
end else begin
Rewrite(LogFile);
end;
except
Logging:=false;
end;
{$I+}
result:=Logging;
end;
procedure TSnapShot.LogClose;
begin
{$I-}
closeFile(LogFile);
{$I+}
end;
// private
procedure TSnapShot.CreateSnap;
var
hSnap: THandle;
Data: TProcessEntry32;
item: TSnapItem;
c:integer;
begin
hSnap:=CreateToolHelp32SnapShot(TH32CS_SNAPALL,0);
if Process32First(hSnap,Data) then begin
Item.ProcessID:=Data.th32ProcessID;
Item.Name:=string(Data.szExeFile);
LastSnapAddItem(Item);
while Process32Next(hSnap,Data) do begin
Item.ProcessID:=Data.th32ProcessID;
Item.Name:=string(Data.szExeFile);
LastSnapAddItem(Item);
end;
end else begin
// îáðàáîòêà îøèáêè
Item.ProcessID:=0;
Item.Name:="SnapShot error";
LastSnapAddItem(Item);
end;
end;
procedure TSnapShot.LastSnapAddItem;
begin
inc(LastSnapCount);
setLength(LastSnap,LastSnapCount);
LastSnap[LastSnapCount-1]:=Item;
end;
procedure TSnapShot.WriteControlSnapToLog;
var
s: string;
i: integer;
begin
s:=DateTimeToStr(ControlSnapTime);
{$I-}
writeln(logFile,s);
for i:=0 to ControlSnapCount-1 do begin
s:=ControlSnap[i].Name;
writeln(s);
{$I+}
end;
end;
end.
В результате выполнения получаю лог-файл с датой и временем. По идее все вроде должно работать. но получаю ошибку.
Помогите, плиз
← →
Anatoly Podgoretsky © (2006-01-05 21:22) [1]"но получаю ошибку." - точно?
← →
Gero © (2006-01-05 21:24) [2]Какую ошибку?
← →
Almaz © (2006-01-06 06:31) [3]Так, сразу в глаза бросилось:
procedure TSnapShot.WriteControlSnapToLog;
var
s: string;
i: integer;
begin
s:=DateTimeToStr(ControlSnapTime);
{$I-}
writeln(logFile,s);
for i:=0 to ControlSnapCount-1 do begin
s:=ControlSnap[i].Name;
writeln(s);
{$I+}
end;
end;
Забылиlogfile
вwriteln
. А вообще, если хотите помощи, то неплохо было бы хотя бы написать какую ошибку получаете.
Удачи.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c