Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Помогите найти ошибку, плиз   Найти похожие ветки 

 
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
   // &#238;&#225;&#240;&#224;&#225;&#238;&#242;&#234;&#224; &#238;&#248;&#232;&#225;&#234;&#232;
   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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
8-1123460022
Valera
2005-08-08 04:13
2006.01.22
Проиграть AudioCD с помощью DSPack


3-1132777245
Serg1981
2005-11-23 23:20
2006.01.22
Подключение к SQL Server


2-1136475809
mozgan
2006-01-05 18:43
2006.01.22
Работа с таймером


1-1135067057
Stanislav
2005-12-20 11:24
2006.01.22
Перемещение объекта в TScrollBox


14-1135341979
IAmDanil
2005-12-23 15:46
2006.01.22
Input-Output