V3.3
This commit is contained in:
BIN
Binary file not shown.
@@ -9,7 +9,8 @@ uses
|
||||
UnitSimule in 'UnitSimule.pas' {FormSimulation},
|
||||
UnitTCO in 'UnitTCO.pas' {FormTCO},
|
||||
UnitConfig in 'UnitConfig.pas' {FormConfig},
|
||||
UnitConfigTCO in 'UnitConfigTCO.pas' {FormConfigTCO};
|
||||
UnitConfigTCO in 'UnitConfigTCO.pas' {FormConfigTCO},
|
||||
UnitSR in '..\macro fichier\UnitSR.pas' {FormSR};
|
||||
|
||||
{$R *.res}
|
||||
|
||||
@@ -22,5 +23,6 @@ begin
|
||||
Application.CreateForm(TFormConfig, FormConfig);
|
||||
Application.CreateForm(TFormConfigTCO, FormConfigTCO);
|
||||
Application.CreateForm(TFormVersion, FormVersion);
|
||||
Application.CreateForm(TFormSR, FormSR);
|
||||
Application.Run;
|
||||
end.
|
||||
|
||||
Binary file not shown.
+44
-20
@@ -1,6 +1,6 @@
|
||||
object FormConfig: TFormConfig
|
||||
Left = 291
|
||||
Top = 218
|
||||
Left = 268
|
||||
Top = 207
|
||||
Hint =
|
||||
'Modifie les fichiers de configuration selon les s'#233'lections chois' +
|
||||
'ies'
|
||||
@@ -1748,11 +1748,11 @@ object FormConfig: TFormConfig
|
||||
object Label20: TLabel
|
||||
Left = 648
|
||||
Top = 312
|
||||
Width = 208
|
||||
Height = 39
|
||||
Width = 170
|
||||
Height = 52
|
||||
Caption =
|
||||
'Tous les param'#232'tres doivent '#234'tre valid'#233's en appuyant sur la touc' +
|
||||
'he ENTREE apr'#232's leur introduction/modification'
|
||||
'Les param'#232'tres en vert doivent '#234'tre valid'#233's en appuyant sur la t' +
|
||||
'ouche ENTREE apr'#232's leur introduction/modification'
|
||||
WordWrap = True
|
||||
end
|
||||
object ButtonAppliquerEtFermer: TButton
|
||||
@@ -2486,7 +2486,7 @@ object FormConfig: TFormConfig
|
||||
Width = 33
|
||||
Height = 21
|
||||
TabOrder = 2
|
||||
OnKeyPress = EditAdrAigKeyPress
|
||||
OnChange = EditAdrAigChange
|
||||
end
|
||||
object ComboBoxAig: TComboBox
|
||||
Left = 8
|
||||
@@ -2617,7 +2617,7 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
OnKeyPress = Edit_HGKeyPress
|
||||
OnChange = Edit_HGChange
|
||||
end
|
||||
object EditPointe_BG: TEdit
|
||||
Left = 24
|
||||
@@ -2627,13 +2627,14 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 1
|
||||
OnKeyPress = EditPointe_BGKeyPress
|
||||
OnChange = EditPointe_BGChange
|
||||
end
|
||||
object EditP1: TEdit
|
||||
Left = 88
|
||||
Top = 28
|
||||
Width = 33
|
||||
Height = 21
|
||||
Color = clLime
|
||||
TabOrder = 2
|
||||
OnKeyPress = EditP1KeyPress
|
||||
end
|
||||
@@ -2642,6 +2643,7 @@ object FormConfig: TFormConfig
|
||||
Top = 48
|
||||
Width = 33
|
||||
Height = 21
|
||||
Color = clLime
|
||||
TabOrder = 3
|
||||
OnKeyPress = EditP2KeyPress
|
||||
end
|
||||
@@ -2650,6 +2652,7 @@ object FormConfig: TFormConfig
|
||||
Top = 22
|
||||
Width = 33
|
||||
Height = 21
|
||||
Color = clLime
|
||||
TabOrder = 4
|
||||
OnKeyPress = EditP3KeyPress
|
||||
end
|
||||
@@ -2658,6 +2661,7 @@ object FormConfig: TFormConfig
|
||||
Top = 44
|
||||
Width = 33
|
||||
Height = 21
|
||||
Color = clLime
|
||||
TabOrder = 5
|
||||
OnKeyPress = EditP4KeyPress
|
||||
end
|
||||
@@ -2669,7 +2673,7 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 6
|
||||
OnKeyPress = EditDevie_HDKeyPress
|
||||
OnChange = EditDevie_HDChange
|
||||
end
|
||||
object EditDroit_BD: TEdit
|
||||
Left = 232
|
||||
@@ -2679,13 +2683,14 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 7
|
||||
OnKeyPress = EditDroit_BDKeyPress
|
||||
OnChange = EditDroit_BDChange
|
||||
end
|
||||
object EditDevieS2: TEdit
|
||||
Left = 232
|
||||
Top = 68
|
||||
Width = 33
|
||||
Height = 21
|
||||
Color = clLime
|
||||
TabOrder = 8
|
||||
OnKeyPress = EditDevieS2KeyPress
|
||||
end
|
||||
@@ -2720,7 +2725,7 @@ object FormConfig: TFormConfig
|
||||
Height = 21
|
||||
TabOrder = 6
|
||||
Visible = False
|
||||
OnKeyPress = EditAigTripleKeyPress
|
||||
OnChange = EditAigTripleChange
|
||||
end
|
||||
object GroupBox21: TGroupBox
|
||||
Left = 8
|
||||
@@ -2749,7 +2754,7 @@ object FormConfig: TFormConfig
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 0
|
||||
OnKeyPress = EditTempo10KeyPress
|
||||
OnChange = EditTempo10Change
|
||||
end
|
||||
object ComboBoxDD: TComboBox
|
||||
Left = 160
|
||||
@@ -3046,7 +3051,7 @@ object FormConfig: TFormConfig
|
||||
Top = 48
|
||||
Width = 129
|
||||
Height = 21
|
||||
ItemHeight = 0
|
||||
ItemHeight = 13
|
||||
TabOrder = 1
|
||||
OnChange = ComboBoxDecChange
|
||||
end
|
||||
@@ -3056,6 +3061,7 @@ object FormConfig: TFormConfig
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 3
|
||||
OnChange = EditDet1Change
|
||||
OnKeyPress = EditDet1KeyPress
|
||||
end
|
||||
object EditSuiv1: TEdit
|
||||
@@ -3066,6 +3072,7 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 4
|
||||
OnChange = EditSuiv1Change
|
||||
OnKeyPress = EditSuiv1KeyPress
|
||||
end
|
||||
object EditDet2: TEdit
|
||||
@@ -3074,6 +3081,7 @@ object FormConfig: TFormConfig
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 5
|
||||
OnChange = EditDet2Change
|
||||
OnKeyPress = EditDet2KeyPress
|
||||
end
|
||||
object EditSuiv2: TEdit
|
||||
@@ -3084,6 +3092,7 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 6
|
||||
OnChange = EditSuiv2Change
|
||||
OnKeyPress = EditSuiv2KeyPress
|
||||
end
|
||||
object EditDet3: TEdit
|
||||
@@ -3092,6 +3101,7 @@ object FormConfig: TFormConfig
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 7
|
||||
OnChange = EditDet3Change
|
||||
OnKeyPress = EditDet3KeyPress
|
||||
end
|
||||
object EditSuiv3: TEdit
|
||||
@@ -3102,6 +3112,7 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 8
|
||||
OnChange = EditSuiv3Change
|
||||
OnKeyPress = EditSuiv3KeyPress
|
||||
end
|
||||
object EditDet4: TEdit
|
||||
@@ -3110,6 +3121,7 @@ object FormConfig: TFormConfig
|
||||
Width = 41
|
||||
Height = 21
|
||||
TabOrder = 9
|
||||
OnChange = EditDet4Change
|
||||
OnKeyPress = EditDet4KeyPress
|
||||
end
|
||||
object EditSuiv4: TEdit
|
||||
@@ -3120,6 +3132,7 @@ object FormConfig: TFormConfig
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 10
|
||||
OnChange = EditSuiv4Change
|
||||
OnKeyPress = EditSuiv4KeyPress
|
||||
end
|
||||
object CheckVerrouCarre: TCheckBox
|
||||
@@ -3143,6 +3156,7 @@ object FormConfig: TFormConfig
|
||||
Height = 21
|
||||
TabOrder = 0
|
||||
Text = ' '
|
||||
OnChange = EditAdrSigChange
|
||||
OnKeyPress = EditAdrSigKeyPress
|
||||
end
|
||||
object ComboBoxAsp: TComboBox
|
||||
@@ -3173,11 +3187,12 @@ object FormConfig: TFormConfig
|
||||
Height = 21
|
||||
TabOrder = 14
|
||||
Visible = False
|
||||
OnChange = EditSpecUniChange
|
||||
OnKeyPress = EditSpecUniKeyPress
|
||||
end
|
||||
object Buttonrestaure: TButton
|
||||
Left = 8
|
||||
Top = 216
|
||||
Top = 200
|
||||
Width = 75
|
||||
Height = 25
|
||||
Hint = 'Restaure la configuration du feu d'#39'avant sa modification'
|
||||
@@ -3196,6 +3211,15 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 15
|
||||
OnClick = CheckBoxFBClick
|
||||
end
|
||||
object ButtonConfigSR: TButton
|
||||
Left = 8
|
||||
Top = 232
|
||||
Width = 75
|
||||
Height = 25
|
||||
Caption = 'Configuration'
|
||||
TabOrder = 16
|
||||
OnClick = ButtonConfigSRClick
|
||||
end
|
||||
end
|
||||
object RichSig: TRichEdit
|
||||
Left = 0
|
||||
@@ -3275,8 +3299,8 @@ object FormConfig: TFormConfig
|
||||
WordWrap = True
|
||||
end
|
||||
object GroupBoxPN: TGroupBox
|
||||
Left = 16
|
||||
Top = 16
|
||||
Left = 8
|
||||
Top = 24
|
||||
Width = 225
|
||||
Height = 289
|
||||
Caption = 'Actionneurs gestion passage '#224' niveau'
|
||||
@@ -3444,7 +3468,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object GroupBoxRadio: TGroupBox
|
||||
Left = 16
|
||||
Top = 72
|
||||
Top = 40
|
||||
Width = 225
|
||||
Height = 65
|
||||
Caption = 'Type d'#39'actionneur '
|
||||
@@ -3469,8 +3493,8 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
end
|
||||
object GroupBoxAct: TGroupBox
|
||||
Left = 48
|
||||
Top = 176
|
||||
Left = 40
|
||||
Top = 248
|
||||
Width = 225
|
||||
Height = 225
|
||||
Caption = 'Actionneur fonction de locomotive '
|
||||
|
||||
+288
-203
@@ -230,6 +230,7 @@ type
|
||||
EditL: TEdit;
|
||||
CheckBoxFB: TCheckBox;
|
||||
Label20: TLabel;
|
||||
ButtonConfigSR: TButton;
|
||||
procedure ButtonAppliquerEtFermerClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
@@ -293,19 +294,12 @@ type
|
||||
procedure CheckBoxFBClick(Sender: TObject);
|
||||
procedure Button2Click(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure EditAdrAigKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditAdrSigKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditP3KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditP4KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditAigTripleKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure Edit_HGKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditPointe_BGKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditP1KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditP2KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditDevie_HDKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditDroit_BDKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditDevieS2KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditTempo10KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditDet1KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditSuiv1KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditDet2KeyPress(Sender: TObject; var Key: Char);
|
||||
@@ -315,6 +309,24 @@ type
|
||||
procedure EditDet4KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditSuiv4KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure EditSpecUniKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure ButtonConfigSRClick(Sender: TObject);
|
||||
procedure EditDet1Change(Sender: TObject);
|
||||
procedure EditSuiv1Change(Sender: TObject);
|
||||
procedure EditAdrSigChange(Sender: TObject);
|
||||
procedure EditDet2Change(Sender: TObject);
|
||||
procedure EditSuiv2Change(Sender: TObject);
|
||||
procedure EditDet3Change(Sender: TObject);
|
||||
procedure EditSuiv3Change(Sender: TObject);
|
||||
procedure EditDet4Change(Sender: TObject);
|
||||
procedure EditSuiv4Change(Sender: TObject);
|
||||
procedure EditSpecUniChange(Sender: TObject);
|
||||
procedure EditAdrAigChange(Sender: TObject);
|
||||
procedure EditAigTripleChange(Sender: TObject);
|
||||
procedure EditPointe_BGChange(Sender: TObject);
|
||||
procedure EditDroit_BDChange(Sender: TObject);
|
||||
procedure EditDevie_HDChange(Sender: TObject);
|
||||
procedure EditTempo10Change(Sender: TObject);
|
||||
procedure Edit_HGChange(Sender: TObject);
|
||||
private
|
||||
{ Déclarations privées }
|
||||
public
|
||||
@@ -368,10 +380,11 @@ Procedure aff_champs_sig_feux(index : integer);
|
||||
procedure decode_ligne_feux(chaine_signal : string;i : integer);
|
||||
function verif_coherence : boolean;
|
||||
function compile_branche(s : string;i : integer) : boolean;
|
||||
function encode_sig_feux(i : integer): string;
|
||||
|
||||
implementation
|
||||
|
||||
uses UnitDebug, UnitTCO;
|
||||
uses UnitDebug, UnitTCO, UnitSR;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
@@ -572,7 +585,7 @@ begin
|
||||
encode_init_aig:=s;
|
||||
end;
|
||||
|
||||
// transforme l'aiguillage du tableau aiguillage en texte
|
||||
// transforme l'aiguillage de la base de données aiguillage en texte
|
||||
function encode_aig(index : integer): string;
|
||||
var s : string;
|
||||
c : char;
|
||||
@@ -646,103 +659,6 @@ begin
|
||||
encode_aig:=s;
|
||||
end;
|
||||
|
||||
// transforme l'aiguillage des champs graphiques en texte
|
||||
function encode_aig_gfx : string;
|
||||
var s,ss : string;
|
||||
c : char;
|
||||
tjd,tjs,tri : boolean;
|
||||
modele,erreur,i : integer;
|
||||
begin
|
||||
val(formconfig.EditAdrAig.text,i,erreur);
|
||||
s:=intToSTR(i);
|
||||
modele:=Formconfig.comboBoxAig.ItemIndex;
|
||||
tjd:=modele=1;
|
||||
tjs:=modele=2;
|
||||
tri:=modele=3;
|
||||
|
||||
if tjd then s:=s+'TJD';
|
||||
if tjs then s:=s+'TJS';
|
||||
if tri then begin s:=s+'TRI,';val(formconfig.editAigTriple.text,i,erreur);s:=s+intToSTR(i);end;
|
||||
|
||||
s:=s+',';
|
||||
if not(tjd) then
|
||||
with formconfig do
|
||||
begin
|
||||
// P
|
||||
s:=s+'P';
|
||||
ss:=EditPointe_BG.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
// D
|
||||
s:=s+',D';
|
||||
ss:=EditDroit_BD.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
// S
|
||||
s:=s+',S';
|
||||
ss:=EditDevie_HD.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
|
||||
// S2 aiguillage triple
|
||||
if tri then
|
||||
begin
|
||||
s:=s+',S2-';
|
||||
ss:=EditDevieS2.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
end;
|
||||
|
||||
// vitesse de franchissement
|
||||
if radioButtonSans.Checked then s:=s+',V0';
|
||||
if radioButton30kmh.Checked then s:=s+',V30';
|
||||
if radioButton60kmh.Checked then s:=s+',V60';
|
||||
if checkinverse.Checked then s:=s+',I1' else s:=s+',I0';
|
||||
end
|
||||
|
||||
else
|
||||
// tjd
|
||||
begin
|
||||
with formconfig do
|
||||
begin
|
||||
s:=s+'D(';
|
||||
ss:=Edit_HG.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
|
||||
s:=s+',';
|
||||
ss:=EditP1.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
s:=s+'),';
|
||||
|
||||
s:=s+',S(';
|
||||
ss:=EditPointe_BG.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
|
||||
s:=s+',';
|
||||
ss:=EditP2.Text;
|
||||
val(ss,i,erreur);s:=s+intToSTR(i);
|
||||
if erreur<>0 then c:=ss[erreur] ;
|
||||
if (c<>'Z') and (c<>#0) then s:=s+c;
|
||||
s:=s+'),';
|
||||
|
||||
s:=s+'I';
|
||||
if checkInverse.Checked then s:=s+'1' else s:=s+'0';
|
||||
|
||||
end;
|
||||
end;
|
||||
encode_aig_gfx:=s;
|
||||
end;
|
||||
|
||||
// renvoie un A si BT est un aiguillage
|
||||
function TypeEl_to_char(BT : TEquipement) : string;
|
||||
begin
|
||||
@@ -799,6 +715,41 @@ begin
|
||||
j:=feux[i].Adr_det4;
|
||||
if j<>0 then s:=s+','+IntToSTR(feux[i].Adr_det4)+','+TypeEl_To_char(feux[i].Btype_suiv4)+IntToSTR(feux[i].Adr_el_suiv4);
|
||||
s:=s+'),';
|
||||
|
||||
//verrouillage au carré
|
||||
if feux[i].verrouCarre then s:=s+'1' else s:=s+'0';
|
||||
// si unsemaf, paramètre supplémentaire
|
||||
if feux[i].decodeur=6 then s:=s+',U'+intToSTR(feux[i].unisemaf);
|
||||
|
||||
// conditions supplémentaires pour le carré
|
||||
for nc:=1 to 6 do
|
||||
begin
|
||||
CondCarre:=Length(feux[i].condcarre[nc]); // nombre de conditions (nombre de parenthèses ex 3 pour (A21S,A6D)(A30S,A20D)(A1D,A2S,A3D)
|
||||
dec(condcarre);
|
||||
if condCarre>0 then
|
||||
begin
|
||||
s:=s+',(';
|
||||
for k:=1 to condcarre do
|
||||
begin
|
||||
s:=s+'A'+IntToSTR(feux[i].condcarre[nc][k].Adresse)+feux[i].condcarre[nc][k].PosAig;
|
||||
if k<condcarre then s:=s+',';
|
||||
end;
|
||||
s:=s+')';
|
||||
end;
|
||||
end;
|
||||
|
||||
// déodeur SR
|
||||
if feux[i].decodeur=7 then
|
||||
begin
|
||||
s:=s+',SR(';
|
||||
for nc:=1 to 8 do
|
||||
begin
|
||||
s:=s+intToSTR(feux[i].SR[nc].sortie1)+',';
|
||||
s:=s+intToSTR(feux[i].SR[nc].sortie0);
|
||||
if nc<8 then s:=s+',' else s:=s+')';
|
||||
end;
|
||||
end;
|
||||
|
||||
end
|
||||
else
|
||||
// feux directionnels
|
||||
@@ -815,34 +766,7 @@ begin
|
||||
s:=s+')';
|
||||
end;
|
||||
end;
|
||||
|
||||
//verrouillage au carré
|
||||
if aspect<10 then
|
||||
begin
|
||||
if feux[i].verrouCarre then s:=s+'1' else s:=s+'0';
|
||||
// si unsemaf, paramètre supplémentaire
|
||||
if feux[i].decodeur=6 then s:=s+','+intToSTR(feux[i].unisemaf);
|
||||
end;
|
||||
|
||||
// conditions supplémentaires pour le carré
|
||||
if aspect<10 then
|
||||
begin
|
||||
for nc:=1 to 6 do
|
||||
begin
|
||||
CondCarre:=Length(feux[i].condcarre[nc]); // nombre de conditions (nombre de parenthèses ex 3 pour (A21S,A6D)(A30S,A20D)(A1D,A2S,A3D)
|
||||
if condCarre<>0 then dec(condcarre);
|
||||
if condCarre<>0 then
|
||||
begin
|
||||
s:=s+',(';
|
||||
for k:=1 to condcarre do
|
||||
begin
|
||||
s:=s+'A'+IntToSTR(feux[i].condcarre[nc][k].Adresse)+feux[i].condcarre[nc][k].PosAig;
|
||||
if k<condcarre then s:=s+',';
|
||||
end;
|
||||
s:=s+')';
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
encode_sig_feux:=s;
|
||||
end;
|
||||
|
||||
@@ -874,13 +798,14 @@ begin
|
||||
val(sa,l,erreur); // nombre de feux du signal directionnel
|
||||
if l>6 then
|
||||
begin
|
||||
Affiche('Ligne '+s+' 6 feux maximum pour un panneau directionnel',clred);
|
||||
Affiche('Ligne '+chaine_signal+' 6 feux maximum pour un panneau directionnel',clred);
|
||||
exit;
|
||||
end;
|
||||
feux[i].aspect:=l+10;Delete(s,1,j);
|
||||
// décodeur
|
||||
val(s,adr,erreur);
|
||||
Feux[i].decodeur:=adr;
|
||||
if (adr>NbDecodeur-1) then Affiche('Ligne '+chaine_signal+' : erreur décodeur inconnu',clred);
|
||||
j:=pos(',',s);Delete(s,1,j);
|
||||
// liste des aiguillages
|
||||
k:=1; // numéro de feu directionnel
|
||||
@@ -889,7 +814,7 @@ begin
|
||||
delete(s,1,1); // supprimer ( ou le ,
|
||||
j:=1; // Nombre de descriptions d'aiguillages dans le feu
|
||||
repeat
|
||||
if s[1]<>'A' then begin Affiche('Erreur a la ligne '+s,clred);exit;end;
|
||||
if s[1]<>'A' then begin Affiche('Erreur a la ligne '+chaine_signal,clred);exit;end;
|
||||
delete(s,1,1);
|
||||
val(s,adr,erreur); // adresse
|
||||
c:=s[erreur]; // type
|
||||
@@ -923,6 +848,7 @@ begin
|
||||
if j>1 then begin Feux[i].FeuBlanc:=(copy(s,1,j-1))='1';delete(s,1,j);end;
|
||||
j:=pos(',',s);
|
||||
val(s,Feux[i].decodeur,erreur);
|
||||
if (Feux[i].decodeur>NbDecodeur-1) then Affiche('Ligne '+chaine_signal+' : erreur décodeur inconnu',clred);
|
||||
if j<>0 then delete(s,1,j);
|
||||
feux[i].Adr_el_suiv1:=0;feux[i].Adr_el_suiv2:=0;feux[i].Adr_el_suiv3:=0;feux[i].Adr_el_suiv4:=0;
|
||||
feux[i].Btype_Suiv1:=rien;feux[i].Btype_Suiv2:=rien;feux[i].Btype_Suiv3:=rien;feux[i].Btype_Suiv4:=rien;
|
||||
@@ -930,7 +856,6 @@ begin
|
||||
// éléments optionnels des voies supplémentaires
|
||||
if j<>0 then
|
||||
begin
|
||||
//Affiche('Entrée:s='+s,clyellow);
|
||||
sa:=s;
|
||||
multiple:=s[1]='(';
|
||||
if multiple then
|
||||
@@ -944,8 +869,6 @@ begin
|
||||
val(s,adr,erreur); // extraire l'adresse
|
||||
Delete(s,1,k);
|
||||
end;
|
||||
//Affiche('Adr='+IntToSTR(adr)+' ' +intToSTR(erreur),clyellow);
|
||||
//Affiche('S avec premier champ supprimé='+s,clyellow);
|
||||
inc(j);
|
||||
if (j=1) then feux[i].Adr_det1:=adr;
|
||||
if (j=2) then feux[i].Adr_det2:=adr;
|
||||
@@ -968,17 +891,14 @@ begin
|
||||
if (j=4) then feux[i].Btype_Suiv4:=det;
|
||||
end;
|
||||
Val(s,adr,erreur);
|
||||
//Affiche('Adr='+IntToSTR(Adr),clyellow);
|
||||
if (j=1) then feux[i].Adr_el_suiv1:=Adr;
|
||||
if (j=2) then feux[i].Adr_el_suiv2:=Adr;
|
||||
if (j=3) then feux[i].Adr_el_suiv3:=Adr;
|
||||
if (j=4) then feux[i].Adr_el_suiv4:=Adr;
|
||||
delete(s,1,erreur-1);
|
||||
if s[1]=',' then delete(s,1,1);
|
||||
//Affiche('S en fin de traitement s='+s,clyellow);
|
||||
fini:=s[1]=')';
|
||||
until (fini) or (j>4);
|
||||
//if fini then Affiche('fini',clyellow);
|
||||
end;
|
||||
end;
|
||||
if (j>4) or (not(multiple)) then begin Affiche('Erreur: fichier de configuration ligne erronnée : '+chaine_signal,clred); closefile(fichier);exit;end;
|
||||
@@ -986,16 +906,20 @@ begin
|
||||
k:=pos(',',s);
|
||||
delete(s,1,k);
|
||||
//Affiche('s='+s,clyellow);
|
||||
if length(s)=0 then begin Affiche('Erreur: fichier de configuration ligne erronnée : '+chaine_signal,clred); closefile(fichier);exit;end;
|
||||
feux[i].VerrouCarre:=s[1]='1';
|
||||
delete(s,1,1);
|
||||
|
||||
if length(s)>0 then if s[1]=',' then delete(s,1,1);
|
||||
if length(s)>0 then if s[1]='U' then delete(s,1,1);
|
||||
|
||||
// si décodeur UniSemaf (6) champ supplémentaire
|
||||
if Feux[i].decodeur=6 then
|
||||
begin
|
||||
k:=pos(',',s);
|
||||
|
||||
if k=0 then begin Affiche('Ligne '+chaine_signal,clred);Affiche('Manque définition de la cible pour le décodeur UniSemaf',clred);end
|
||||
else
|
||||
begin
|
||||
Delete(S,1,k);
|
||||
Val(s,k,erreur);
|
||||
Feux[i].UniSemaf:=k;
|
||||
erreur:=verif_UniSemaf(adresse,k);
|
||||
@@ -1008,17 +932,18 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// voir si conditions supplémentaires de carré
|
||||
l:=1; // nombre de parenthèses
|
||||
repeat
|
||||
t:=pos('(',s);
|
||||
if t<>0 then
|
||||
if t=1 then
|
||||
begin
|
||||
//Affiche('Conditions supplémentaires pour le feu '+IntToSTR(adresse)+' parenthèse '+intToSTR(l),clyellow);
|
||||
k:=pos(')',s);
|
||||
sa:=copy(s,t+1,k-t-1); // contient l'intérieur des parenthèses sans les parenthèses
|
||||
//Affiche(sa,clLime);
|
||||
delete(s,1,k);//Affiche(s,clYellow);
|
||||
|
||||
// boucle dans la parenthèse
|
||||
bd:=0;
|
||||
repeat
|
||||
@@ -1033,7 +958,6 @@ begin
|
||||
if chaine[1]='A' then
|
||||
begin
|
||||
delete(chaine,1,1);
|
||||
//Affiche(chaine,ClOrange);
|
||||
val(chaine,adresse,erreur);
|
||||
feux[i].condCarre[l][bd].Adresse:=adresse;
|
||||
if erreur<>0 then feux[i].condCarre[l][bd].PosAig:=chaine[erreur] else
|
||||
@@ -1041,11 +965,31 @@ begin
|
||||
end;
|
||||
|
||||
k:=pos(',',sa);if k<>0 then delete(sa,1,k);
|
||||
//Affiche(sa,clyellow);
|
||||
until k=0;
|
||||
inc(l);
|
||||
end;
|
||||
until t=0;
|
||||
until t<>1;
|
||||
if length(s)>1 then if s[1]=',' then delete(s,1,1);
|
||||
|
||||
// champ SR
|
||||
if length(s)>2 then
|
||||
if copy(s,1,2)='SR' then
|
||||
begin
|
||||
delete(s,1,3);
|
||||
for l:=1 to 8 do
|
||||
begin
|
||||
k:=pos(',',s);
|
||||
val(s,j,erreur);
|
||||
delete(s,1,k);
|
||||
feux[i].SR[l].sortie1:=j;
|
||||
|
||||
k:=pos(',',s);
|
||||
val(s,j,erreur);
|
||||
delete(s,1,k);
|
||||
feux[i].SR[l].sortie0:=j;
|
||||
end;
|
||||
end;
|
||||
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@@ -1953,12 +1897,18 @@ begin
|
||||
EditDet3.Text:=''; EditSuiv3.Text:='';
|
||||
EditDet4.Text:=''; EditSuiv4.Text:='';
|
||||
ComboBoxDec.ItemIndex:=feux[i].decodeur;
|
||||
|
||||
if feux[i].decodeur=7 then
|
||||
ButtonConfigSR.Visible:=true else ButtonConfigSR.Visible:=false;
|
||||
|
||||
if feux[i].decodeur=6 then
|
||||
begin
|
||||
EditSpecUni.Visible:=true;LabelUni.Visible:=true;
|
||||
EditSpecUni.Text:=IntToSTR(feux[i].Unisemaf);
|
||||
end
|
||||
else begin EditSpecUni.Visible:=false;LabelUni.Visible:=false;end;
|
||||
|
||||
|
||||
d:=feux[i].aspect;
|
||||
case d of
|
||||
2 : ComboBoxAsp.ItemIndex:=0;
|
||||
@@ -2264,13 +2214,12 @@ begin
|
||||
clicliste:=false;
|
||||
end;
|
||||
|
||||
// on change la valeur de la description du champ HG pour les TJD
|
||||
procedure TFormConfig.Edit_HGKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure TFormConfig.Edit_HGChange(Sender: TObject);
|
||||
var s : string;
|
||||
adr,adraig,erreur,index : integer;
|
||||
b : char;
|
||||
begin
|
||||
if clicliste or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste then exit;
|
||||
if affevt then affiche('Evt change HG',clyellow);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
|
||||
@@ -2302,8 +2251,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
// on change la valeur de la description de la déviation de l'aiguillage
|
||||
procedure TFormConfig.EditDevie_HDKeyPress(Sender: TObject; var Key: Char);
|
||||
// on change la valeur de la description du champ HG pour les TJD
|
||||
procedure TFormConfig.EditDevie_HDChange(Sender: TObject);
|
||||
var AdrAig,adr,adr2,erreur,index : integer;
|
||||
b : char;
|
||||
modele:Tequipement;
|
||||
@@ -2311,7 +2260,7 @@ var AdrAig,adr,adr2,erreur,index : integer;
|
||||
begin
|
||||
// cliqué sur le edit dévié aiguillage
|
||||
// ne pas traiter si on a cliqué sur la liste
|
||||
if clicliste or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste then exit;
|
||||
if affevt then affiche('Evt change dévié',clyellow);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
|
||||
@@ -2364,8 +2313,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
// on change la valeur de la description du droit de l'aiguillage
|
||||
procedure TFormConfig.EditDroit_BDKeyPress(Sender: TObject; var Key: Char);
|
||||
// on change la valeur de la description de la déviation de l'aiguillage
|
||||
procedure TFormConfig.EditDroit_BDChange(Sender: TObject);
|
||||
var AdrAig,adr,erreur,index,adr2 : integer;
|
||||
b : char;
|
||||
modele: TEquipement;
|
||||
@@ -2373,7 +2322,7 @@ var AdrAig,adr,erreur,index,adr2 : integer;
|
||||
begin
|
||||
// cliqué sur le edit droit aiguillage
|
||||
// ne pas traiter si on a cliqué sur la liste
|
||||
if clicliste or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste then exit;
|
||||
if affevt then affiche('Evt change droit',clyellow);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
|
||||
@@ -2421,10 +2370,10 @@ begin
|
||||
LabelInfo.caption:='Modification de la TJD homologe ('+IntToSTR(adr2)+')';
|
||||
end;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditPointe_BGKeyPress(Sender: TObject;
|
||||
var Key: Char);
|
||||
procedure TFormConfig.EditPointe_BGChange(Sender: TObject);
|
||||
var AdrAig,adr,erreur,index : integer;
|
||||
b : char;
|
||||
normal,tjdC,tjsC,triC : boolean;
|
||||
@@ -2432,7 +2381,7 @@ var AdrAig,adr,erreur,index : integer;
|
||||
begin
|
||||
// cliqué sur le edit pointe aiguillage
|
||||
// ne pas traiter si on a cliqué sur la liste
|
||||
if clicliste or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste then exit;
|
||||
if affevt then affiche('Evt change pointe',clyellow);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
|
||||
@@ -2477,7 +2426,10 @@ begin
|
||||
else
|
||||
LabelInfo.caption:='Erreur pointe aiguillage '+intToSTR(AdrAig);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TFormConfig.EditDevieS2KeyPress(Sender: TObject; var Key: Char);
|
||||
var AdrAig,adr,erreur,index : integer;
|
||||
@@ -2645,11 +2597,11 @@ begin
|
||||
clicliste:=false;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet1KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure Det1;
|
||||
var s : string;
|
||||
i,erreur : integer;
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
if affevt then Affiche('Evt detecteur 1',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2667,12 +2619,23 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv1KeyPress(Sender: TObject; var Key: Char);
|
||||
var s : string;
|
||||
procedure TFormConfig.EditDet1KeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
Det1;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet1Change(Sender: TObject);
|
||||
begin
|
||||
Det1;
|
||||
end;
|
||||
|
||||
procedure Suiv1;
|
||||
var s : string;
|
||||
i,erreur : integer;
|
||||
bt : Tequipement;
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
if affevt then Affiche('Evt Element suivant1',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2707,11 +2670,23 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet2KeyPress(Sender: TObject; var Key: Char);
|
||||
|
||||
procedure TFormConfig.EditSuiv1Change(Sender: TObject);
|
||||
begin
|
||||
Suiv1;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv1KeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
Suiv1;
|
||||
end;
|
||||
|
||||
procedure Det2;
|
||||
var s : string;
|
||||
i,erreur : integer;
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
if affevt then Affiche('Evt detecteur 2',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2729,6 +2704,17 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet2Change(Sender: TObject);
|
||||
begin
|
||||
det2;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet2KeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
det2;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.CheckVerrouCarreClick(Sender: TObject);
|
||||
var s : string;
|
||||
begin
|
||||
@@ -2759,12 +2745,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv2KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure Suiv2;
|
||||
var s : string;
|
||||
erreur,i: integer;
|
||||
bt : Tequipement;
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if affevt then Affiche('Evt Element suivant2',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2799,12 +2784,24 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv2Change(Sender: TObject);
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
|
||||
Suiv2;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet3KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure TFormConfig.EditSuiv2KeyPress(Sender: TObject; var Key: Char);
|
||||
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
Suiv2;
|
||||
end;
|
||||
|
||||
procedure det3;
|
||||
var s : string;
|
||||
i,erreur : integer;
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
if affevt then Affiche('Evt detecteur 3',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2822,12 +2819,24 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv3KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure TFormConfig.EditDet3Change(Sender: TObject);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
det3;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet3KeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
det3;
|
||||
end;
|
||||
|
||||
procedure Suiv3;
|
||||
var s : string;
|
||||
erreur,i : integer;
|
||||
bt : Tequipement;
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
if affevt then Affiche('Evt Element suivant3',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2860,13 +2869,25 @@ begin
|
||||
s:=encode_sig_feux(ligneClicSig+1);
|
||||
RichSig.Lines[ligneClicSig]:=s;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv3Change(Sender: TObject);
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
|
||||
suiv3;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet4KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure TFormConfig.EditSuiv3KeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
|
||||
suiv3;
|
||||
end;
|
||||
|
||||
procedure det4;
|
||||
var s : string;
|
||||
i,erreur : integer;
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste then exit;
|
||||
if affevt then Affiche('Evt detecteur 4',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2882,14 +2903,26 @@ begin
|
||||
RichSig.Lines[ligneClicSig]:=s;
|
||||
feux[ligneClicSig+1].modifie:=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditDet4Change(Sender: TObject);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
det4;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv4KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure TFormConfig.EditDet4KeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
det4;
|
||||
end;
|
||||
|
||||
procedure suiv4;
|
||||
var s : string;
|
||||
erreur,i : integer;
|
||||
bt : Tequipement;
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
if affevt then Affiche('Evt Element suivant4',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -2924,6 +2957,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv4Change(Sender: TObject);
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) then exit;
|
||||
Suiv4;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSuiv4KeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (comboBoxAsp.Itemindex>=6) or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
Suiv4;
|
||||
end;
|
||||
|
||||
|
||||
procedure TFormConfig.EditActChange(Sender: TObject);
|
||||
var s : string;
|
||||
act,erreur : integer;
|
||||
@@ -3119,11 +3165,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditAdrSigKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure AdrSig;
|
||||
var s : string;
|
||||
i, erreur : integer;
|
||||
begin
|
||||
if clicliste or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste then exit;
|
||||
if affevt then Affiche('Evt adresse signal',clOrange);
|
||||
// attention interférence avec clic droit propriétés sur un signal qui génère un evt sur ce contrôle
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -3151,13 +3197,25 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditAdrAigKeyPress(Sender: TObject; var Key: Char);
|
||||
var s : string;
|
||||
|
||||
procedure TFormConfig.EditAdrSigChange(Sender: TObject);
|
||||
begin
|
||||
AdrSig;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditAdrSigKeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (ord(Key)<>VK_RETURN) then exit;
|
||||
AdrSig;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditAdrAigChange(Sender: TObject);
|
||||
var s : string;
|
||||
i,vide,erreur,index,adr2 : integer;
|
||||
modele: TEquipement;
|
||||
c : char;
|
||||
begin
|
||||
if clicliste or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste then exit;
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
|
||||
with Formconfig do
|
||||
begin
|
||||
@@ -3184,12 +3242,12 @@ begin
|
||||
LabelInfo.caption:='aiguillage '+IntToSTR(i)+' existe déja - ne sera pas écrasé' ;
|
||||
exit;
|
||||
end;
|
||||
|
||||
EditAdrAig.Color:=clWindow;
|
||||
LabelInfo.caption:=' ';
|
||||
s:=encode_aig_gfx;
|
||||
|
||||
aiguillage[index].adresse:=i;
|
||||
aiguillage[index].modifie:=true;
|
||||
s:=encode_aig(index);
|
||||
formconfig.RichAig.Lines[ligneclicAig]:=s;
|
||||
end;
|
||||
if (modele=tjd) or (modele=tjs) then
|
||||
@@ -3256,11 +3314,11 @@ begin
|
||||
dessine_feu_mx(Feux[index].Img.Canvas,0,0,1,1,feux[index].adresse,1); // dessine les feux du signal
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSpecUniKeyPress(Sender: TObject; var Key: Char);
|
||||
procedure Uni;
|
||||
var erreur,i,Adr : integer ;
|
||||
s : string ;
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
if affevt then Affiche('Evt Unisemaf',clOrange);
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
@@ -3280,6 +3338,18 @@ begin
|
||||
s:=encode_sig_feux(ligneClicSig+1);
|
||||
RichSig.Lines[ligneClicSig]:=s;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSpecUniChange(Sender: TObject);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) then exit;
|
||||
uni;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditSpecUniKeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if clicliste or (ligneClicSig<0) or (ord(Key)<>VK_RETURN) then exit;
|
||||
uni;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.ButtonrestaureClick(Sender: TObject);
|
||||
@@ -3566,7 +3636,7 @@ begin
|
||||
begin
|
||||
LabelInfo.caption:='Erreur adresse actionneur voie 2 ouvre';exit
|
||||
end else LabelInfo.caption:=' ';
|
||||
i:=lignecliqueePN;
|
||||
i:=lignecliqueePN+1;
|
||||
tablo_PN[i].voie[2].ActOuvre:=act;
|
||||
V2valide:=(EditV2O.text<>'') and (EditV2F.text<>'');
|
||||
NbVoies:=tablo_PN[i].NbVoies;
|
||||
@@ -4992,8 +5062,9 @@ begin
|
||||
LabelInfo.Caption:='';
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditAigTripleKeyPress(Sender: TObject; var Key: Char);
|
||||
var s : string;
|
||||
|
||||
procedure TFormConfig.EditAigTripleChange(Sender: TObject);
|
||||
var s : string;
|
||||
i,erreur,index : integer;
|
||||
model: TEquipement;
|
||||
begin
|
||||
@@ -5020,9 +5091,10 @@ begin
|
||||
end ;
|
||||
if i=0 then EditAigTriple.Color:=clred else EditAigTriple.Color:=clWindow;
|
||||
LabelInfo.caption:='';
|
||||
s:=encode_aig_gfx;
|
||||
|
||||
aiguillage[index].AdrTriple:=i;
|
||||
aiguillage[index].modifie:=true;
|
||||
s:=encode_aig(index);
|
||||
formconfig.RichAig.Lines[ligneclicAig]:=s;
|
||||
end;
|
||||
end;
|
||||
@@ -5036,7 +5108,7 @@ begin
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
|
||||
with Formconfig do
|
||||
begin
|
||||
s:=encode_aig_gfx;
|
||||
|
||||
i:=ComboBoxDD.ItemIndex;
|
||||
case i of
|
||||
0 : pos:=const_devie;
|
||||
@@ -5046,17 +5118,16 @@ begin
|
||||
|
||||
aiguillage[ligneclicAig+1].PosInit:=pos;
|
||||
aiguillage[ligneclicAig+1].modifie:=true;
|
||||
formconfig.RichAig.Lines[ligneclicAig]:=s;
|
||||
s:=encode_aig(ligneclicAig+1);
|
||||
RichAig.lines[ligneclicAig]:=s;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditTempo10KeyPress(Sender: TObject; var Key: Char);
|
||||
procedure TFormConfig.EditTempo10Change(Sender: TObject);
|
||||
var s : string;
|
||||
i,erreur : integer;
|
||||
begin
|
||||
if clicliste or (ord(Key)<>VK_RETURN) or (ligneclicAig<0) then exit;
|
||||
if clicliste or (ligneclicAig<0) then exit;
|
||||
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then
|
||||
with Formconfig do
|
||||
@@ -5066,14 +5137,12 @@ begin
|
||||
if (i>0) and (i<50) then
|
||||
begin
|
||||
LabelInfo.caption:='';
|
||||
s:=encode_aig_gfx;
|
||||
aiguillage[ligneclicAig+1].temps:=i;
|
||||
aiguillage[ligneclicAig+1].modifie:=true;
|
||||
formconfig.RichAig.Lines[ligneclicAig]:=s;
|
||||
s:=encode_aig(ligneclicAig+1);
|
||||
RichAig.lines[ligneclicAig]:=s;
|
||||
end ;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.CheckInvInitClick(Sender: TObject);
|
||||
@@ -5198,13 +5267,29 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TFormConfig.ButtonConfigSRClick(Sender: TObject);
|
||||
begin
|
||||
|
||||
|
||||
begin
|
||||
|
||||
clicListe:=true;
|
||||
formSR.showmodal;
|
||||
formSR.close;
|
||||
clicListe:=false;
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1,5 +1,5 @@
|
||||
object FormPrinc: TFormPrinc
|
||||
Left = 13
|
||||
Left = 15
|
||||
Top = 175
|
||||
Width = 1212
|
||||
Height = 664
|
||||
|
||||
+124
-18
@@ -198,8 +198,11 @@ Max_Simule=10000;
|
||||
|
||||
EtatSign : array[0..13] of string[20] =('carré','sémaphore','sémaphore cli','vert','vert cli','violet',
|
||||
'blanc','blanc cli','jaune','jaune cli','ral 30','ral 60','rappel 30','rappel 60');
|
||||
NbDecodeur = 7;
|
||||
decodeur : array[0..NbDecodeur-1] of string[20] =('rien','digital Bahn','CDF','LDT','LEB','NMRA','Unisemaf');
|
||||
NbDecodeur = 8;
|
||||
decodeur : array[0..NbDecodeur-1] of string[20] =('rien','digital Bahn','CDF','LDT','LEB','NMRA','Unisemaf','SR');
|
||||
Etats : array[0..19] of string[30]=('Non commandé','carré','sémaphore','sémaphore cli','vert','vert cli','violet',
|
||||
'blanc','blanc cli','jaune','jaune cli','ralen 30','ralen 60','ralen 60 + jaune cli','rappel 30','rappel 60',
|
||||
'rappel 30 + jaune','rappel 30 + jaune cli','rappel 60 + jaune','rappel 60 + jaune cli');
|
||||
|
||||
type
|
||||
Taccessoire = (aigP,feu);
|
||||
@@ -278,6 +281,9 @@ TBranche = record
|
||||
Adresse : integer; // aiguillage
|
||||
posAig : char;
|
||||
end;
|
||||
SR : array[1..8] of record // décodeur Stéphane Ravaut
|
||||
sortie1,sortie0 : integer;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@@ -421,8 +427,25 @@ begin
|
||||
StatusBar1.Simpletext:=Application.Hint;
|
||||
end;
|
||||
|
||||
// fonctions sur les bits
|
||||
function testBit(n : word;position : integer) : boolean;
|
||||
begin
|
||||
testBit:=n and (1 shl position) = (1 shl position);
|
||||
end;
|
||||
|
||||
Function RazBit(n : word;position : integer) : word;
|
||||
begin
|
||||
RazBit:=n and not(1 shl position);
|
||||
end;
|
||||
|
||||
Function SetBit(n : word;position : integer) : word;
|
||||
begin
|
||||
SetBit:=n or (1 shl position);
|
||||
end;
|
||||
|
||||
// renvoie le 1er numéro de bit à 1
|
||||
// ex BitNum(4)=2
|
||||
// PremBitNum(1)=0
|
||||
// PremBitNum(4)=2
|
||||
Function PremBitNum(n : word) : integer;
|
||||
var i : integer;
|
||||
trouve : boolean;
|
||||
@@ -436,6 +459,7 @@ begin
|
||||
PremBitNum:=i;
|
||||
end;
|
||||
|
||||
|
||||
// conversion du motif de bits (codebin) de la configuration du signal complexe en deux mots:
|
||||
// en sortie :
|
||||
// premierBit : code de la signalisation
|
||||
@@ -447,6 +471,47 @@ begin
|
||||
combine:=PremBitNum(CodeBin and $fc00);
|
||||
end;
|
||||
|
||||
// conversion d'un état signal binaire en état unique
|
||||
// exemple code_to_etat(10001000000000) (jaune_cli et rappel 60) renvoie 19
|
||||
function code_to_etat(code : word) : integer;
|
||||
var aspect,combine : word;
|
||||
begin
|
||||
code_to_aspect(code,aspect,combine);
|
||||
result:=9999;
|
||||
if aspect=0 then result:=1; // carré
|
||||
if aspect=1 then result:=2; // sémaphore
|
||||
if aspect=2 then result:=3; // sémaphore cli
|
||||
if aspect=3 then result:=4; // vert
|
||||
if aspect=4 then result:=5; // vert cli
|
||||
if aspect=5 then result:=6; // violet
|
||||
if aspect=6 then result:=7; // blanc
|
||||
if aspect=7 then result:=8; // blanc cli
|
||||
if aspect=8 then result:=9; // jaune
|
||||
if aspect=9 then result:=10; // jaune cli
|
||||
|
||||
if aspect=16 then
|
||||
begin
|
||||
if combine=10 then result:=11; // ralen 30
|
||||
if combine=11 then result:=12; // ralen 60
|
||||
if combine=12 then result:=14; // rappel 30
|
||||
if combine=13 then result:=15; // rappel 60
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (aspect=9) and (combine=11) then result:=13; //ralen 60 + jaune cli
|
||||
if (aspect=8) and (combine=12) then result:=16; //rappel 30 + jaune
|
||||
if (aspect=9) and (combine=12) then result:=17; //rappel 30 + jaune cli
|
||||
if (aspect=8) and (combine=13) then result:=18; //rappel 60 + jaune
|
||||
if (aspect=9) and (combine=13) then result:=19; //rappel 60 + jaune cli
|
||||
end;
|
||||
code_to_etat:=result;
|
||||
{'Non commandé','carré','sémaphore','sémaphore cli','vert','vert cli','violet',
|
||||
'blanc','blanc cli','jaune','jaune cli','ralen 30','ralen 60','ralen 60 + jaune cli','rappel 30','rappel 60',
|
||||
7 8 9 10 11 12 13 14 15
|
||||
'rappel 30 + jaune','rappel 30 + jaune cli','rappel 60 + jaune','rappel 60 + jaune cli');
|
||||
16 17 18 19 }
|
||||
end;
|
||||
|
||||
|
||||
// dessine un cercle plein dans le feu
|
||||
procedure cercle(ACanvas : Tcanvas;x,y,rayon : integer;couleur : Tcolor);
|
||||
@@ -1593,21 +1658,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
// fonctions sur les bits
|
||||
function testBit(n : word;position : integer) : boolean;
|
||||
begin
|
||||
testBit:=n and (1 shl position) = (1 shl position);
|
||||
end;
|
||||
|
||||
Function RazBit(n : word;position : integer) : word;
|
||||
begin
|
||||
RazBit:=n and not(1 shl position);
|
||||
end;
|
||||
|
||||
Function SetBit(n : word;position : integer) : word;
|
||||
begin
|
||||
SetBit:=n or (1 shl position);
|
||||
end;
|
||||
|
||||
// renvoie la chaîne de l'état du signal
|
||||
function chaine_signal(etat : word) : string;
|
||||
@@ -1820,6 +1870,51 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{==========================================================================
|
||||
envoie les données au décodeur SR
|
||||
===========================================================================*}
|
||||
procedure envoi_SR(adresse : integer);
|
||||
var
|
||||
code,aspect,combine : word;
|
||||
index,i,etat : integer;
|
||||
s : string;
|
||||
begin
|
||||
if (ancien_tablo_signalCplx[adresse]<>EtatSignalCplx[adresse]) then //; && (stop_cmd==FALSE))
|
||||
begin
|
||||
ancien_tablo_signalCplx[adresse]:=EtatSignalCplx[adresse];
|
||||
code:=EtatSignalCplx[adresse];
|
||||
//code_to_aspect(code,aspect,combine);
|
||||
s:='Signal SR: ad'+IntToSTR(adresse)+'='+chaine_signal(code);
|
||||
if traceSign then affiche(s,clOrange);
|
||||
if Affsignal then afficheDebug(s,clOrange);
|
||||
index:=index_feu(adresse);
|
||||
etat:=code_to_etat(code);
|
||||
|
||||
//Affiche('Code a chercher='+IntToSTR(etat),clyellow);
|
||||
|
||||
inc(aspect);
|
||||
if index<>0 then
|
||||
begin
|
||||
i:=0;
|
||||
repeat
|
||||
inc(i);
|
||||
until (feux[index].SR[i].sortie1=etat) or (feux[index].SR[i].sortie0=etat) or (i=8);
|
||||
|
||||
if (feux[index].SR[i].sortie1=etat) then
|
||||
begin
|
||||
//affiche('trouvé en sortie1 index '+IntToSTR(i),clyellow);
|
||||
Pilote_acc(adresse+i-1,2,feu);
|
||||
end;
|
||||
if (feux[index].SR[i].sortie0=etat) then
|
||||
begin
|
||||
//affiche('trouvé en sortie0 index '+IntToSTR(i),clyellow);
|
||||
Pilote_acc(adresse+i-1,1,feu);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
{==========================================================================
|
||||
envoie les données au décodeur LEB
|
||||
===========================================================================*}
|
||||
@@ -2403,6 +2498,7 @@ begin
|
||||
4 : envoi_LEB(Adr);
|
||||
5 : envoi_NMRA(Adr);
|
||||
6 : envoi_UniSemaf(Adr);
|
||||
7 : envoi_SR(Adr);
|
||||
end;
|
||||
|
||||
// vérifier si on quitte le rouge
|
||||
@@ -3035,6 +3131,7 @@ begin
|
||||
repeat
|
||||
inc(Nligne);
|
||||
s:=lit_ligne;
|
||||
//affiche(s,clyellow);
|
||||
ici3:
|
||||
if s<>'0' then
|
||||
begin
|
||||
@@ -7652,6 +7749,15 @@ begin
|
||||
inc(l);
|
||||
if nc>0 then s:=s+'/';
|
||||
until (nc<=0) or (l>6);
|
||||
|
||||
s:=s+' RV(';
|
||||
for l:=1 to 8 do
|
||||
begin
|
||||
s:=s+intToSTR(feux[i].SR[l].sortie1)+',';
|
||||
s:=s+intToSTR(feux[i].SR[l].sortie0);
|
||||
if l<8 then s:=s+'/' else s:=s+')';
|
||||
end;
|
||||
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
Binary file not shown.
BIN
Binary file not shown.
+2
-2
@@ -23,8 +23,8 @@ var
|
||||
Lance_verif : integer;
|
||||
verifVersion,notificationVersion : boolean;
|
||||
|
||||
Const Version='3.2'; // sert à la comparaison de la version publiée
|
||||
SousVersion='C'; // en cas d'absence de sous version mettre un espace
|
||||
Const Version='3.3'; // sert à la comparaison de la version publiée
|
||||
SousVersion=' '; // en cas d'absence de sous version mettre un espace
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
@@ -64,6 +64,8 @@ version 3.1 : Renforcement de la v
|
||||
Correction d'un bug sur présence train avant signal sur aiguille en talon mal positionnée.
|
||||
version 3.2 : Correction bug cohérence signal unisemaf.
|
||||
: Simplification des aiguillages pilotés inversés
|
||||
version 3.3 : Gestion du décodeur de signaux Stéphane Ravaut
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user