Files
SignauxComplexes/UnitDebug.pas
f1iwq2 107aa92290 V1.3
2020-02-21 17:02:10 +01:00

219 lines
5.2 KiB
ObjectPascal

unit UnitDebug;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls , ComCtrls;
type
TFormDebug = class(TForm)
EditNivDebug: TEdit;
Label1: TLabel;
MemoEvtDet: TMemo;
Label2: TLabel;
SaveDialog: TSaveDialog;
ButtonEcrLog: TButton;
Label3: TLabel;
MemoDebug: TMemo;
CheckAffSig: TCheckBox;
ButtonRazTampon: TButton;
ButtonCherche: TButton;
MemoDet: TMemo;
ButtonAffEvtChrono: TButton;
CheckAffAffecTrains: TCheckBox;
CheckBoxTraceLIste: TCheckBox;
CheckTrame: TCheckBox;
ButtonCop: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure ButtonEcrLogClick(Sender: TObject);
procedure EditNivDebugKeyPress(Sender: TObject; var Key: Char);
procedure CheckAffSigClick(Sender: TObject);
procedure ButtonRazTamponClick(Sender: TObject);
procedure ButtonChercheClick(Sender: TObject);
procedure ButtonAffEvtChronoClick(Sender: TObject);
procedure CheckAffAffecTrainsClick(Sender: TObject);
procedure CheckBoxTraceLIsteClick(Sender: TObject);
procedure CheckTrameClick(Sender: TObject);
procedure ButtonCopClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
Const Max_Event_det_tick = 10000;
var
FormDebug: TFormDebug;
NivDebug : integer;
AffSignal,AffAffect : boolean;
N_event_det : integer; // index du dernier évènement (de 1 à 20)
event_det : array[1..20] of integer;
// tick 1/10s,détecteur
N_Event_tick : integer ; // dernier index
// tableau des évènements détecteurs
event_det_tick : array[0..Max_Event_det_tick] of
record
tick : longint;
detecteur : array[1..1100] of integer; // état du détecteur [...]
train : integer ;
suivant : integer ; // d'ou vient le train
traite : boolean; // traité lors de a recherche d'une route
end;
procedure AfficheDebug(s : string;lacouleur : TColor);
implementation
uses UnitPrinc;
{$R *.dfm}
procedure AfficheDebug(s : string;lacouleur : TColor);
begin
FormDebug.MemoDebug.Lines.add(s);
end;
procedure TFormDebug.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Action := TCloseAction.caNone;
//DebugOuv:=False;
//NivDebug:=0;
end;
procedure TFormDebug.FormCreate(Sender: TObject);
var s: string;
begin
EditNivDebug.Text:='0';
s:='Cette fenêtre permet d''afficher des informations sur le ';
s:=s+'comportement du programme. Positionner le niveau de 1 à 3 pour';
s:=s+' afficher des informations plus ou moins détaillées.';
Label3.caption:=s;
MemoDebug.color:=$33;
MemoDebug.clear;
end;
procedure TFormDebug.ButtonEcrLogClick(Sender: TObject);
var s : string;
i : integer;
fte : textFile;
begin
s:=GetCurrentDir;
SaveDialog.InitialDir:=s;
SaveDialog.DefaultExt:='txt';
SaveDialog.Filter:='Fichiers texte (*.txt)|*.txt|Tous fichiers (*.*)|*.*';
if SaveDialog.Execute then
begin
s:=SaveDialog.FileName;
assignFile(fte,s);
rewrite(fte);
writeln(fte,s);
with MemoDebug do
for i:=1 to Lines.Count do
begin
writeln(fte,Lines[i]);
end;
closefile(fte);
end;
end;
procedure TFormDebug.EditNivDebugKeyPress(Sender: TObject; var Key: Char);
var i,e : integer;
begin
if ord(Key) = VK_RETURN then
begin
Key := #0; // prevent beeping
val(EditNivDebug.text,i,e);
if e=0 then
begin
if (i>=0) and (i<=3) then NivDebug:=i
else EditNivDebug.text:='3';
end
else EditNivDebug.text:='0';
end;
MemoDebug.Lines.add('Niveau='+intToSTR(NivDebug));
end;
procedure TFormDebug.CheckAffSigClick(Sender: TObject);
begin
AffSignal:=checkAffSig.Checked;
end;
procedure TFormDebug.ButtonRazTamponClick(Sender: TObject);
begin
N_event_det:=0;
Event_det[1]:=0;
MemoEvtDet.Clear;
memoEvtDet.Refresh;
end;
procedure TFormDebug.ButtonChercheClick(Sender: TObject);
var i : integer;
trouve : boolean;
begin
with MemoDebug do
begin
i:=0;
repeat
trouve:=pos('erreur',Lines[i])<>0;
inc(i);
until (i>=Lines.Count) or trouve;
if trouve then
begin
Lines.Add('trouvé en '+intToSTR(i));
SelStart:=Perform(EM_LINEINDEX,5,0);
perform(EM_SCROLLCARET,0,0);
setfocus;
end;
end;
end;
procedure TFormDebug.ButtonAffEvtChronoClick(Sender: TObject);
var i,j,etat : integer;
s : string;
trouve : boolean;
begin
for i:=1 to N_Event_tick do
begin
s:=IntToSTR(i)+' Tick='+IntToSTR(event_det_tick[i].tick)+' Det=';
trouve:=false;
for j:=1 to 1100 do
begin
etat:=event_det_tick[i].detecteur[j];
if etat<>-1 then begin s:=s+IntToSTR(j)+'='+intToSTR(etat);trouve:=true;end;
end;
if trouve then AfficheDebug(s,clyellow);
end;
end;
procedure TFormDebug.CheckAffAffecTrainsClick(Sender: TObject);
begin
AffAffect:=CheckAffAffecTrains.checked;
end;
procedure TFormDebug.CheckBoxTraceLIsteClick(Sender: TObject);
begin
TraceListe:=CheckBoxTraceLIste.checked;
end;
procedure TFormDebug.CheckTrameClick(Sender: TObject);
begin
trace:=CheckTrame.Checked;
end;
procedure TFormDebug.ButtonCopClick(Sender: TObject);
var i : integer;
begin
MemoDebug.Lines:=Formprinc.ListBox1.Items
end;
end.