Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
   // &#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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.04 c
6-1128105684
heady
2005-09-30 22:41
2006.01.22
IdHTTP1 (Indy компонент) отловить ошибку


4-1131655336
Ganj
2005-11-10 23:42
2006.01.22
Отключение пользователей


14-1135398238
Дремучий
2005-12-24 07:23
2006.01.22
А надо ли делать автоматическое Windows Update?


8-1123596947
alexandr-m
2005-08-09 18:15
2006.01.22
Как быстро загрузить и отобразить JPEG ?


11-1117688514
azsd
2005-06-02 09:01
2006.01.22
KOL+FPC 2.0 return 39 errors in converted kol.pas





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский