📄 logdatamain.pas
字号:
unit LogDataMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
NMUDP, StdCtrls, IniFiles, ExtCtrls;
const
LogBaseDir: string = 'D:\';
type
TFrmLogData = class(TForm)
NMUDP: TNMUDP;
Label3: TLabel;
Label4: TLabel;
Timer1: TTimer;
procedure NMUDPDataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
LogList: TStringList;
public
procedure WriteLogs;
end;
var
FrmLogData: TFrmLogData;
implementation
{$R *.DFM}
procedure TFrmLogData.FormCreate(Sender: TObject);
var
ini: TIniFile;
begin
LogList := TStringList.Create;
ini := TIniFile.Create ('.\logdata.ini');
if ini <> nil then begin
LogBaseDir := ini.ReadString ('setup', 'basedir', LogBaseDir);
FrmLogData.Caption := FrmLogData.Caption + ' (' + ini.ReadString ('setup', 'caption', '') + ')';
NMUDP.LocalPort := ini.ReadInteger ('setup', 'port', 10000);
ini.Free;
end;
end;
procedure TFrmLogData.FormDestroy(Sender: TObject);
begin
LogList.Free;
end;
procedure TFrmLogData.NMUDPDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
MyStream: TMemoryStream;
TmpStr: String;
begin
MyStream := TMemoryStream.Create;
try
NMUDP.ReadStream (MyStream);
SetLength (TmpStr, NumberBytes);
MyStream.Read (TmpStr[1], NumberBytes);
//Memo1.Lines.Add(FromIP+': '+TmpStr);
LogList.Add (TmpStr);
finally
MyStream.Free;
end;
end;
procedure TFrmLogData.WriteLogs;
function IntTo_Str (val: integer): string;
begin
if val < 10 then Result := '0' + IntToStr(val)
else Result := IntToStr(val);
end;
var
ayear, amon, aday, ahour, amin, asec, amsec: word;
dirname, flname: string;
dir256: array[0..255] of char;
f: TextFile;
i: integer;
begin
if LogList.Count = 0 then exit;
DecodeDate (Date, ayear, amon, aday);
DecodeTime (Time, ahour, amin, asec, amsec);
dirname := LogBaseDir + IntToStr(ayear) + '-' + IntTo_Str(amon) + '-' + IntTo_Str(aday);
if not FileExists (dirname) then begin
StrPCopy (dir256, dirname);
CreateDirectory (@dir256, nil);
end;
flname := dirname + '\Log-' + IntTo_Str(ahour) + 'h' + IntTo_Str(amin div 10 * 10) + 'm.txt';
Label4.Caption := flname;
AssignFile (f, flname);
if not FileExists (flname) then
Rewrite (f)
else Append (f);
for i:=0 to LogList.Count-1 do begin
WriteLn (f, LogList[i] + ''#9 + FormatDateTime('yyyy-mm-dd hh:mm:ss', now));
end;
LogList.Clear;
CloseFile (f);
end;
procedure TFrmLogData.Timer1Timer(Sender: TObject);
begin
WriteLogs;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -