?? 列表9.10.txt
字號:
【列表9.10】SysLog的程序代碼。
unit SysLogMain;
interface
uses
SysUtils, Types, Classes, Variants, QGraphics, QControls, QForms, QDialogs,
QStdCtrls, Libc;
type
TSysLogMainForm = class(TForm)
ExitBtn: TButton;
MonitorGroup: TGroupBoX;
Memo: TMemo;
NumCharsCombo: TComboBOX;
DisplayBtn: TButton;
Label1: TLabel;
Label2: TLabel;
EditGroup: TGroupBox;
EnterBtn: TButton;
LogEdit: TEdit;
LogInfoRB: TRadioButton;
DebugInfoRB: TRadioButton;
MsgLogRB: TRadioButton;
DbgLogRB: TRadioButton;
procedure ExitBtnClick(Sender: TObject);
procedure DisplayBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NumCharsComboClick(Sender: TObject)
procedure EnterBtnClick(Sender: TObject);
procedure MsgLogRBClick(Sender: TObject);
procedure DbgLogRBClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
SYS_MSGS_FNAME = '/var/log/messages';
SYS_DEBUG_FNAME = '/var/log/debug';
var
SysLogMainForm: TSysLogMainForm;
SysMsgFileOK : Boolean;
CharsToRead : Integer;
AppName : String;
implementation
{$R *.xfm}
function CanReadSysMsgsFile : Boolean;
var
FD : Integer;
begin
FD := open(SYS_MSGS_FNAME, O_RDONLY);
Result := FD <> -1;
__close(FD);
end;
procedure TSysLogMainForm. ExitBtnClick(Sender: TObject);
begin
Close;
end;
procedure TSysLogMainForm. DisplayBtnClick(Sender: TObject);
var
FD : Integer;
Buf : array[0..32768] of Char;
SR : TSearchRec;
FSize : Longint;
s : String;
MaxChars : Integer;
begin
Memo. Lines.Clear;
if MsgLogRB.Checked
then begin
FD := open(SYS_MSGS_FNAME, O_RDONLY);
if FD = -1
then begin
ShowMessage('Can't open system message log.');
Exit;
end;
FindFirst(SYS MSGS_FNAME, 0, SR);
end
else begin
FD := open(SYS_DEBUG_FNAME, O_RDONLY);
if FD = -1
then begin
ShowMessage('Can't open system debug log.');
Exit;
end;
FindFirst(SYS_DEBUG_FNAME, 0, SR);
end;
FSize := SR.Size;
FindClose(SR);
MaxChars := CharsToRead;
if MaxChars > FSize then MaxChars := FSize - 1;
if MaxChars > SizeOf(BUF) then MaxChars := sizeOf(BUF) - 1;
lseek(FD,FSize - MaxChars, SEEK_SET);
__read(FD, Buf, MaxChars);
__close(FD);
Buf[MaxChars] := chr(0);
s := StrPas(Buf);
Memo. Lines.Add(s);
end;
procedure TSysLogMainForm. FormCreate(Sender: TObject);
begin
AppName := ExtractFileName(Application. ExeName);
CharsToRead :=
StrToint(NumCharsCombo. Items[NumCharsCombo.ItemIndex]);
SysMsgFileOK := CanReadSysMsgsFile;
if not SysMsgFileOK
then begin
Memo. Enabled := False;
DisplayBtn. Enabled := False;
NumCharsCombo. Enabled := False;
MsgLogRB.Enabled := False;
DbgLogRb. Enabled := False;
end;
end;
procedure TSysLogMainForm. NumCharsComboClick(Sender: TObjec
begin
CharsToRead :=
StrToint(NumCharsCombo. Items[NumCharsCombo.ItemIndex]);
end;
procedure TSysLogMainForm. EnterBtnClick(Sender: TObject);
var
s : String;
begin
s := LogEdit.Text;
openlog(PChar(AppName), LOG_PID, LOG_USER);
if LogInfoRB.Checked
then syslog(LOG_INFO, PChar(s))
else syslog(LOG_DEBUG, PChar(s));
closelog;
ShowMessage('Message written to system log.');
LogEdit.Text := '';
end;
procedure TSysLogMainForm. MsgLogRBClick(Sender: TObject);
begin
Memo. Lines.Clear;
end;
procedure TSysLogMainForm. DbgLogRBClick(Sender: TObject);
begin
Memo. Lines.Clear;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -