Доброго времени суток. Есть вот такой код:
| Код | unit SysPars; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RegExpr, Grids; type TForm1 = class(TForm) OpenDialog1: TOpenDialog; Edit1: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Memo1: TMemo; StringGrid1: TStringGrid; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} //Открыть файл procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then Edit1.Text:=OpenDialog1.FileName; end; //Очистить Memo procedure TForm1.Button3Click(Sender: TObject); begin Memo1.Text:=''; end; procedure TForm1.Button2Click(Sender: TObject); var logf:TextFile; S, protok,fprotok,lokip,flokip,vip,fvip:String; RegEx,RegEx1,RegEx2:TRegExpr; ReadCount : Integer; RowNum : Integer; RowLength : Integer; Begin if not FileExists(Edit1.Text) then begin ShowMessage('Файл не найден'); Exit; end; AssignFile(logf,Edit1.Text); Reset (logf); RegEx:=TregExpr.Create; RegEx1:=TregExpr.Create; RegEx2:=TregExpr.Create; RowLength := StringGrid1.ColCount - StringGrid1.FixedCols; ReadCount := 1; while Not EOF(logf) do begin ReadLn(logf,S); RegEx.Expression:='\s*?ipproto=*?(.*?)\s'; if RegEx.Exec(S) then protok:=RegEx.Match[1]; fprotok:=Copy(protok,Pos('=',protok)+1,length(protok)); RegEx1.Expression:='\s*?srcip=*?(.*?)\s'; if RegEx1.Exec(S) then flokip:=RegEx1.Match[1]; lokip:= Copy(flokip,Pos('=',flokip)+1,length(flokip)); RegEx2.Expression:='\s*?destip=*?(.*?)\s'; if RegEx2.Exec(S) then fvip:=RegEx2.Match[1]; vip:= Copy(fvip,Pos('=',fvip)+1,length(fvip)); Memo1.Lines.Add('Протокол: '+fprotok +' IPв: ' + lokip+'IPвнеш:' + vip); Inc(ReadCount); RowNum := StringGrid1.FixedRows + (ReadCount - 1) div RowLength; if RowNum > Pred(StringGrid1.RowCount) then begin StringGrid1.RowCount := StringGrid1.RowCount + 1; end; StringGrid1.Cells[1,RowNum]:=fprotok; end; RegEx.Free; RegEx1.Free; RegEx2.Free; CloseFile(logf); ShowMessage('Конец'); End; end.
|
На форме 3 кнопки, 1 едит, Мемо, и StringGrid. При выполнении программы данные в мемо есть, а в StringGreed нет, не могу понять почему. |