V8.42
This commit is contained in:
BIN
Binary file not shown.
@@ -14,8 +14,8 @@
|
||||
-$N+
|
||||
-$O-
|
||||
-$P+
|
||||
-$Q-
|
||||
-$R-
|
||||
-$Q+
|
||||
-$R+
|
||||
-$S-
|
||||
-$T-
|
||||
-$U-
|
||||
|
||||
@@ -17,8 +17,8 @@ M=0
|
||||
N=1
|
||||
O=0
|
||||
P=1
|
||||
Q=0
|
||||
R=0
|
||||
Q=1
|
||||
R=1
|
||||
S=0
|
||||
T=0
|
||||
U=0
|
||||
|
||||
+127
-126
@@ -1,104 +1,104 @@
|
||||
|
||||
Start Length Name Class
|
||||
0001:00000000 00193814H .text CODE
|
||||
0002:00000000 00002C58H .data DATA
|
||||
0002:00002C58 045E3399H .bss BSS
|
||||
0001:00000000 001AF198H .text CODE
|
||||
0002:00000000 00002CB0H .data DATA
|
||||
0002:00002CB0 045E33F1H .bss BSS
|
||||
|
||||
|
||||
Detailed map of segments
|
||||
|
||||
0001:00000000 00005EC7 C=CODE S=.text G=(none) M=System ACBP=A9
|
||||
0001:00005EC8 00000140 C=CODE S=.text G=(none) M=SysInit ACBP=A9
|
||||
0001:00006008 00000108 C=CODE S=.text G=(none) M=Types ACBP=A9
|
||||
0001:00006110 00000F10 C=CODE S=.text G=(none) M=Windows ACBP=A9
|
||||
0001:00007020 00000038 C=CODE S=.text G=(none) M=Messages ACBP=A9
|
||||
0001:00007058 00000338 C=CODE S=.text G=(none) M=SysConst ACBP=A9
|
||||
0001:00007390 00006E28 C=CODE S=.text G=(none) M=SysUtils ACBP=A9
|
||||
0001:0000E1B8 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9
|
||||
0001:0000E9D4 0000809A C=CODE S=.text G=(none) M=Variants ACBP=A9
|
||||
0001:00016A70 000001A0 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9
|
||||
0001:00016C10 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9
|
||||
0001:0001744C 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9
|
||||
0001:000177A4 0000A7EA C=CODE S=.text G=(none) M=Classes ACBP=A9
|
||||
0001:00021F90 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9
|
||||
0001:00022300 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9
|
||||
0001:0002BEFC 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9
|
||||
0001:0002C020 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9
|
||||
0001:0002C2D8 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9
|
||||
0001:0002C470 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9
|
||||
0001:0002CBF8 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9
|
||||
0001:0002CC30 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9
|
||||
0001:0002DC28 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9
|
||||
0001:0002DC80 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9
|
||||
0001:0002ED48 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9
|
||||
0001:0002F068 000003F0 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9
|
||||
0001:0002F458 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9
|
||||
0001:0002FE14 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9
|
||||
0001:0002FE4C 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9
|
||||
0001:0002FE84 00000040 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9
|
||||
0001:0002FEC4 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9
|
||||
0001:0002FEFC 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9
|
||||
0001:0002FF54 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9
|
||||
0001:0002FF8C 0000006C C=CODE S=.text G=(none) M=ShlObj ACBP=A9
|
||||
0001:0002FFF8 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9
|
||||
0001:00030058 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9
|
||||
0001:00030090 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9
|
||||
0001:00033764 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9
|
||||
0001:00038240 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9
|
||||
0001:000382D0 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9
|
||||
0001:00038A70 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9
|
||||
0001:00038B98 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9
|
||||
0001:0003C3BC 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9
|
||||
0001:0003C3F4 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9
|
||||
0001:0003C45C 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9
|
||||
0001:0003C4C4 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9
|
||||
0001:0003C530 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9
|
||||
0001:0003C588 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9
|
||||
0001:0003C5C0 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9
|
||||
0001:00045F08 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9
|
||||
0001:00046DA8 0000C698 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9
|
||||
0001:00053440 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9
|
||||
0001:000535A8 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9
|
||||
0001:000542C8 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9
|
||||
0001:000656CC 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9
|
||||
0001:00066960 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9
|
||||
0001:000684FC 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9
|
||||
0001:0006EBE0 0000CF8C C=CODE S=.text G=(none) M=Forms ACBP=A9
|
||||
0001:0007BB6C 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9
|
||||
0001:0007BBCC 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9
|
||||
0001:0007CE28 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9
|
||||
0001:0007CE60 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9
|
||||
0001:0007E5F4 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9
|
||||
0001:0007E654 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9
|
||||
0001:00081B70 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9
|
||||
0001:00081BC0 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9
|
||||
0001:00094FAC 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9
|
||||
0001:000952C0 00000128 C=CODE S=.text G=(none) M=WinSock ACBP=A9
|
||||
0001:000953E8 00003A78 C=CODE S=.text G=(none) M=ScktComp ACBP=A9
|
||||
0001:00098E60 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9
|
||||
0001:0009974C 00000598 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9
|
||||
0001:00099CE4 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9
|
||||
0001:00099D24 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9
|
||||
0001:00099D5C 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9
|
||||
0001:0009A774 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9
|
||||
0001:0009C87C 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9
|
||||
0001:000A5AC8 0000191C C=CODE S=.text G=(none) M=UnitPilote ACBP=A9
|
||||
0001:000A73E4 00000574 C=CODE S=.text G=(none) M=Importation ACBP=A9
|
||||
0001:000A7958 000192C0 C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9
|
||||
0001:000C0C18 00002D2C C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9
|
||||
0001:000C3944 00000D10 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9
|
||||
0001:000C4654 00004F10 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9
|
||||
0001:000C9564 00045880 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9
|
||||
0001:0010EDE4 000031F0 C=CODE S=.text G=(none) M=UnitSR ACBP=A9
|
||||
0001:00111FD4 00002950 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9
|
||||
0001:00114924 0003ADE0 C=CODE S=.text G=(none) M=UnitConfig ACBP=A9
|
||||
0001:0014F704 00001863 C=CODE S=.text G=(none) M=verif_version ACBP=A9
|
||||
0001:00150F68 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9
|
||||
0001:00152138 00002B74 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9
|
||||
0001:00154CAC 00000D2C C=CODE S=.text G=(none) M=UnitSimule ACBP=A9
|
||||
0001:001559D8 0000269C C=CODE S=.text G=(none) M=Unitplace ACBP=A9
|
||||
0001:00158074 0003B2DF C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9
|
||||
0001:00193354 000004C0 C=CODE S=.text G=(none) M=Signaux_complexes_GL ACBP=A9
|
||||
0001:00000000 00005F07 C=CODE S=.text G=(none) M=System ACBP=A9
|
||||
0001:00005F08 00000140 C=CODE S=.text G=(none) M=SysInit ACBP=A9
|
||||
0001:00006048 00000108 C=CODE S=.text G=(none) M=Types ACBP=A9
|
||||
0001:00006150 00000F38 C=CODE S=.text G=(none) M=Windows ACBP=A9
|
||||
0001:00007088 00000038 C=CODE S=.text G=(none) M=Messages ACBP=A9
|
||||
0001:000070C0 00000338 C=CODE S=.text G=(none) M=SysConst ACBP=A9
|
||||
0001:000073F8 00006FF8 C=CODE S=.text G=(none) M=SysUtils ACBP=A9
|
||||
0001:0000E3F0 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9
|
||||
0001:0000EC0C 0000809E C=CODE S=.text G=(none) M=Variants ACBP=A9
|
||||
0001:00016CAC 000001A0 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9
|
||||
0001:00016E4C 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9
|
||||
0001:00017688 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9
|
||||
0001:000179E0 0000A7EA C=CODE S=.text G=(none) M=Classes ACBP=A9
|
||||
0001:000221CC 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9
|
||||
0001:0002253C 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9
|
||||
0001:0002C138 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9
|
||||
0001:0002C25C 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9
|
||||
0001:0002C514 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9
|
||||
0001:0002C6AC 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9
|
||||
0001:0002CE34 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9
|
||||
0001:0002CE6C 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9
|
||||
0001:0002DE64 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9
|
||||
0001:0002DEBC 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9
|
||||
0001:0002EF84 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9
|
||||
0001:0002F2A4 000003F0 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9
|
||||
0001:0002F694 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9
|
||||
0001:00030050 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9
|
||||
0001:00030088 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9
|
||||
0001:000300C0 00000048 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9
|
||||
0001:00030108 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9
|
||||
0001:00030140 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9
|
||||
0001:00030198 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9
|
||||
0001:000301D0 0000007C C=CODE S=.text G=(none) M=ShlObj ACBP=A9
|
||||
0001:0003024C 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9
|
||||
0001:000302AC 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9
|
||||
0001:000302E4 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9
|
||||
0001:000339B8 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9
|
||||
0001:00038494 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9
|
||||
0001:00038524 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9
|
||||
0001:00038CC4 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9
|
||||
0001:00038DEC 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9
|
||||
0001:0003C610 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9
|
||||
0001:0003C648 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9
|
||||
0001:0003C6B0 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9
|
||||
0001:0003C718 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9
|
||||
0001:0003C784 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9
|
||||
0001:0003C7DC 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9
|
||||
0001:0003C814 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9
|
||||
0001:0004615C 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9
|
||||
0001:00046FFC 0000C698 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9
|
||||
0001:00053694 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9
|
||||
0001:000537FC 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9
|
||||
0001:0005451C 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9
|
||||
0001:00065920 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9
|
||||
0001:00066BB4 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9
|
||||
0001:00068750 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9
|
||||
0001:0006EE34 0000CF8C C=CODE S=.text G=(none) M=Forms ACBP=A9
|
||||
0001:0007BDC0 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9
|
||||
0001:0007BE20 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9
|
||||
0001:0007D07C 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9
|
||||
0001:0007D0B4 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9
|
||||
0001:0007E848 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9
|
||||
0001:0007E8A8 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9
|
||||
0001:00081DC4 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9
|
||||
0001:00081E14 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9
|
||||
0001:00095200 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9
|
||||
0001:00095514 00000128 C=CODE S=.text G=(none) M=WinSock ACBP=A9
|
||||
0001:0009563C 00003A78 C=CODE S=.text G=(none) M=ScktComp ACBP=A9
|
||||
0001:000990B4 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9
|
||||
0001:000999A0 00000598 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9
|
||||
0001:00099F38 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9
|
||||
0001:00099F78 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9
|
||||
0001:00099FB0 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9
|
||||
0001:0009A9C8 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9
|
||||
0001:0009CAD0 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9
|
||||
0001:000A5D1C 0000191C C=CODE S=.text G=(none) M=UnitPilote ACBP=A9
|
||||
0001:000A7638 00000574 C=CODE S=.text G=(none) M=Importation ACBP=A9
|
||||
0001:000A7BAC 000192C0 C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9
|
||||
0001:000C0E6C 00002D2C C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9
|
||||
0001:000C3B98 00000D78 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9
|
||||
0001:000C4910 00004FA0 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9
|
||||
0001:000C98B0 00045960 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9
|
||||
0001:0010F210 000031F0 C=CODE S=.text G=(none) M=UnitSR ACBP=A9
|
||||
0001:00112400 00002950 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9
|
||||
0001:00114D50 000029E7 C=CODE S=.text G=(none) M=verif_version ACBP=A9
|
||||
0001:00117738 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9
|
||||
0001:00118908 00046C78 C=CODE S=.text G=(none) M=UnitConfig ACBP=A9
|
||||
0001:0015F580 00002B74 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9
|
||||
0001:001620F4 00000D2C C=CODE S=.text G=(none) M=UnitSimule ACBP=A9
|
||||
0001:00162E20 000029DC C=CODE S=.text G=(none) M=Unitplace ACBP=A9
|
||||
0001:001657FC 000494DB C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9
|
||||
0001:001AECD8 000004C0 C=CODE S=.text G=(none) M=Signaux_complexes_GL ACBP=A9
|
||||
0002:00000000 000000CC C=DATA S=.data G=DGROUP M=System ACBP=A9
|
||||
0002:000000CC 00000020 C=DATA S=.data G=DGROUP M=SysInit ACBP=A9
|
||||
0002:000000EC 00000254 C=DATA S=.data G=DGROUP M=SysUtils ACBP=A9
|
||||
@@ -109,28 +109,29 @@ Detailed map of segments
|
||||
0002:00000518 00000080 C=DATA S=.data G=DGROUP M=Classes ACBP=A9
|
||||
0002:00000598 0000030C C=DATA S=.data G=DGROUP M=Graphics ACBP=A9
|
||||
0002:000008A4 00000004 C=DATA S=.data G=DGROUP M=Printers ACBP=A9
|
||||
0002:000008A8 00000180 C=DATA S=.data G=DGROUP M=Dialogs ACBP=A9
|
||||
0002:00000A28 0000018C C=DATA S=.data G=DGROUP M=ExtCtrls ACBP=A9
|
||||
0002:00000BB4 0000009E C=DATA S=.data G=DGROUP M=Buttons ACBP=A9
|
||||
0002:00000C54 00000008 C=DATA S=.data G=DGROUP M=IniFiles ACBP=A9
|
||||
0002:00000C5C 00000008 C=DATA S=.data G=DGROUP M=Registry ACBP=A9
|
||||
0002:00000C64 00000008 C=DATA S=.data G=DGROUP M=Mapi ACBP=A9
|
||||
0002:00000C6C 000000B9 C=DATA S=.data G=DGROUP M=ComCtrls ACBP=A9
|
||||
0002:00000D28 00000068 C=DATA S=.data G=DGROUP M=Themes ACBP=A9
|
||||
0002:00000D90 00000154 C=DATA S=.data G=DGROUP M=StdCtrls ACBP=A9
|
||||
0002:00000EE4 0000013C C=DATA S=.data G=DGROUP M=Controls ACBP=A9
|
||||
0002:00001020 00000020 C=DATA S=.data G=DGROUP M=ImgList ACBP=A9
|
||||
0002:00001040 000000EC C=DATA S=.data G=DGROUP M=Menus ACBP=A9
|
||||
0002:0000112C 00000124 C=DATA S=.data G=DGROUP M=Forms ACBP=A9
|
||||
0002:00001250 00000030 C=DATA S=.data G=DGROUP M=ComObj ACBP=A9
|
||||
0002:00001280 0000002C C=DATA S=.data G=DGROUP M=OleCtrls ACBP=A9
|
||||
0002:000012AC 00000908 C=DATA S=.data G=DGROUP M=jpeg ACBP=A9
|
||||
0002:00001BB4 00000058 C=DATA S=.data G=DGROUP M=MSCommLib_TLB ACBP=A9
|
||||
0002:00001C0C 00000009 C=DATA S=.data G=DGROUP M=MaskUtils ACBP=A9
|
||||
0002:00001C18 00000004 C=DATA S=.data G=DGROUP M=Mask ACBP=A9
|
||||
0002:00001C1C 00000006 C=DATA S=.data G=DGROUP M=Grids ACBP=A9
|
||||
0002:00001C24 000000D4 C=DATA S=.data G=DGROUP M=UnitTCO ACBP=A9
|
||||
0002:00001CF8 0000060D C=DATA S=.data G=DGROUP M=UnitPrinc ACBP=A9
|
||||
0002:000008A8 00000010 C=DATA S=.data G=DGROUP M=ShlObj ACBP=A9
|
||||
0002:000008B8 00000180 C=DATA S=.data G=DGROUP M=Dialogs ACBP=A9
|
||||
0002:00000A38 0000018C C=DATA S=.data G=DGROUP M=ExtCtrls ACBP=A9
|
||||
0002:00000BC4 0000009E C=DATA S=.data G=DGROUP M=Buttons ACBP=A9
|
||||
0002:00000C64 00000008 C=DATA S=.data G=DGROUP M=IniFiles ACBP=A9
|
||||
0002:00000C6C 00000008 C=DATA S=.data G=DGROUP M=Registry ACBP=A9
|
||||
0002:00000C74 00000008 C=DATA S=.data G=DGROUP M=Mapi ACBP=A9
|
||||
0002:00000C7C 000000B9 C=DATA S=.data G=DGROUP M=ComCtrls ACBP=A9
|
||||
0002:00000D38 00000068 C=DATA S=.data G=DGROUP M=Themes ACBP=A9
|
||||
0002:00000DA0 00000154 C=DATA S=.data G=DGROUP M=StdCtrls ACBP=A9
|
||||
0002:00000EF4 0000013C C=DATA S=.data G=DGROUP M=Controls ACBP=A9
|
||||
0002:00001030 00000020 C=DATA S=.data G=DGROUP M=ImgList ACBP=A9
|
||||
0002:00001050 000000EC C=DATA S=.data G=DGROUP M=Menus ACBP=A9
|
||||
0002:0000113C 00000124 C=DATA S=.data G=DGROUP M=Forms ACBP=A9
|
||||
0002:00001260 00000030 C=DATA S=.data G=DGROUP M=ComObj ACBP=A9
|
||||
0002:00001290 0000002C C=DATA S=.data G=DGROUP M=OleCtrls ACBP=A9
|
||||
0002:000012BC 00000908 C=DATA S=.data G=DGROUP M=jpeg ACBP=A9
|
||||
0002:00001BC4 00000080 C=DATA S=.data G=DGROUP M=MSCommLib_TLB ACBP=A9
|
||||
0002:00001C44 00000009 C=DATA S=.data G=DGROUP M=MaskUtils ACBP=A9
|
||||
0002:00001C50 00000004 C=DATA S=.data G=DGROUP M=Mask ACBP=A9
|
||||
0002:00001C54 00000006 C=DATA S=.data G=DGROUP M=Grids ACBP=A9
|
||||
0002:00001C5C 000000D4 C=DATA S=.data G=DGROUP M=UnitTCO ACBP=A9
|
||||
0002:00001D30 0000060D C=DATA S=.data G=DGROUP M=UnitPrinc ACBP=A9
|
||||
0002:00003000 00000664 C=BSS S=.bss G=DGROUP M=System ACBP=A9
|
||||
0002:00003664 00000010 C=BSS S=.bss G=DGROUP M=SysInit ACBP=A9
|
||||
0002:00003674 00000004 C=BSS S=.bss G=DGROUP M=Types ACBP=A9
|
||||
@@ -215,13 +216,13 @@ Detailed map of segments
|
||||
0002:00018770 00418700 C=BSS S=.bss G=DGROUP M=UnitTCO ACBP=A9
|
||||
0002:00430E70 00000010 C=BSS S=.bss G=DGROUP M=UnitSR ACBP=A9
|
||||
0002:00430E80 00000014 C=BSS S=.bss G=DGROUP M=UnitCDF ACBP=A9
|
||||
0002:00430E94 0000050C C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9
|
||||
0002:004313A0 00000018 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9
|
||||
0002:004313B8 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9
|
||||
0002:004313BC 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9
|
||||
0002:004313E8 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9
|
||||
0002:004313F4 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9
|
||||
0002:004313FC 041B4F9C C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9
|
||||
0002:00430E94 00000020 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9
|
||||
0002:00430EB4 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9
|
||||
0002:00430EB8 00000558 C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9
|
||||
0002:00431410 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9
|
||||
0002:0043143C 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9
|
||||
0002:00431448 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9
|
||||
0002:00431450 041B4FA0 C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9
|
||||
|
||||
Bound resource files
|
||||
|
||||
@@ -237,8 +238,8 @@ UnitConfigCellTCO.dfm
|
||||
UnitTCO.dfm
|
||||
UnitSR.dfm
|
||||
UnitCDF.dfm
|
||||
UnitConfig.dfm
|
||||
verif_version.dfm
|
||||
UnitConfig.dfm
|
||||
UnitDebug.dfm
|
||||
UnitSimule.dfm
|
||||
Unitplace.dfm
|
||||
@@ -247,4 +248,4 @@ Signaux_complexes_GL.res
|
||||
Signaux_complexes_GL.drf
|
||||
|
||||
|
||||
Program entry point at 0001:00193664
|
||||
Program entry point at 0001:001AEFE8
|
||||
|
||||
+98
-142
@@ -1,6 +1,6 @@
|
||||
object FormConfig: TFormConfig
|
||||
Left = 230
|
||||
Top = 120
|
||||
Left = 347
|
||||
Top = 101
|
||||
Hint = 'Modifie la configuration selon les s'#233'lections choisies'
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Configuration g'#233'n'#233'rale'
|
||||
@@ -681,7 +681,7 @@ object FormConfig: TFormConfig
|
||||
Top = 8
|
||||
Width = 633
|
||||
Height = 505
|
||||
ActivePage = TabSheetCDM
|
||||
ActivePage = TabSheetAct
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -11
|
||||
@@ -706,7 +706,7 @@ object FormConfig: TFormConfig
|
||||
Left = 16
|
||||
Top = 8
|
||||
Width = 273
|
||||
Height = 81
|
||||
Height = 105
|
||||
Caption = 'Socket de comm. CDM Rail <--> Signaux complexes'
|
||||
TabOrder = 0
|
||||
object Label1: TLabel
|
||||
@@ -739,10 +739,24 @@ object FormConfig: TFormConfig
|
||||
TabStop = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object ButtonPFCDM: TButton
|
||||
Left = 16
|
||||
Top = 72
|
||||
Width = 241
|
||||
Height = 25
|
||||
Hint =
|
||||
'Ajoute une r'#232'gle d'#39'autorisation de communication du socket vers ' +
|
||||
'CDM rail dans le pare-feu'
|
||||
Caption = 'Ajouter les autorisations au pare-feu windows'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 2
|
||||
OnClick = ButtonPFCDMClick
|
||||
end
|
||||
end
|
||||
object GroupBox5: TGroupBox
|
||||
Left = 16
|
||||
Top = 96
|
||||
Top = 120
|
||||
Width = 273
|
||||
Height = 225
|
||||
Caption = 'Au d'#233'marrage de Signaux_Complexes '
|
||||
@@ -985,7 +999,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object GroupBox8: TGroupBox
|
||||
Left = 16
|
||||
Top = 328
|
||||
Top = 352
|
||||
Width = 273
|
||||
Height = 97
|
||||
Caption = 'Services CommIP CDM Rail'
|
||||
@@ -1047,77 +1061,42 @@ object FormConfig: TFormConfig
|
||||
Left = 312
|
||||
Top = 224
|
||||
Width = 297
|
||||
Height = 201
|
||||
Height = 161
|
||||
Caption = 'Divers'
|
||||
TabOrder = 5
|
||||
object Label31: TLabel
|
||||
Left = 8
|
||||
Top = 22
|
||||
Width = 204
|
||||
Height = 13
|
||||
Caption = 'Seuil du nombre de d'#233'tecteurs trop distants'
|
||||
end
|
||||
object Label41: TLabel
|
||||
Left = 8
|
||||
Top = 64
|
||||
Top = 24
|
||||
Width = 188
|
||||
Height = 13
|
||||
Caption = 'Taille de la fonte de la fen'#234'tre principale'
|
||||
end
|
||||
object Label44: TLabel
|
||||
Left = 8
|
||||
Top = 43
|
||||
Width = 223
|
||||
Height = 13
|
||||
Caption = 'Nombre de cantons pr'#233'sence train avant signal'
|
||||
end
|
||||
object Label55: TLabel
|
||||
Left = 8
|
||||
Top = 86
|
||||
Top = 46
|
||||
Width = 32
|
||||
Height = 13
|
||||
Caption = 'Debug'
|
||||
end
|
||||
object Label28: TLabel
|
||||
Left = 8
|
||||
Top = 110
|
||||
Top = 78
|
||||
Width = 182
|
||||
Height = 13
|
||||
Caption = 'Port du serveur de Signaux Complexes'
|
||||
end
|
||||
object EditNbDetDist: TEdit
|
||||
object EditFonte: TEdit
|
||||
Left = 240
|
||||
Top = 18
|
||||
Top = 22
|
||||
Width = 25
|
||||
Height = 21
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object EditFonte: TEdit
|
||||
Left = 240
|
||||
Top = 62
|
||||
Width = 25
|
||||
Height = 21
|
||||
ParentShowHint = False
|
||||
ShowHint = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object EditNbCantons: TEdit
|
||||
Left = 240
|
||||
Top = 39
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint =
|
||||
'Nombre de cantons pr'#233'sence train avant un signal pour le d'#233'clar' +
|
||||
'er verrouill'#233
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 2
|
||||
end
|
||||
object EditDebug: TEdit
|
||||
Left = 240
|
||||
Top = 86
|
||||
Top = 46
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint =
|
||||
@@ -1125,11 +1104,11 @@ object FormConfig: TFormConfig
|
||||
'par '#233'tape ; 3=Dynamique)'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 3
|
||||
TabOrder = 1
|
||||
end
|
||||
object CheckBoxVerifXpressNet: TCheckBox
|
||||
Left = 8
|
||||
Top = 150
|
||||
Top = 102
|
||||
Width = 233
|
||||
Height = 17
|
||||
Hint =
|
||||
@@ -1138,24 +1117,24 @@ object FormConfig: TFormConfig
|
||||
Caption = 'V'#233'rification des adresses XpressNet'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 4
|
||||
TabOrder = 2
|
||||
OnClick = CheckBoxVerifXpressNetClick
|
||||
end
|
||||
object EditPortServeur: TEdit
|
||||
Left = 216
|
||||
Top = 110
|
||||
Top = 72
|
||||
Width = 49
|
||||
Height = 21
|
||||
Hint = 'Port de 1 '#224' 65535'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 5
|
||||
TabOrder = 3
|
||||
OnChange = EditPortServeurChange
|
||||
OnExit = EditPortServeurExit
|
||||
end
|
||||
object CheckBoxSombre: TCheckBox
|
||||
Left = 8
|
||||
Top = 132
|
||||
Top = 124
|
||||
Width = 137
|
||||
Height = 17
|
||||
Hint =
|
||||
@@ -1164,34 +1143,20 @@ object FormConfig: TFormConfig
|
||||
Caption = 'Affichage mode sombre'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 6
|
||||
TabOrder = 4
|
||||
end
|
||||
object ButtonCouleur: TButton
|
||||
Left = 144
|
||||
Top = 130
|
||||
Top = 122
|
||||
Width = 25
|
||||
Height = 17
|
||||
Caption = '...'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 7
|
||||
TabOrder = 5
|
||||
OnClick = ButtonCouleurClick
|
||||
end
|
||||
end
|
||||
object ButtonPFCDM: TButton
|
||||
Left = 336
|
||||
Top = 430
|
||||
Width = 241
|
||||
Height = 25
|
||||
Hint =
|
||||
'Ajoute une r'#232'gle d'#39'autorisation de communication du socket vers ' +
|
||||
'CDM rail dans le pare-feu'
|
||||
Caption = 'Ajouter les autorisations au pare-feu windows'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 6
|
||||
OnClick = ButtonPFCDMClick
|
||||
end
|
||||
end
|
||||
object TabSheetAutonome: TTabSheet
|
||||
Caption = 'Mode autonome'
|
||||
@@ -1464,7 +1429,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object GroupBox22: TGroupBox
|
||||
Left = 312
|
||||
Top = 320
|
||||
Top = 256
|
||||
Width = 297
|
||||
Height = 65
|
||||
Caption = 'Protocole de connexion '#224' la centrale ou '#224' l'#39'interface'
|
||||
@@ -1492,31 +1457,6 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
object GroupBox25: TGroupBox
|
||||
Left = 312
|
||||
Top = 248
|
||||
Width = 297
|
||||
Height = 65
|
||||
Caption = 'Divers'
|
||||
TabOrder = 8
|
||||
object Label58: TLabel
|
||||
Left = 16
|
||||
Top = 24
|
||||
Width = 155
|
||||
Height = 13
|
||||
Caption = 'Filtrage des d'#233'tecteurs (x100 ms)'
|
||||
end
|
||||
object EditFiltrDet: TEdit
|
||||
Left = 224
|
||||
Top = 20
|
||||
Width = 25
|
||||
Height = 21
|
||||
Hint = 'Temps de filtrage des d'#233'tecteurs qui passent '#224' 0'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
object TabSheetAig: TTabSheet
|
||||
Caption = 'Aiguillages'
|
||||
@@ -2047,7 +1987,7 @@ object FormConfig: TFormConfig
|
||||
Left = 0
|
||||
Top = 56
|
||||
Width = 305
|
||||
Height = 353
|
||||
Height = 409
|
||||
Color = clBlack
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clAqua
|
||||
@@ -2155,7 +2095,7 @@ object FormConfig: TFormConfig
|
||||
Top = 104
|
||||
Width = 75
|
||||
Height = 20
|
||||
Hint = 'Cherche une chaine'
|
||||
Hint = 'Cherche une chaine ; recliquer pour le suivant.'
|
||||
Caption = 'Cherche'
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
@@ -2955,7 +2895,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object GroupBoxAct: TGroupBox
|
||||
Left = 8
|
||||
Top = 120
|
||||
Top = 112
|
||||
Width = 249
|
||||
Height = 321
|
||||
Caption = 'Action fonction de locomotive '
|
||||
@@ -3024,7 +2964,7 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 2
|
||||
OnChange = EditTrainDeclChange
|
||||
end
|
||||
object RadioGroup1: TRadioGroup
|
||||
object RadioGroupDecl: TRadioGroup
|
||||
Left = 8
|
||||
Top = 16
|
||||
Width = 217
|
||||
@@ -3069,8 +3009,8 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
end
|
||||
object GroupBox19: TGroupBox
|
||||
Left = 32
|
||||
Top = 168
|
||||
Left = 48
|
||||
Top = 144
|
||||
Width = 233
|
||||
Height = 137
|
||||
Caption = 'Destinataire de l'#39'action '
|
||||
@@ -3263,7 +3203,7 @@ object FormConfig: TFormConfig
|
||||
Height = 21
|
||||
Hint = 'Nom de l'#39'accessoire d'#233'fini dans l'#39'onglet "p'#233'riph'#233'riques COM/USB"'
|
||||
Style = csDropDownList
|
||||
ItemHeight = 0
|
||||
ItemHeight = 13
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 6
|
||||
@@ -3284,8 +3224,8 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
end
|
||||
object GroupBoxPNA: TGroupBox
|
||||
Left = 64
|
||||
Top = 96
|
||||
Left = 152
|
||||
Top = 240
|
||||
Width = 169
|
||||
Height = 121
|
||||
Caption = 'Actionneurs PN simples'
|
||||
@@ -3300,7 +3240,7 @@ object FormConfig: TFormConfig
|
||||
TabOrder = 3
|
||||
end
|
||||
object GroupBoxPN: TGroupBox
|
||||
Left = 8
|
||||
Left = 152
|
||||
Top = 24
|
||||
Width = 249
|
||||
Height = 193
|
||||
@@ -3444,7 +3384,7 @@ object FormConfig: TFormConfig
|
||||
Height = 21
|
||||
Hint = 'Nom de l'#39'accessoire d'#233'fini dans l'#39'onglet "p'#233'riph'#233'riques COM/USB"'
|
||||
Style = csDropDownList
|
||||
ItemHeight = 0
|
||||
ItemHeight = 13
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 10
|
||||
@@ -3556,7 +3496,7 @@ object FormConfig: TFormConfig
|
||||
ShowHint = False
|
||||
object Label10: TLabel
|
||||
Left = 8
|
||||
Top = 41
|
||||
Top = 57
|
||||
Width = 317
|
||||
Height = 13
|
||||
Caption = 'Liste des commandes envoy'#233'es '#224' l'#39'interface DCC++ '#224' la connexion'
|
||||
@@ -3695,24 +3635,31 @@ object FormConfig: TFormConfig
|
||||
object Label19: TLabel
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 531
|
||||
Height = 26
|
||||
Caption =
|
||||
'Configuration de l'#39'interface DCC++ pour le mode autonome (n'#233'cess' +
|
||||
'ite de cocher le protocole DCC++ dans l'#39'onglet "Mode autonome")'
|
||||
Width = 404
|
||||
Height = 16
|
||||
Caption = 'Configuration de l'#39'interface DCC++ pour le mode autonome'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -11
|
||||
Font.Height = -13
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
WordWrap = True
|
||||
end
|
||||
object Label39: TLabel
|
||||
Left = 8
|
||||
Top = 32
|
||||
Width = 351
|
||||
Height = 13
|
||||
Caption =
|
||||
'(N'#233'cessite de cocher le protocole DCC++ dans l'#39'onglet "Mode auto' +
|
||||
'nome")'
|
||||
end
|
||||
object RichCdeDccpp: TRichEdit
|
||||
Left = 8
|
||||
Top = 64
|
||||
Top = 80
|
||||
Width = 577
|
||||
Height = 217
|
||||
Height = 201
|
||||
Color = clBlack
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clAqua
|
||||
@@ -3782,21 +3729,19 @@ object FormConfig: TFormConfig
|
||||
object Label54: TLabel
|
||||
Left = 16
|
||||
Top = 8
|
||||
Width = 475
|
||||
Height = 13
|
||||
Caption =
|
||||
'Liste des trains d'#233'clar'#233's du r'#233'seau - Pour utilisation en mode a' +
|
||||
'utonome uniquement'
|
||||
Width = 244
|
||||
Height = 16
|
||||
Caption = 'Liste des trains d'#233'clar'#233's du r'#233'seau'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -11
|
||||
Font.Height = -13
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
end
|
||||
object LabelInfVitesse: TLabel
|
||||
Left = 320
|
||||
Top = 240
|
||||
Top = 248
|
||||
Width = 256
|
||||
Height = 26
|
||||
Caption =
|
||||
@@ -3923,9 +3868,16 @@ object FormConfig: TFormConfig
|
||||
FFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00}
|
||||
Transparent = True
|
||||
end
|
||||
object Label31: TLabel
|
||||
Left = 288
|
||||
Top = 10
|
||||
Width = 223
|
||||
Height = 13
|
||||
Caption = ' Pour utilisation en mode autonome uniquement'
|
||||
end
|
||||
object GroupBox24: TGroupBox
|
||||
Left = 312
|
||||
Top = 64
|
||||
Top = 72
|
||||
Width = 297
|
||||
Height = 161
|
||||
Caption = 'Trains'
|
||||
@@ -4022,8 +3974,8 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
end
|
||||
object ButtonNT: TButton
|
||||
Left = 0
|
||||
Top = 32
|
||||
Left = 8
|
||||
Top = 48
|
||||
Width = 73
|
||||
Height = 17
|
||||
Caption = 'Nouveau'
|
||||
@@ -4032,7 +3984,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object ButtonSupprime: TButton
|
||||
Left = 88
|
||||
Top = 32
|
||||
Top = 48
|
||||
Width = 75
|
||||
Height = 17
|
||||
Caption = 'Supprime'
|
||||
@@ -4041,9 +3993,9 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object ListBoxTrains: TListBox
|
||||
Left = 8
|
||||
Top = 64
|
||||
Top = 72
|
||||
Width = 281
|
||||
Height = 345
|
||||
Height = 337
|
||||
Color = clBlack
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clAqua
|
||||
@@ -4065,12 +4017,12 @@ object FormConfig: TFormConfig
|
||||
object Label73: TLabel
|
||||
Left = 8
|
||||
Top = 8
|
||||
Width = 208
|
||||
Height = 13
|
||||
Width = 252
|
||||
Height = 16
|
||||
Caption = 'P'#233'riph'#233'riques COM/USB ou Sockets'
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -11
|
||||
Font.Height = -13
|
||||
Font.Name = 'MS Sans Serif'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
@@ -4084,7 +4036,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object SBMonte: TSpeedButton
|
||||
Left = 240
|
||||
Top = 176
|
||||
Top = 184
|
||||
Width = 25
|
||||
Height = 33
|
||||
Hint =
|
||||
@@ -4108,7 +4060,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object SBDesc: TSpeedButton
|
||||
Left = 240
|
||||
Top = 216
|
||||
Top = 224
|
||||
Width = 25
|
||||
Height = 33
|
||||
Hint =
|
||||
@@ -4132,7 +4084,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object Label23: TLabel
|
||||
Left = 8
|
||||
Top = 28
|
||||
Top = 36
|
||||
Width = 606
|
||||
Height = 26
|
||||
Caption =
|
||||
@@ -4144,7 +4096,7 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object ListBoxPeriph: TListBox
|
||||
Left = 8
|
||||
Top = 88
|
||||
Top = 96
|
||||
Width = 233
|
||||
Height = 273
|
||||
Color = clBlack
|
||||
@@ -4165,17 +4117,17 @@ object FormConfig: TFormConfig
|
||||
end
|
||||
object ButtonAjAccCom: TButton
|
||||
Left = 8
|
||||
Top = 64
|
||||
Width = 65
|
||||
Top = 72
|
||||
Width = 73
|
||||
Height = 17
|
||||
Caption = 'Nouveau'
|
||||
TabOrder = 1
|
||||
OnClick = ButtonAjAccComClick
|
||||
end
|
||||
object ButtonSupAccCom: TButton
|
||||
Left = 80
|
||||
Top = 64
|
||||
Width = 65
|
||||
Left = 88
|
||||
Top = 72
|
||||
Width = 73
|
||||
Height = 17
|
||||
Caption = 'Supprime'
|
||||
TabOrder = 2
|
||||
@@ -4220,6 +4172,10 @@ object FormConfig: TFormConfig
|
||||
OnClick = ButtonOuvreComClick
|
||||
end
|
||||
end
|
||||
object TabAvance: TTabSheet
|
||||
Caption = 'Avanc'#233
|
||||
ImageIndex = 10
|
||||
end
|
||||
end
|
||||
object ButtonEnregistre: TButton
|
||||
Left = 472
|
||||
|
||||
+279
-36
@@ -123,8 +123,6 @@ type
|
||||
RadioButtonAccess: TRadioButton;
|
||||
CheckFenEt: TCheckBox;
|
||||
GroupBoxDivers: TGroupBox;
|
||||
EditNbDetDist: TEdit;
|
||||
Label31: TLabel;
|
||||
CheckBoxInitAig: TCheckBox;
|
||||
EditAdrSig: TEdit;
|
||||
Label32: TLabel;
|
||||
@@ -213,7 +211,7 @@ type
|
||||
Label35: TLabel;
|
||||
Label36: TLabel;
|
||||
ButtonTestAct: TButton;
|
||||
RadioGroup1: TRadioGroup;
|
||||
RadioGroupDecl: TRadioGroup;
|
||||
RadioButtonActDet: TRadioButton;
|
||||
RadioButtonZones: TRadioButton;
|
||||
EditAct2: TEdit;
|
||||
@@ -224,8 +222,6 @@ type
|
||||
Label42: TLabel;
|
||||
Label43: TLabel;
|
||||
CheckBandeauTCO: TCheckBox;
|
||||
EditNbCantons: TEdit;
|
||||
Label44: TLabel;
|
||||
CheckPosAig: TCheckBox;
|
||||
ButtonEnregistre: TButton;
|
||||
CheckBoxDemarUSB: TCheckBox;
|
||||
@@ -270,9 +266,6 @@ type
|
||||
EditVitNom: TEdit;
|
||||
LabelInfVitesse: TLabel;
|
||||
CheckRoulage: TCheckBox;
|
||||
GroupBox25: TGroupBox;
|
||||
Label58: TLabel;
|
||||
EditFiltrDet: TEdit;
|
||||
CheckBoxVerifXpressNet: TCheckBox;
|
||||
ImageTrain: TImage;
|
||||
PopupMenuRichedit: TPopupMenu;
|
||||
@@ -353,7 +346,6 @@ type
|
||||
Label23: TLabel;
|
||||
Label28: TLabel;
|
||||
EditPortServeur: TEdit;
|
||||
ButtonPFCDM: TButton;
|
||||
CheckBoxZ21: TCheckBox;
|
||||
RadioButtonDCCpp: TRadioButton;
|
||||
CheckBoxSombre: TCheckBox;
|
||||
@@ -361,6 +353,10 @@ type
|
||||
ColorDialogFond: TColorDialog;
|
||||
LabelD11: TLabel;
|
||||
ButtonPropage: TButton;
|
||||
ButtonPFCDM: TButton;
|
||||
TabAvance: TTabSheet;
|
||||
Label31: TLabel;
|
||||
Label39: TLabel;
|
||||
procedure ButtonAppliquerEtFermerClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
@@ -574,7 +570,10 @@ PortServeur_ch='Port_Serveur';
|
||||
AntiTimeoutEthLenz_ch='AntiTimeoutEthLenz';
|
||||
Verif_AdrXpressNet_ch='Verif_AdrXpressNet';
|
||||
Filtrage_det_ch='Filtrage_det';
|
||||
nCantons_Res_ch='nCantonsRes';
|
||||
MaxSignalSens_ch='Max_Signal_Sens';
|
||||
Algo_localisation_ch='Algo_localisation';
|
||||
mode_reserve_ch='Mode_reservation';
|
||||
Avec_roulage_ch='Avec_roulage';
|
||||
nb_det_dist_ch='nb_det_dist';
|
||||
IpV4_PC_ch='IpV4_PC';
|
||||
@@ -648,7 +647,7 @@ var
|
||||
ligneClicBr,AncligneClicBr,ligneClicAct,AncLigneClicAct,IndexSignalclic,NumTrameCDM,
|
||||
Algo_localisation,Verif_AdrXpressNet,ligneclicTrain,AncligneclicTrain,AntiTimeoutEthLenz,
|
||||
ligneDCC,decCourant,AffMemoFenetre,ligneClicAccPeriph,AncligneClicAccPeriph,ligneCherche,
|
||||
compt_Ligne,Style_aff,Ancien_Style,Ecran_SC : integer;
|
||||
compt_Ligne,Style_aff,Ancien_Style,Ecran_SC,Mode_reserve,Max_Signal_Sens,nCantonsRes : integer;
|
||||
|
||||
ack_cdm,clicliste,config_modifie,clicproprietes,confasauver,trouve_MaxPort,
|
||||
modif_branches,ConfigPrete,trouve_section_dccpp,trouve_section_trains,trouve_section_acccomusb,
|
||||
@@ -657,7 +656,7 @@ var
|
||||
fichier : text;
|
||||
|
||||
// composants dynamiques
|
||||
Gp1 : TGroupBox;
|
||||
Gp1,GroupBoxAvance,GroupBoxExpert : TGroupBox;
|
||||
|
||||
CheckBoxCR,Cb1,Cb2,Cb3,CbVis : TCheckBox;
|
||||
|
||||
@@ -668,13 +667,19 @@ var
|
||||
EditZdet1V2F,EditZdet2V2F,EditZdet1V2O,EditZdet2V2O,
|
||||
EditZdet1V3F,EditZdet2V3F,EditZdet1V3O,EditZdet2V3O,
|
||||
EditZdet1V4F,EditZdet2V4F,EditZdet1V4O,EditZdet2V4O,
|
||||
EditZdet1V5F,EditZdet2V5F,EditZdet1V5O,EditZdet2V5O,EditOuvreEcran : Tedit;
|
||||
EditZdet1V5F,EditZdet2V5F,EditZdet1V5O,EditZdet2V5O,EditOuvreEcran,
|
||||
EditNbDetDist,EditNbCantons,EditFiltrDet,EditAlgo,
|
||||
EditMaxSignalSens,EditnCantonsRes : Tedit;
|
||||
|
||||
EditT : Array[1..10] of Tedit;
|
||||
TextBoxCde : array[1..19] of Tedit;
|
||||
|
||||
LabelPortCde,LbPnVoie1,LbAPnVoie1,LbAPnVoie2,LbAPnVoie3,LbAPnVoie4,LbAPnVoie5,LbATitre,
|
||||
LbZTitre,LbZPnVoie1,LbZPnVoie2,LbZPnVoie3,LbZPnVoie4,LbZPnVoie5,LabelMP,LabelNumeroP,
|
||||
LabelStyle,LabelOuvreEcran : Tlabel;
|
||||
LabelStyle,LabelOuvreEcran,LabelAvance1,LabelAvance2,
|
||||
LabelTD,LabelNC,LabelFiltre,LabelAlgo,LabelNbSignBS,LabelnCantonsRes : Tlabel;
|
||||
|
||||
RadioReserve : TradioGroup;
|
||||
|
||||
LabelDecCde : array[1..19] of TLabel;
|
||||
|
||||
@@ -1037,7 +1042,7 @@ begin
|
||||
30 : s:=s+',V30';
|
||||
60 : s:=s+',V60';
|
||||
else begin
|
||||
s:=s+',V'+formconfig.EditSpecifique.Text;
|
||||
s:=s+',V'+intToSTR(aiguillage[index].vitesse);
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -1725,6 +1730,10 @@ begin
|
||||
|
||||
writeln(fichierN,AvecVerifIconesTCO_ch+'=',AvecVerifIconesTCO);
|
||||
writeln(fichierN,Algo_localisation_ch+'=',Algo_localisation);
|
||||
writeln(fichierN,MaxSignalSens_ch+'=',Max_Signal_Sens);
|
||||
|
||||
writeln(fichierN,mode_reserve_ch+'=',mode_reserve);
|
||||
|
||||
writeln(fichierN,Avec_roulage_ch+'=',avecRoulage);
|
||||
writeln(fichierN,debug_ch+'=',debug);
|
||||
if sombre then s:='1' else s:='0';
|
||||
@@ -1734,6 +1743,7 @@ begin
|
||||
writeln(fichierN,serveurIPCDM_Touche_ch+'='+s);
|
||||
writeln(fichierN,PortServeur_ch+'=',PortServeur);
|
||||
writeln(fichierN,Filtrage_det_ch+'=',filtrageDet0);
|
||||
writeln(fichierN,nCantons_Res_ch+'=',nCantonsRes);
|
||||
writeln(fichierN,AntiTimeoutEthLenz_ch+'=',AntiTimeoutEthLenz);
|
||||
// taille de la fonte
|
||||
writeln(fichierN,Fonte_ch+'=',TailleFonte);
|
||||
@@ -3171,6 +3181,15 @@ var s,sa,SOrigine: string;
|
||||
val(s,filtrageDet0,erreur);
|
||||
end;
|
||||
|
||||
sa:=uppercase(nCantons_Res_ch)+'=';
|
||||
i:=pos(sa,s);
|
||||
if i=1 then
|
||||
begin
|
||||
delete(s,i,length(sa));
|
||||
if (i<1) or (i>5) then i:=2;
|
||||
val(s,nCantonsRes,erreur);
|
||||
end;
|
||||
|
||||
sa:=uppercase(AntiTimeoutEthLenz_ch)+'=';
|
||||
i:=pos(sa,s);
|
||||
if i=1 then
|
||||
@@ -3188,6 +3207,26 @@ var s,sa,SOrigine: string;
|
||||
if Algo_localisation<>1 then Affiche('Avertissement: Algo_localisation='+intToSTR(algo_localisation)+' est expérimental et non garanti',clorange);
|
||||
end;
|
||||
|
||||
sa:=uppercase(MaxSignalSens_ch)+'=';
|
||||
i:=pos(sa,s);
|
||||
if i=1 then
|
||||
begin
|
||||
delete(s,i,length(sa));
|
||||
if (i<0) or (i>50) then i:=5;
|
||||
val(s,Max_Signal_Sens,erreur);
|
||||
end;
|
||||
|
||||
|
||||
sa:=uppercase(mode_reserve_ch)+'=';
|
||||
i:=pos(sa,s);
|
||||
if i=1 then
|
||||
begin
|
||||
delete(s,i,length(sa));
|
||||
if (i<0) or (i>1) then i:=0;
|
||||
val(s,mode_reserve,erreur);
|
||||
end;
|
||||
|
||||
|
||||
sa:=uppercase(Avec_roulage_ch)+'=';
|
||||
i:=pos(sa,s);
|
||||
if i=1 then
|
||||
@@ -3987,6 +4026,10 @@ begin
|
||||
if (i<0) or (i>10) then i:=3;
|
||||
filtrageDet0:=i;
|
||||
|
||||
val(EditnCantonsRes.Text,i,erreur);
|
||||
if (i<1) or (i>5) then i:=2;
|
||||
nCantonsRes:=i;
|
||||
|
||||
Val(editTempoAig.Text,i,erreur);
|
||||
if i>3000 then begin labelInfo.Caption:='Temporisation de séquencement incorrecte ';ok:=false;end;
|
||||
Tempo_Aig:=i;
|
||||
@@ -4110,6 +4153,14 @@ begin
|
||||
val(EditBase.Text,AdrBaseDetDccpp,erreur);
|
||||
if (AdrBaseDetDccpp<0) or (AdrBaseDetDccpp>2048) then AdrBaseDetDccpp:=513;
|
||||
|
||||
mode_Reserve:=RadioReserve.ItemIndex; // 0 = par canton - 1=par détecteurs
|
||||
val(EditAlgo.Text,i,erreur);
|
||||
Algo_localisation:=i;
|
||||
|
||||
val(EditMaxSignalSens.Text,i,erreur);
|
||||
Max_Signal_Sens:=i;
|
||||
|
||||
|
||||
end;
|
||||
if change_srv then services_CDM;
|
||||
verifie_panneau_config:=ok;
|
||||
@@ -4132,7 +4183,7 @@ procedure clicListeSignal(index : integer);
|
||||
var AncAdresse,adresse,erreur : integer;
|
||||
s : string;
|
||||
begin
|
||||
if index<1 then exit;
|
||||
if (index<1) or (index>FormConfig.ListBoxSig.Items.Count) then exit;
|
||||
s:=Uppercase(FormConfig.ListBoxSig.Items[index-1]); // ligne cliquée
|
||||
if s='' then
|
||||
begin
|
||||
@@ -4200,6 +4251,7 @@ begin
|
||||
EditportLenz.text:=IntToSTR(PortInterface);
|
||||
EditTempoAig.Text:=IntToSTR(Tempo_Aig);
|
||||
EditFiltrDet.text:=intToSTR(filtrageDet0);
|
||||
EditnCantonsRes.Text:=intToSTR(nCantonsRes);
|
||||
|
||||
{$IF CompilerVersion >= 28.0}
|
||||
ComboStyle.itemIndex:=Style_Aff;
|
||||
@@ -4290,6 +4342,9 @@ begin
|
||||
end;
|
||||
ListBoxAig.itemindex:=0;
|
||||
|
||||
RadioReserve.ItemIndex:=mode_Reserve;
|
||||
editAlgo.Text:=intToSTR(Algo_localisation);
|
||||
EditMaxSignalSens.Text:=intToSTR(Max_Signal_Sens);
|
||||
|
||||
end;
|
||||
|
||||
@@ -4739,6 +4794,13 @@ begin
|
||||
c:=TabSheetPeriph.Components[i];
|
||||
composant(c,couleurfond,couleurTexte);
|
||||
end;
|
||||
|
||||
// avancé
|
||||
for i:=0 to TabAvance.ComponentCount-1 do
|
||||
begin
|
||||
c:=TabAvance.Components[i];
|
||||
composant(c,couleurfond,couleurTexte);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -4759,10 +4821,11 @@ begin
|
||||
end;
|
||||
|
||||
procedure TFormConfig.FormCreate(Sender: TObject);
|
||||
var i,j,y,l,LongestLength,PixelLength : integer;
|
||||
var i,j,x,y,l,LongestLength,PixelLength : integer;
|
||||
cs,s,LongestString : string;
|
||||
begin
|
||||
if debug=1 then Affiche('Création fenêtre config',clLime);
|
||||
|
||||
clicListe:=true;
|
||||
position:=poMainFormCenter;
|
||||
cs:='ColorA='+IntToHex(couleurFond,6); // pour rajouter aux couleurs personnalisées de la fenetre couleur
|
||||
@@ -5487,7 +5550,6 @@ begin
|
||||
// positionne une scrollbar dans la listbox - pour l'enlever, envoyer 0 dans pixelLength
|
||||
SendMessage(ListBoxSig.Handle,LB_SETHORIZONTALEXTENT,PixelLength,0);
|
||||
|
||||
|
||||
//comboBoxNation.Items.addObject('Française',Formprinc.Image9feux.Picture.Graphic);
|
||||
//comboBoxNation.Items.addObject('Belge',Formprinc.ImageSignal20.Picture.Graphic);
|
||||
//https://www.developpez.net/forums/d487670/environnements-developpement/delphi/composants-vcl/combobox-image-devant-ligne/
|
||||
@@ -5590,7 +5652,7 @@ begin
|
||||
cb2:=TCheckBox.Create(FormConfig.TabSheetPeriph);
|
||||
with cb2 do
|
||||
begin
|
||||
Left:=10;Top:=25;Width:=100;Height:=12;
|
||||
Left:=10;Top:=25;Width:=100;Height:=17;
|
||||
caption:='Détecteurs';
|
||||
name:='cbDet';
|
||||
parent:=gp1;
|
||||
@@ -5601,7 +5663,7 @@ begin
|
||||
cb3:=TCheckBox.Create(FormConfig.TabSheetPeriph);
|
||||
with cb3 do
|
||||
begin
|
||||
Left:=10;Top:=45;Width:=100;Height:=12;
|
||||
Left:=10;Top:=45;Width:=100;Height:=17;
|
||||
caption:='Actionneurs';
|
||||
name:='cbAct';
|
||||
parent:=gp1;
|
||||
@@ -5613,7 +5675,7 @@ begin
|
||||
cb1:=TCheckBox.Create(FormConfig.TabSheetPeriph);
|
||||
with cb1 do
|
||||
begin
|
||||
Left:=10;Top:=65;Width:=170;Height:=12;
|
||||
Left:=10;Top:=65;Width:=170;Height:=17;
|
||||
caption:='Aiguillages et accessoires';
|
||||
name:='cbAig';
|
||||
parent:=gp1;
|
||||
@@ -5700,7 +5762,7 @@ begin
|
||||
CheckBoxCR:=TCheckBox.Create(FormConfig.TabSheetPeriph);
|
||||
with CheckBoxCR do
|
||||
begin
|
||||
Left:=10;Top:=LabelPortCde.Top+30;width:=150;Height:=12;
|
||||
Left:=10;Top:=LabelPortCde.Top+30;width:=150;Height:=17;
|
||||
caption:='Envoyer CR (retour chariot)';
|
||||
name:='CheckBoxCR';
|
||||
parent:=GroupBoxDesc;
|
||||
@@ -5713,7 +5775,7 @@ begin
|
||||
with cbVis do
|
||||
begin
|
||||
parent:=groupBoxDesc;
|
||||
Left:=10;Top:=CheckBoxCR.top+20;Width:=100;Height:=12;
|
||||
Left:=10;Top:=CheckBoxCR.top+20;Width:=100;Height:=17;
|
||||
caption:='Mode visible';
|
||||
name:='cbVis';
|
||||
hint:='Affiche le texte à l''écran lors des envois';
|
||||
@@ -5728,7 +5790,7 @@ begin
|
||||
LabelStyle:=TLabel.Create(FormConfig.GroupBoxDivers);
|
||||
with LabelStyle do
|
||||
begin
|
||||
Left:=10;Top:=CheckBoxVerifXpressNet.top+24;Width:=170;Height:=12;
|
||||
Left:=10;Top:=130;Width:=170;Height:=12;
|
||||
caption:='Styles d''affichage';
|
||||
name:='LabelStyle';
|
||||
parent:=GroupBoxDivers;
|
||||
@@ -5756,7 +5818,6 @@ begin
|
||||
ComboStyle.Items.Add(s);
|
||||
|
||||
ComboStyle.itemIndex:=Style_Aff;
|
||||
|
||||
CheckBoxSombre.Visible:=false;
|
||||
ButtonCouleur.Visible:=false;
|
||||
|
||||
@@ -5765,6 +5826,172 @@ begin
|
||||
GroupBoxDivers.Height:=180;
|
||||
{$IFEND}
|
||||
|
||||
// onglet avancé
|
||||
LabelAvance1:=TLabel.Create(FormConfig.TabAvance);
|
||||
with LabelAvance1 do
|
||||
begin
|
||||
Left:=10;Top:=10;Width:=170;Height:=12;
|
||||
caption:='Paramètres avancés et experts';
|
||||
name:='LabelAvance1';
|
||||
Font.Style:=[fsBold];
|
||||
Font.Size:=10;
|
||||
parent:=TabAvance;
|
||||
end;
|
||||
|
||||
GroupBoxAvance:=TGroupBox.Create(FormConfig.TabAvance);
|
||||
with GroupBoxAvance do
|
||||
begin
|
||||
Left:=20;Top:=40;Width:=350;Height:=120; // maxi=580
|
||||
caption:='Jeu de paramètres avancés';
|
||||
name:='GroupBoxAvance';
|
||||
parent:=TabAvance;
|
||||
end;
|
||||
|
||||
x:=GroupBoxAvance.width-50;
|
||||
LabelTD:=TLabel.Create(FormConfig.TabAvance);
|
||||
with LabelTD do
|
||||
begin
|
||||
Left:=10;Top:=30;Width:=170;Height:=12;
|
||||
caption:='Seuil du nombre de détecteurs trop distants';
|
||||
name:='LabelTD';
|
||||
Font.Size:=9;
|
||||
parent:=GroupBoxAvance;
|
||||
end;
|
||||
EditNbDetDist:=TEdit.Create(FormConfig.TabAvance);
|
||||
with EditNbDetDist do
|
||||
begin
|
||||
Left:=x;Top:=28;Width:=30;Height:=15;
|
||||
name:='EditNbDetDist';
|
||||
text:='';
|
||||
parent:=GroupBoxAvance;
|
||||
hint:='Nombre de détecteurs considérés comme trop distants'+#13+
|
||||
'Cette valeur dépend de la taille du réseau';
|
||||
ShowHint:=true;
|
||||
end;
|
||||
|
||||
LabelNC:=TLabel.Create(FormConfig.TabAvance);
|
||||
with LabelNC do
|
||||
begin
|
||||
Left:=10;Top:=50;Width:=170;Height:=12;
|
||||
caption:='Nombre de cantons présence train avant signal';
|
||||
name:='LabelNC';
|
||||
parent:=GroupBoxAvance;
|
||||
end;
|
||||
EditNbCantons:=TEdit.Create(TabAvance);
|
||||
with EditNbCantons do
|
||||
begin
|
||||
Left:=x;Top:=48;Width:=30;Height:=15;
|
||||
name:='EditNbCantons';
|
||||
text:='';
|
||||
parent:=GroupBoxAvance;
|
||||
hint:='Nombre de cantons présence train avant un signal pour le déclarer verrouillé';
|
||||
ShowHint:=true;
|
||||
end;
|
||||
|
||||
LabelFiltre:=TLabel.Create(FormConfig.TabAvance);
|
||||
with LabelFiltre do
|
||||
begin
|
||||
Left:=10;Top:=70;Width:=170;Height:=12;
|
||||
caption:='Filtrage des détecteurs (x100 ms)';
|
||||
name:='LabelFiltre';
|
||||
parent:=GroupBoxAvance;
|
||||
end;
|
||||
EditFiltrDet:=TEdit.Create(TabAvance);
|
||||
with EditFiltrDet do
|
||||
begin
|
||||
Left:=x;Top:=68;Width:=30;Height:=15;
|
||||
name:='EditFiltrDet';
|
||||
text:='';
|
||||
parent:=GroupBoxAvance;
|
||||
hint:='Temps de filtrage des détecteurs qui passent à 0';
|
||||
ShowHint:=true;
|
||||
end;
|
||||
|
||||
LabelnCantonsRes:=TLabel.Create(FormConfig.TabAvance);
|
||||
with LabelnCantonsRes do
|
||||
begin
|
||||
Left:=10;Top:=90;Width:=170;Height:=12;
|
||||
caption:='Nombre de cantons à réserver en avant du train';
|
||||
name:='LabelnCantonsRes';
|
||||
parent:=GroupBoxAvance;
|
||||
end;
|
||||
EditnCantonsRes:=TEdit.Create(TabAvance);
|
||||
with EditnCantonsRes do
|
||||
begin
|
||||
Left:=x;Top:=88;Width:=30;Height:=15;
|
||||
name:='EditnCantonsRes';
|
||||
text:='';
|
||||
parent:=GroupBoxAvance;
|
||||
hint:='Nombre de cantons à réserver (1 à 5) en avant du train.'+#13+
|
||||
'Utilisé en mode roulage ou réservation [sous mode réservation par canton (ci-dessous)].'+#13+
|
||||
'Cette valeur dépend de la taille du réseau.';
|
||||
ShowHint:=true;
|
||||
end;
|
||||
|
||||
RadioReserve:=TRadioGroup.Create(TabAvance);
|
||||
with RadioReserve do
|
||||
begin
|
||||
Left:=20;Top:=GroupBoxAvance.top+GroupBoxAvance.Height+20;Width:=GroupBoxAvance.width;Height:=60;
|
||||
name:='RadioReserve';
|
||||
Caption:='Réservation des aiguillages';
|
||||
parent:=TabAvance;
|
||||
hint:='Choix du mode de réservation des aiguillages par les trains.'+#13+
|
||||
'La réservation des aiguillages est fonctionelle en mode roulage (mode autonome) ou en mode réservation';
|
||||
ShowHint:=true;
|
||||
items.Add('Réservation par canton');
|
||||
items.Add('Réservation par détecteurs');
|
||||
end;
|
||||
GroupBoxExpert:=TGroupBox.Create(FormConfig.TabAvance);
|
||||
with GroupBoxExpert do
|
||||
begin
|
||||
Left:=20;;Width:=350;Height:=100; // maxi=580
|
||||
Top:=RadioReserve.Top+RadioReserve.Height+20 ;
|
||||
caption:='Jeu de paramètres experts';
|
||||
name:='GroupBoxExpert';
|
||||
parent:=TabAvance;
|
||||
end;
|
||||
LabelAlgo:=TLabel.Create(FormConfig.TabAvance);
|
||||
with LabelAlgo do
|
||||
begin
|
||||
Left:=10;Top:=30;Width:=170;Height:=12;
|
||||
caption:='Algorithme de localisation des trains';
|
||||
name:='LabelAlgo';
|
||||
Font.Size:=9;
|
||||
parent:=GroupBoxExpert;
|
||||
end;
|
||||
EditAlgo:=TEdit.Create(FormConfig.TabAvance);
|
||||
with EditAlgo do
|
||||
begin
|
||||
Left:=x;Top:=28;Width:=30;Height:=15;
|
||||
name:='EditAlgo';
|
||||
text:='';
|
||||
parent:=GroupBoxExpert;
|
||||
hint:='Algorithme de localisation des trains';
|
||||
ShowHint:=true;
|
||||
end;
|
||||
|
||||
LabelNbSignBS:=TLabel.Create(FormConfig.TabAvance);
|
||||
with LabelNbSignBS do
|
||||
begin
|
||||
Left:=10;Top:=50;Width:=100;Height:=30;
|
||||
caption:='Nombre maxi d''éléments de recherche lors'+#13+'d''un signal dans le bon sens';
|
||||
name:='LabelNbSignBS';
|
||||
Font.Size:=9;
|
||||
wordwrap:=true;
|
||||
parent:=GroupBoxExpert;
|
||||
end;
|
||||
EditMaxSignalSens:=TEdit.Create(FormConfig.TabAvance);
|
||||
with EditMaxSignalSens do
|
||||
begin
|
||||
Left:=x;Top:=48;Width:=30;Height:=15;
|
||||
name:='EditMaxSignalSens';
|
||||
text:='';
|
||||
parent:=GroupBoxExpert;
|
||||
hint:='Nombre maxi d''éléments de recherche lors d''un signal dans le bon sens';
|
||||
ShowHint:=true;
|
||||
end;
|
||||
|
||||
// oui
|
||||
{if FileExists('Image_Signaux.jpg') then ImageSignaux.Picture.LoadFromFile('Image_Signaux.jpg')
|
||||
else
|
||||
Affiche('Manque fichier "Image_Signaux.jpg"',clOrange);
|
||||
@@ -5826,13 +6053,14 @@ begin
|
||||
B:='Z';
|
||||
end;
|
||||
|
||||
// Affiche les utilisateurs des périphériques en fonction de la sélection du périphérique
|
||||
// renvoie les utilisateurs des périphériques en fonction de la sélection du périphérique
|
||||
function utilisateurs_peripheriques : string;
|
||||
var i,j,n : integer;
|
||||
s : string;
|
||||
begin
|
||||
n:=0;
|
||||
s:='Périphérique '+intToSTR(ligneClicAccPeriph+1)+' : '+Tablo_periph[ligneClicAccPeriph+1].nom+#13;
|
||||
s:=s+'------------------------'+#13;
|
||||
for i:=1 to maxTablo_act do
|
||||
begin
|
||||
if tablo_actionneur[i].periph then
|
||||
@@ -5907,7 +6135,7 @@ procedure Aff_champs_aig_tablo(index : integer);
|
||||
var Adresse,Adr2,ind,id2,erreur,position : integer;
|
||||
tjd,tri,tjs,croi : boolean;
|
||||
s,ss : string;
|
||||
i : integer;
|
||||
i,vitesse : integer;
|
||||
begin
|
||||
if index<1 then exit;
|
||||
s:=Uppercase(formConfig.ListBoxAig.items[index-1]);
|
||||
@@ -6040,10 +6268,18 @@ begin
|
||||
|
||||
CheckInverse.checked:=aiguillage[Index_Aig(adresse)].inversionCDM=1;
|
||||
|
||||
if aiguillage[Index_Aig(adresse)].vitesse=0 then begin RadioButtonSans.checked:=true; RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end;
|
||||
if aiguillage[Index_Aig(adresse)].vitesse=30 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=true; RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end;
|
||||
if aiguillage[Index_Aig(adresse)].vitesse=40 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=true ;RadioButton60kmh.checked:=false;end;
|
||||
if aiguillage[Index_Aig(adresse)].vitesse=60 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=true;end;
|
||||
vitesse:=aiguillage[Index_Aig(adresse)].vitesse;
|
||||
EditSpecifique.text:=intToSTR(vitesse);
|
||||
if vitesse=0 then begin RadioButtonSans.checked:=true; RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end
|
||||
else
|
||||
if vitesse=30 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=true; RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end
|
||||
else
|
||||
if vitesse=60 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=true;end
|
||||
else
|
||||
begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=true ;RadioButton60kmh.checked:=false;
|
||||
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
if croi then
|
||||
@@ -6090,13 +6326,16 @@ begin
|
||||
|
||||
Label18.Visible:=false;
|
||||
CheckInverse.checked:=aiguillage[Index_Aig(adresse)].inversionCDM=1;
|
||||
if aiguillage[Index].vitesse=0 then begin RadioButtonSans.checked:=true;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end
|
||||
vitesse:=aiguillage[Index].vitesse;
|
||||
EditSpecifique.text:=intToSTR(vitesse);
|
||||
if vitesse=0 then begin RadioButtonSans.checked:=true;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end
|
||||
else
|
||||
if aiguillage[Index].vitesse=30 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=true;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end
|
||||
if vitesse=30 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=true;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=false;end
|
||||
else
|
||||
if aiguillage[Index].vitesse=60 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=true;end
|
||||
if vitesse=60 then begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=false;RadioButton60kmh.checked:=true;end
|
||||
else
|
||||
begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=true;RadioButton60kmh.checked:=false;end ;
|
||||
begin RadioButtonSans.checked:=false;RadioButton30kmh.checked:=false;RadioButtonSpecifique.checked:=true;RadioButton60kmh.checked:=false;
|
||||
end ;
|
||||
|
||||
EditPointe_BG.Text:=intToSTR(aiguillage[index].Apointe)+aiguillage[index].ApointeB;
|
||||
EditPointe_BG.Hint:=TypeElAIg_to_char(aiguillage[index].Apointe,aiguillage[index].ApointeB);
|
||||
@@ -6197,8 +6436,12 @@ begin
|
||||
GroupBox19.Height:=96;
|
||||
ButtonTestAct.Top:=GroupBox19.Top+GroupBox19.Height+8;
|
||||
|
||||
RadioGroup1.Width:=GroupBox18.width-15;
|
||||
RadioGroup1.Height:=74;
|
||||
with RadioGroupDecl do
|
||||
begin
|
||||
top:=GroupBox18.Top;
|
||||
Width:=GroupBox18.width-15;
|
||||
Height:=74;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@@ -237,6 +237,7 @@ begin
|
||||
FormTCO[indexTCO].EdittypeImage.Text:=IntToSTR(BImage);
|
||||
FormTCO[indexTCO].ComboRepr.ItemIndex:=tco[indexTCO,XclicCell[indexTCO],YclicCell[indexTCO]].repr;
|
||||
FormTCO[indexTCO].ShapeCoulFond.Brush.Color:=tco[indexTCO,XclicCell[indexTCO],YclicCell[indexTCO]].CouleurFond;
|
||||
FormTCO[indexTCO].CheckPinv.Checked:=tco[indextco,XclicCell[indexTCO],YclicCell[indexTCO]].inverse;
|
||||
|
||||
s:='El='+intToSTR(tco[indexTCO,XclicCell[indexTCO],YclicCell[indexTCO]].BImage);
|
||||
if tco[indexTCO,XclicCell[indexTCO],YclicCell[indexTCO]].adresse<>0 then s:=s+' Adr='+intToSTR(tco[indexTCO,XclicCell[indexTCO],YclicCell[indexTCO]].adresse);
|
||||
|
||||
@@ -98,6 +98,7 @@ uses UnitPrinc,unitconfig ;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
// icone exemple
|
||||
procedure icone_aig;
|
||||
var r : Trect;
|
||||
x1,y1,x2,y2,x3,y3,x4,y4 : integer;
|
||||
|
||||
+6
-6
@@ -1,6 +1,6 @@
|
||||
object FormPrinc: TFormPrinc
|
||||
Left = 113
|
||||
Top = 196
|
||||
Left = 114
|
||||
Top = 237
|
||||
Width = 1149
|
||||
Height = 699
|
||||
Anchors = [akLeft, akTop, akRight]
|
||||
@@ -18,8 +18,8 @@ object FormPrinc: TFormPrinc
|
||||
OnCreate = FormCreate
|
||||
OnResize = FormResize
|
||||
DesignSize = (
|
||||
1133
|
||||
641)
|
||||
1141
|
||||
648)
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object LabelTitre: TLabel
|
||||
@@ -1428,8 +1428,8 @@ object FormPrinc: TFormPrinc
|
||||
end
|
||||
object StatusBar1: TStatusBar
|
||||
Left = 0
|
||||
Top = 619
|
||||
Width = 1133
|
||||
Top = 626
|
||||
Width = 1141
|
||||
Height = 22
|
||||
Panels = <
|
||||
item
|
||||
|
||||
+290
-95
@@ -1,5 +1,5 @@
|
||||
Unit UnitPrinc;
|
||||
// 27/1 10
|
||||
// 09/2 10h
|
||||
(********************************************
|
||||
Programme signaux complexes Graphique Lenz
|
||||
Delphi 7 + activeX Tmscomm + clientSocket
|
||||
@@ -381,6 +381,7 @@ type
|
||||
procedure proc_checkBoxFB(Sender : Tobject);
|
||||
procedure proc_checkBoxFV(Sender : Tobject);
|
||||
procedure proc_checkBoxFR(Sender : Tobject);
|
||||
procedure procAide(Sender : Tobject);
|
||||
end;
|
||||
|
||||
|
||||
@@ -591,7 +592,7 @@ var
|
||||
FormPrinc: TFormPrinc;
|
||||
|
||||
Enregistrement,chaine_Envoi,chaine_recue,Id_CDM,Af,version_Interface,entete,suffixe,Lay,
|
||||
CheminProgrammes,cheminWin : string;
|
||||
CheminProgrammes,cheminWin,fichierAide : string;
|
||||
|
||||
Ancien_detecteur : array[0..NbMaxDet] of boolean; // anciens état des détecteurs et adresses des détecteurs et leur état
|
||||
detecteur : array[0..NbMaxDet] of // détecteurs indexés par l'adresse
|
||||
@@ -913,7 +914,11 @@ begin
|
||||
FormDebug.RichDebug.StyleName:='Windows';
|
||||
formDebug.MemoEvtDet.StyleName:='Windows';
|
||||
end;
|
||||
if formConfig<>nil then FormConfig.RichBranche.StyleName:='Windows';
|
||||
if formConfig<>nil then
|
||||
begin
|
||||
FormConfig.RichBranche.StyleName:='Windows';
|
||||
FormConfig.RichCdeDccpp.StyleName:='Windows';
|
||||
end;
|
||||
for i:=1 to NbreTCO do
|
||||
begin
|
||||
if FormTCO[i]<>nil then FormTCO[i].ScrollBox.StyleName:='Windows';
|
||||
@@ -1113,7 +1118,7 @@ procedure cercle(ACanvas : Tcanvas;x,y,rayon : integer;couleur : Tcolor);
|
||||
begin
|
||||
with Acanvas do
|
||||
begin
|
||||
//brush.Style:=bsSolid; &&&&
|
||||
//brush.Style:=bsSolid;
|
||||
brush.Color:=couleur;
|
||||
pen.Color:=clBlack;
|
||||
pen.Width:=1;
|
||||
@@ -2194,7 +2199,19 @@ begin
|
||||
until (i=0);
|
||||
end;
|
||||
|
||||
// trouve l'index d'un train par son nom
|
||||
function indexbrut_train_adresse(adr : integer) : integer;
|
||||
var i : integer;
|
||||
trouve : boolean;
|
||||
begin
|
||||
i:=1;
|
||||
repeat
|
||||
trouve:=TrainZone[i].adrTrain=adr;
|
||||
inc(i);
|
||||
until trouve or (i>MaxTrainZone);
|
||||
if trouve then result:=i-1 else result:=0;
|
||||
end;
|
||||
|
||||
// trouve l'index d'un train par son nom dans le tableau trains
|
||||
function index_train_nom(nom : string) : integer;
|
||||
var i : integer;
|
||||
trouve : boolean;
|
||||
@@ -5034,7 +5051,7 @@ begin
|
||||
// faire la réservation du canton
|
||||
if Signaux[i].Btype_suiv1<>det then detSuiv:=detecteur_suivant(detect,det,Signaux[i].Adr_el_suiv1,Signaux[i].Btype_suiv1,1)
|
||||
else detSuiv:=Signaux[i].Adr_el_suiv1;
|
||||
if detSuiv<9990 then reserve_canton(detect,detSuiv,Adrtrain,0,2);
|
||||
if detSuiv<9990 then reserve_canton(detect,detSuiv,Adrtrain,0,nCantonsRes);
|
||||
// démarrage d'un train
|
||||
j:=index_train_adresse(adrtrain);
|
||||
trains[j].tempoDemarre:=20; // armer la tempo à 2s
|
||||
@@ -5068,15 +5085,20 @@ begin
|
||||
Dessine_signal_mx(Signaux[i].Img.Canvas,0,0,1,1,adr,1);
|
||||
|
||||
// allume les feux du signal dans le TCO
|
||||
if TCOACtive then
|
||||
if TCOActive then
|
||||
begin
|
||||
for indexTCO:=1 to NbreTCO do
|
||||
begin
|
||||
if formTCO[indexTCO]<>nil then
|
||||
begin
|
||||
indexTCO:=1;
|
||||
for y:=1 to NbreCellY[indexTCO] do
|
||||
for x:=1 to NbreCellX[indexTCO] do
|
||||
begin
|
||||
if TCO[indexTCO,x,y].Bimage=Id_signal then
|
||||
begin
|
||||
adresse:=TCO[IndexTCO,x,y].adresse; // vérifie si le signal existe dans le TCO
|
||||
if adresse=adr then
|
||||
begin
|
||||
aspect:=Signaux[Index_Signal(adresse)].Aspect;
|
||||
case aspect of
|
||||
2 : ImageSignal:=Formprinc.Image2feux;
|
||||
@@ -5104,6 +5126,9 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// pilotage des signaux
|
||||
@@ -5367,7 +5392,7 @@ end;
|
||||
// 9998: arret sur aiguillage en talon mal positionnée
|
||||
// 9997: arrêt sur aiguillage dévié
|
||||
// 9996: arrêt sur position inconnue d'aiguillage
|
||||
// 9995: arrêt anormal sur buttoir
|
||||
// 9995: arrêt sur buttoir
|
||||
// 9994: arrêt sur aiguillage réservé
|
||||
// la variable "actuel" peut etre changée en cas de TJD!
|
||||
function suivant_alg3(prec : integer;typeELprec : TEquipement;actuel : integer;typeElActuel : TEquipement;alg : integer) : integer;
|
||||
@@ -6746,7 +6771,10 @@ begin
|
||||
Adr:=suivant_alg3(AdrPrec,BtypePrec,AdrFonc,BtypeFonc,2); // élément suivant mais arret sur aiguillage en talon mal positionnée
|
||||
end
|
||||
else
|
||||
begin Adr:=AdrFonc;TypeGen:=BtypeFonc;end;
|
||||
begin
|
||||
Adr:=AdrFonc;
|
||||
TypeGen:=BtypeFonc;
|
||||
end;
|
||||
if Adr>9990 then typeGen:=det;
|
||||
if (NivDebug=3) then AfficheDebug('trouvé '+intToSTR(Adr)+' '+BTypeToChaine(typeGen),clorange);
|
||||
AdrPrec:=AdrFonc;BtypePrec:=BtypeFonc;
|
||||
@@ -7157,6 +7185,7 @@ begin
|
||||
end;
|
||||
detecteur_suivant_El:=9999;exit;
|
||||
end;
|
||||
|
||||
IndexBranche_det2:=IndexBranche_trouve;
|
||||
branche_trouve_det2:=branche_trouve;
|
||||
j:=1; // J=1 test en incrément J=2 test en décrément
|
||||
@@ -7165,12 +7194,16 @@ begin
|
||||
|
||||
repeat
|
||||
//préparer les variables
|
||||
IdEl:=1;
|
||||
AdrPrec:=el1;TypePrec:=typeDet1;
|
||||
if j=1 then i1:=IndexBranche_det1+1;
|
||||
if j=2 then i1:=IndexBranche_det1-1;
|
||||
// les suivants dansla branche sont:
|
||||
AdrFonc:=BrancheN[branche_trouve_det1,i1].adresse;
|
||||
typeFonc:=BrancheN[branche_trouve_det1,i1].Btype ;
|
||||
typeFonc:=BrancheN[branche_trouve_det1,i1].Btype;
|
||||
IdEl:=1;
|
||||
elements[idEl].adresse:=adrFonc;
|
||||
elements[idEl].typ:=TypeFonc;
|
||||
|
||||
if NivDebug=3 then
|
||||
begin
|
||||
@@ -7190,7 +7223,6 @@ begin
|
||||
begin
|
||||
Adr:=9999;
|
||||
end;
|
||||
|
||||
//AfficheDebug('Sortie Alg3: '+IntToSTR(Adr)+'/'+intToSTR(typeGen),clyellow);
|
||||
if TypeGen=det then inc(N_Det);
|
||||
if NivDebug=3 then
|
||||
@@ -7221,6 +7253,10 @@ begin
|
||||
if (typeDet2=TypeGen) and (Adr=el2) and (N_Det<>Nb_det_dist) then
|
||||
begin
|
||||
if Nivdebug=3 then AfficheDebug('614 - Trouvé '+intToSTR(el2),clYellow);
|
||||
inc(idEl);
|
||||
elements[idEl].adresse:=el2;
|
||||
elements[idEl].typ:=Typedet2;
|
||||
|
||||
i:=0;
|
||||
repeat
|
||||
//AfficheDebug('Engage '+IntToSTR(AdrPrec)+','+IntToSTR(typePrec)+'/'+IntToSTR(AdrFonc)+','+IntToSTR(typeFonc),clyellow);
|
||||
@@ -7232,6 +7268,9 @@ begin
|
||||
s:='615 : trouvé='+intToSTR(Adr)+BTypeToChaine(typeGen);
|
||||
AfficheDebug(s,clorange);
|
||||
end;
|
||||
inc(idEl);
|
||||
elements[idEl].adresse:=adr;
|
||||
elements[idEl].typ:=TypeGen;
|
||||
|
||||
AdrPrec:=AdrFonc;TypePrec:=TypeFonc;
|
||||
AdrFonc:=Adr;TypeFonc:=typeGen;
|
||||
@@ -7712,7 +7751,7 @@ begin
|
||||
det_contigu(det2,det1,i,Typ);
|
||||
if i=0 then
|
||||
begin
|
||||
affiche('Erreur 65 : Signal_suivant_det('+intToSTR(det1)+','+intToSTR(det2)+') ne sont pas liés ',clred);
|
||||
//affiche('Erreur 65 : Signal_suivant_det('+intToSTR(det1)+','+intToSTR(det2)+') ne sont pas liés ',clred);
|
||||
signal_suivant_det:=0;
|
||||
exit;
|
||||
end;
|
||||
@@ -8146,7 +8185,8 @@ begin
|
||||
|
||||
end;
|
||||
|
||||
// renvoie vrai si une mémoire de zone est occupée après le signal "adresse" jusqu'au signal suivant (=canton)
|
||||
// renvoie vrai si une mémoire de zone est occupée après le signal "adresse" jusqu'au
|
||||
// nombre de signaux suivants défini par NSigMax=1, 2 ou 3.. (=canton)
|
||||
// sort de suite si on trouve un train
|
||||
// adresse=adresse du signal
|
||||
function test_memoire_zones(adresse : integer) : boolean;
|
||||
@@ -8276,7 +8316,7 @@ begin
|
||||
end;
|
||||
if (AdrSignal<>0) then // si l'adresse est <>0
|
||||
begin
|
||||
if (Signaux[isi].Adr_el_suiv1<>prec) then // le feu est-il dans le bon sens de progression?
|
||||
if (Signaux[isi].Adr_el_suiv1<>prec) then // le signal est-il dans le bon sens de progression?
|
||||
begin
|
||||
inc(NSignaux);
|
||||
j:=0;
|
||||
@@ -8486,7 +8526,7 @@ begin
|
||||
end;
|
||||
if (AdrSignal<>0) then // si l'adresse est <>0
|
||||
begin
|
||||
if (Signaux[ifd].Adr_el_suiv1=prec) then // le feu est-il dans le bon sens de progression?
|
||||
if (Signaux[ifd].Adr_el_suiv1=prec) then // le signal est-il dans le bon sens de progression?
|
||||
begin
|
||||
inc(Nsignaux);
|
||||
s:='Trouvé signal '+IntToSTR(AdrSignal);
|
||||
@@ -8512,7 +8552,7 @@ begin
|
||||
end;
|
||||
|
||||
// présence train précédent les n (NbCtSig) cantons du signal Adresse, dans le sens d'avance vers le signal.
|
||||
// detecteur=true si on doit contrôler aussi sur les détecteurs
|
||||
// detect=true si on doit contrôler aussi sur les détecteurs
|
||||
// renvoie vrai si présence train
|
||||
// dans AdrTrain: renvoie 0 si pas de train
|
||||
// si on est en mode AvecRESA, renvoie l'index du train
|
||||
@@ -8703,7 +8743,7 @@ begin
|
||||
end;
|
||||
if (AdrSignal<>0) then // si l'adresse est <>0
|
||||
begin
|
||||
if (Signaux[ifd].Adr_el_suiv1=prec) then // le feu est-il dans le bon sens de progression?
|
||||
if (Signaux[ifd].Adr_el_suiv1=prec) then // le signal est-il dans le bon sens de progression?
|
||||
begin
|
||||
inc(Nsignaux);
|
||||
j:=0;
|
||||
@@ -8893,8 +8933,8 @@ begin
|
||||
else detSuiv:=Signaux[index].Adr_el_suiv1;
|
||||
if detSuiv<9990 then
|
||||
begin
|
||||
if roulage then reserve_canton(Signaux[index].Adr_det1,detSuiv,AdrtrainLoc,0,2) else
|
||||
if AvecResa then reserve_canton(Signaux[index].Adr_det1,detSuiv,0,AdrtrainLoc,2) ;
|
||||
if roulage then reserve_canton(Signaux[index].Adr_det1,detSuiv,AdrtrainLoc,0,nCantonsRes) else
|
||||
if AvecResa then reserve_canton(Signaux[index].Adr_det1,detSuiv,0,AdrtrainLoc,nCantonsRes) ;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@@ -8990,7 +9030,7 @@ begin
|
||||
PresTrain:=false;
|
||||
// détecteurs précédent le signal , pour déterminer si leurs mémoires de zones sont à 1 pour libérer le carré
|
||||
//if (Signaux[index].VerrouCarre) and (modele>=4) then
|
||||
presTrain:=PresTrainPrec(AdrSignal,Nb_cantons_Sig,false,AdrTrainLoc,voie); //etape A // présence train par adresse train ; renvoie l'adresse du train dans AdrTrainLoc
|
||||
presTrain:=PresTrainPrec(AdrSignal,Nb_cantons_Sig,detect,AdrTrainLoc,voie); //etape A // présence train par adresse train ; renvoie l'adresse du train dans AdrTrainLoc
|
||||
if AffSignal and roulage then AfficheDebug('L''@ du train avant le signal est '+intToSTR(AdrTrainLoc),clYellow);
|
||||
// si le signal peut afficher un carré et les aiguillages après le signal sont mal positionnées ou aig réservé ou que pas présence train avant signal et signal
|
||||
// verrouillable au carré, afficher un carré
|
||||
@@ -9003,6 +9043,7 @@ begin
|
||||
car:=cond_carre(AdrSignal) or car;
|
||||
//if AffSignal and car then AfficheDebug('le signal a des aiguilles en talon aval mal positionnées',clYellow);
|
||||
if AffSignal and Signaux[index].VerrouCarre then AfficheDebug('le signal est verrouillé au carré',clYellow);
|
||||
|
||||
if (modele>=4) and ((not(PresTrain) and Signaux[index].Verroucarre) or car ) then Maj_Etat_Signal(AdrSignal,carre)
|
||||
else
|
||||
begin
|
||||
@@ -9041,7 +9082,7 @@ begin
|
||||
Affiche(s,clred);
|
||||
if AffSignal then AfficheDebug(s,clred);
|
||||
end;
|
||||
// si signal suivant affiche rappel ou rouge
|
||||
// si signal suivant affiche rappel ou rouge (etat=signal suivant)
|
||||
if TestBit(etat,rappel_60) or testBit(etat,rappel_30) or signal_rouge(AdrSignalSuivant)
|
||||
then Maj_Etat_Signal(AdrSignal,jaune)
|
||||
else
|
||||
@@ -9051,12 +9092,17 @@ begin
|
||||
begin
|
||||
Maj_Etat_Signal(AdrSignal,jaune_cli);
|
||||
//if AffSignal then AfficheDebug('400.Mise du signal au jaune cli',clyellow);
|
||||
end;
|
||||
end
|
||||
else
|
||||
//sinon si signal suivant=ral30 ou 60
|
||||
if TestBit(etat,ral_30) or TestBit(etat,ral_60) then
|
||||
begin
|
||||
Maj_Etat_Signal(AdrSignal,jaune_cli);
|
||||
end
|
||||
end;
|
||||
end
|
||||
else
|
||||
// aiguille locale non déviée ou aspect signal<9
|
||||
// si le signal suivant est rouge
|
||||
begin
|
||||
if AffSignal then AfficheDebug('pas d''aiguille déviée',clYellow);
|
||||
// effacer la signalisation combinée
|
||||
@@ -9097,7 +9143,7 @@ begin
|
||||
begin
|
||||
// si le signal suivant est jaune
|
||||
//if affsignal then AfficheDebug('test 404',clyellow);
|
||||
if TestBit(etat,jaune) then
|
||||
if TestBit(etat,jaune) or TestBit(etat,ral_30) or TestBit(etat,ral_60) then
|
||||
begin
|
||||
Maj_Etat_Signal(AdrSignal,jaune_cli);
|
||||
//if affsignal then AfficheDebug('401.Mise du feu au jaune cli',clyellow);
|
||||
@@ -9153,8 +9199,8 @@ begin
|
||||
else detSuiv:=Signaux[index].Adr_el_suiv1;
|
||||
if detSuiv<9990 then
|
||||
begin
|
||||
if roulage then reserve_canton(Signaux[index].Adr_det1,detSuiv,AdrtrainLoc,0,2) else
|
||||
if AvecResa then reserve_canton(Signaux[index].Adr_det1,detSuiv,0,AdrtrainLoc,2) ;
|
||||
if roulage then reserve_canton(Signaux[index].Adr_det1,detSuiv,AdrtrainLoc,0,nCantonsRes) else
|
||||
if AvecResa then reserve_canton(Signaux[index].Adr_det1,detSuiv,0,AdrtrainLoc,nCantonsRes) ;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@@ -9238,27 +9284,70 @@ begin
|
||||
// parcourir les éléments jusque detecteur2
|
||||
// oui, est-il dans le bon sens?
|
||||
succ:=suivant_alg3(actuel,typeAct,suiv,typSuiv,1);
|
||||
if (succ>9990) then
|
||||
begin
|
||||
Affiche('Erreur 154',clred);
|
||||
end;
|
||||
actuel:=suiv;typeact:=typSuiv;
|
||||
suiv:=succ;typSuiv:=typeGen;
|
||||
|
||||
inc(it);
|
||||
until (succ=det2) or (it>7);
|
||||
until (succ=det2) or (succ=0) or (it>Max_Signal_Sens);
|
||||
if debug=3 then formprinc.Caption:='';
|
||||
signal_sens:=succ=det2;
|
||||
end;
|
||||
|
||||
// libère la portion de det1 à detecteur2
|
||||
Procedure libere_detecteur(detecteur1,detecteur2 : integer);
|
||||
var i,j,det3 : integer;
|
||||
typ : tEquipement;
|
||||
begin
|
||||
if not(roulage) and not(avecResa) then exit;
|
||||
//if traceliste or ProcPrinc then
|
||||
Affiche('Libère_Detecteur '+intToSTR(detecteur1)+' '+intToSTR(detecteur2),clLime);
|
||||
if ProcPrinc then AfficheDebug('Libère_Detecteur '+intToSTR(detecteur1)+' '+intToSTR(detecteur2),clLime);
|
||||
det3:=detecteur_suivant_El(detecteur1,det,detecteur2,det,1); // arret sur suivant
|
||||
|
||||
if traceListe then AfficheDebug('Libération portion det '+IntToSTR(detecteur1)+' '+intToSTR(detecteur2)+' : ',clLime);
|
||||
for i:=1 to idEl do
|
||||
begin
|
||||
j:=elements[i].adresse;
|
||||
typ:=elements[i].typ;
|
||||
if (typ=Aig) or (typ=tjd) or (typ=tjs) or (typ=crois) or (typ=triple) then
|
||||
begin
|
||||
if traceListe then Affichedebug_Suivi(intToSTR(j)+' ',clLime);
|
||||
Aiguillage[index_aig(j)].AdrTrain:=0; // libère l'aiguillage
|
||||
end;
|
||||
end;
|
||||
Maj_Signaux(false);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
// libère le canton avant detecteur2 comportant un signal et le signal précédent
|
||||
// attention le détecteur 2 n'est pas forcément associé à un signal (et dans le bon sens)
|
||||
Procedure libere_canton(detecteur1,detecteur2 : integer);
|
||||
var sd2,i,j: integer;
|
||||
typ : tEquipement;
|
||||
begin
|
||||
if not(roulage) and not(avecResa) then exit;
|
||||
if traceliste or ProcPrinc then afficheDebug('Libère_canton '+intToSTR(detecteur1)+' '+intToSTR(detecteur2),clorange);
|
||||
// mode_reserve 0 = par canton - 1=par détecteurs
|
||||
if mode_reserve=1 then
|
||||
begin
|
||||
libere_detecteur(detecteur1,detecteur2);
|
||||
exit;
|
||||
end;
|
||||
|
||||
if not(roulage) and not(avecResa) then exit;
|
||||
//if traceliste or ProcPrinc then
|
||||
affiche('Libère_canton '+intToSTR(detecteur1)+' '+intToSTR(detecteur2),clLime);
|
||||
if ProcPrinc then AfficheDebug('Libère_Canton '+intToSTR(detecteur1)+' '+intToSTR(detecteur2),clLime);
|
||||
// est-on en limite de canton du detecteur 2 pour le libérer?
|
||||
sd2:=signal_detecteur(detecteur2); // trouve le signal associé au detecteur2
|
||||
if sd2=0 then exit; // pas de signal associé
|
||||
|
||||
if sd2=0 then
|
||||
begin
|
||||
if traceliste then affiche('le détecteur '+intToSTR(detecteur2)+' n''est pas pas associé à un signal - pas de libération du canton',clorange);
|
||||
exit; // pas de signal associé
|
||||
end;
|
||||
// ce signal sd2 est il dans le bon sens
|
||||
i:=signal_suivant_det(detecteur1,detecteur2); // adresse du signal dans le bon sens associé au détecteur
|
||||
if i<>sd2 then exit;
|
||||
@@ -9280,6 +9369,35 @@ begin
|
||||
Maj_Signaux(false);
|
||||
end;
|
||||
|
||||
// reserve les aiguillages du det1 au det2 et au suivant de det2
|
||||
procedure reserve_detecteur(det1,det2,adrTrain,NumTrain : integer);
|
||||
var det3,i,j : integer;
|
||||
typ : tEQuipement;
|
||||
begin
|
||||
det3:=detecteur_suivant_El(det1,det,det2,det,1);
|
||||
Affiche('Réserve détecteur '+intToSTR(det1)+' '+intToSTR(det2)+' '+intToSTR(det3),clYellow);
|
||||
for i:=1 to idEl do
|
||||
begin
|
||||
j:=elements[i].adresse;
|
||||
//Affiche(intToSTR(j),clOrange);
|
||||
typ:=elements[i].typ;
|
||||
if (typ=Aig) or (typ=tjd) or (typ=tjs) or (typ=crois) or (typ=triple) then
|
||||
begin
|
||||
if TraceListe then AfficheDebug_Suivi(intToSTR(j)+' ',clOrange);
|
||||
if AvecResa then
|
||||
begin
|
||||
if (Aiguillage[index_aig(j)].AdrTrain=0) then Aiguillage[index_aig(j)].AdrTrain:=numtrain;
|
||||
end;
|
||||
if roulage then
|
||||
begin
|
||||
if (Aiguillage[index_aig(j)].AdrTrain)=0 then Aiguillage[index_aig(j)].AdrTrain:=AdrTrain;
|
||||
end;
|
||||
Texte_aig_fond(j);
|
||||
end;
|
||||
end;
|
||||
Maj_Signaux(false); //sans_Maj
|
||||
end;
|
||||
|
||||
|
||||
// réserve le nombre de cantons "nCantons" du detecteur1 (non compris) équipé du signal ou le prochain suivant si le signal n'est pas au rouge
|
||||
// la réservation consiste à marquer un aiguillage avec l'adresse du train "adrTrain" ou "NumTrain"
|
||||
@@ -9293,12 +9411,13 @@ var nc,AdrSig,i,j,etat,etatSuiv,AdrSignalsuivant : integer;
|
||||
s : string;
|
||||
begin
|
||||
if not(roulage) and not(avecResa) then exit;
|
||||
if traceliste or ProcPrinc then
|
||||
|
||||
begin
|
||||
s:='Réservation '+intToSTR(nCantons)+' cantons après détecteur '+intToSTR(detecteur1)+' '+intToSTR(detecteur2)+' pour train ';
|
||||
if roulage then s:=s+'@'+intToSTR(adrtrain)
|
||||
else if avecResa then s:=s+intToSTR(NumTrain);
|
||||
afficheDebug(s,clorange);
|
||||
if traceliste or ProcPrinc then afficheDebug(s,clorange);
|
||||
Affiche(s,ClOrange);
|
||||
end;
|
||||
|
||||
if (detecteur1>NbMaxDet) or (detecteur2>NbMaxDet) then
|
||||
@@ -9307,6 +9426,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
idEl:=0;
|
||||
// y a t-il un signal sur le détecteur1
|
||||
cas2:=false;
|
||||
|
||||
@@ -9314,12 +9434,32 @@ begin
|
||||
if adrSig<>0 then
|
||||
begin
|
||||
// si le signal est dans le bon sens
|
||||
if signal_sens(AdrSig,detecteur1,detecteur2) then cas2:=true; // oui
|
||||
if signal_sens(AdrSig,detecteur1,detecteur2) then
|
||||
begin
|
||||
cas2:=true; // oui
|
||||
if TraceListe then AfficheDebug('Trouvé signal '+intToSTR(adrSig)+' dans bon sens',clYellow);
|
||||
end
|
||||
else if TraceListe then AfficheDebug('Trouvé signal '+intToSTR(adrSig)+' dans mauvais sens',clYellow);
|
||||
end;
|
||||
|
||||
if not(cas2) then AdrSig:=signal_suivant_det(detecteur1,detecteur2); // signal suivant dans le bon sens
|
||||
|
||||
if traceListe then afficheDebug('Le signal est '+intToSTR(AdrSig)+' ',clyellow);
|
||||
|
||||
// pas de signal !!
|
||||
if adrSig=0 then
|
||||
begin
|
||||
//Affiche('Absence de signal après '+intToSTR(detecteur2)+', réservation pour train @'+intToStr(AdrTrain)+' '+intToSTR(detecteur1)+' '+intToSTR(detecteur2)+' impossible',clred);
|
||||
i:=indexbrut_train_adresse(AdrTrain); // numéro de train
|
||||
if i<>0 then
|
||||
begin
|
||||
reserve_detecteur(detecteur1,detecteur2,adrTrain,i);
|
||||
end;
|
||||
|
||||
exit;
|
||||
|
||||
end;
|
||||
|
||||
etat:=Signaux[Index_Signal(AdrSig)].etatSignal;
|
||||
rouge:=signal_rouge(AdrSig);
|
||||
if rouge then
|
||||
@@ -9413,7 +9553,7 @@ begin
|
||||
inc(nc);
|
||||
until (nc>Ncantons);
|
||||
|
||||
Maj_Signaux(false);
|
||||
Maj_Signaux(false); // sans_maj
|
||||
end;
|
||||
|
||||
// pilote le train sur le détecteur det2, d'adresse adrtrain
|
||||
@@ -9427,6 +9567,7 @@ var entree_signal,jauneC,rappel30C,rappel60C,rouge : boolean;
|
||||
s : string;
|
||||
begin
|
||||
if not(roulage) or (adrtrain=0) then exit;
|
||||
Affiche('Pilote train '+intToSTR(det1)+' '+intToSTR(det2),clYellow);
|
||||
i:=index_signal_det(det2,voie,i2); // index du signal associé au det2 j:=signal_detecteur(det3);
|
||||
if i=0 then exit;
|
||||
|
||||
@@ -9434,7 +9575,7 @@ begin
|
||||
couleur:=CouleurTrain[i2];
|
||||
index_train:=index_train_adresse(adrTrain); // index du tableau trains
|
||||
|
||||
adresse:=Signaux[i].adresse; //voir si il est dans le bon sens
|
||||
adresse:=Signaux[i].adresse; // voir si il est dans le bon sens
|
||||
|
||||
adresse2:=signal_suivant_det(det1,det2); // renvoie le signal suivant dans le sens det1 det2
|
||||
if adresse<>adresse2 then exit; // non pas dans le bon sens
|
||||
@@ -9604,7 +9745,7 @@ begin
|
||||
begin
|
||||
if adrsuiv=9996 then affiche_evt('Erreur position inconnue aiguillage ',clred)
|
||||
else
|
||||
Affiche_evt('Erreur 1-0 '+intToSTR(AdrSuiv)+' : pas de suivant detecteur_suivant_el '+intToSTR(det1)+' '+intToSTR(det3),clred);
|
||||
Affiche_evt('Info 1-0 '+intToSTR(AdrSuiv)+' : pas de suivant detecteur_suivant_el '+intToSTR(det1)+' '+intToSTR(det3),clWhite);
|
||||
exit;
|
||||
end;
|
||||
|
||||
@@ -9646,12 +9787,12 @@ begin
|
||||
AdrTrain:=AdrTrainLoc
|
||||
end;
|
||||
end;
|
||||
reserve_canton(det3,AdrSuiv,AdrTrainLoc,i,2); // si feu réserve canton courant
|
||||
reserve_canton(det3,AdrSuiv,AdrTrainLoc,i,nCantonsRes); // si feu réserve canton courant
|
||||
libere_canton(det1,det3); // on quitte det3
|
||||
Maj_Signaux(false);
|
||||
Maj_Signaux(false);
|
||||
det4:=detecteur_suivant_EL(det3,det,AdrSuiv,det,1);
|
||||
if det4<9990 then reserve_canton(AdrSuiv,det4,AdrTrainLoc,i,2) // réserve canton suivant après maj signaux
|
||||
if det4<9990 then reserve_canton(AdrSuiv,det4,AdrTrainLoc,i,nCantonsRes) // réserve canton suivant après maj signaux
|
||||
else Affiche_evt('Réservation canton après '+intToSTR(det3)+' '+intToSTR(ADrSuiv)+' impossible (pos? aig)',clOrange);
|
||||
|
||||
event_act(det1,det3,1,''); // évènement actionneur
|
||||
@@ -9716,7 +9857,8 @@ begin
|
||||
until (j>6) or trouve;
|
||||
dec(j);
|
||||
//si début de démarrage train i
|
||||
if trouve and (TrainZone[i].Nbre=0) and (det1<NbMaxDet) and (det3<NbMaxDet) then
|
||||
//if trouve and (TrainZone[i].Nbre=0) and (det1<NbMaxDet) and (det3<NbMaxDet) then
|
||||
if (TrainZone[i].Nbre=0) and (det1<NbMaxDet) and (det3<NbMaxDet) then
|
||||
begin
|
||||
//Affiche('on a trouvé le train '+intToSTR(j),clYellow);
|
||||
detecteur[det3].train:=train_ch; // affecter le nom du train au détecteur
|
||||
@@ -9735,7 +9877,7 @@ begin
|
||||
|
||||
// test si on peut réserver le canton suivant
|
||||
det_suiv:=det_suiv_cont(det1,det3,1);
|
||||
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc,i,2) else
|
||||
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc,i,nCantonsRes) else
|
||||
begin
|
||||
if det_suiv=9996 then affiche_evt('Erreur 1-1 position inconnue aiguillage ',clred)
|
||||
else Affiche_evt('Erreur 1-1 '+intToSTR(Det_Suiv)+' : pas de suivant detecteur_suivant_el '+intToSTR(det1)+' '+intToSTR(det3),clred);
|
||||
@@ -9756,8 +9898,8 @@ begin
|
||||
end;
|
||||
|
||||
pilote_train(det1,det3,adrtrainLoc,i); // pilote le train sur det3
|
||||
//event_act(det1,det3,1,''); // activation zone
|
||||
|
||||
event_act(det1,det3,1,''); // activation zone
|
||||
maj_signaux(false);
|
||||
// actualiser le signal du det3
|
||||
j:=signal_detecteur(det3);
|
||||
if j<>0 then Maj_Signal_P(j,false);
|
||||
@@ -9856,17 +9998,17 @@ begin
|
||||
|
||||
libere_canton(det2,det3);
|
||||
|
||||
reserve_canton(det3,AdrSuiv,adrTrainLoc,i,2);
|
||||
reserve_canton(det3,AdrSuiv,adrTrainLoc,i,nCantonsRes);
|
||||
det4:=detecteur_suivant_EL(det3,det,AdrSuiv,det,1);
|
||||
if det4>9990 then
|
||||
begin
|
||||
if det4=9996 then affiche_evt('Erreur 2-0 position inconnue aiguillage ',clred)
|
||||
else Affiche_evt('Erreur 2-0 '+intToSTR(Det4)+' : pas de suivant detecteur_suivant_el '+intToSTR(det3)+' '+intToSTR(AdrSuiv),clred);
|
||||
if det4=9996 then affiche_evt('Erreur: 2-0 position inconnue aiguillage ',clred)
|
||||
else Affiche_evt('Info: 2-0 '+intToSTR(Det4)+' : pas de suivant detecteur_suivant_el '+intToSTR(det3)+' '+intToSTR(AdrSuiv),clyellow);
|
||||
end
|
||||
else
|
||||
reserve_canton(AdrSuiv,det4,adrTrainLoc,i,2);
|
||||
reserve_canton(AdrSuiv,det4,adrTrainLoc,i,nCantonsRes);
|
||||
|
||||
Maj_Signaux(false);
|
||||
//Maj_Signaux(false); sans_maj
|
||||
// stockage dans historique de zones
|
||||
if i<MaxTrainZone then
|
||||
begin
|
||||
@@ -9978,7 +10120,6 @@ begin
|
||||
begin
|
||||
//*** route validée ***
|
||||
// on ne dévalide pas la zone précédente car sinon ne marche pas quand 2 trains se suivent
|
||||
|
||||
MemZone[det2,det3].etat:=TRUE; // valide la nouvelle zone
|
||||
MemZone[det3,det2].etat:=False; // on dévalide la zone inverse
|
||||
Train_ch:=MemZone[det2,det3].train;
|
||||
@@ -9998,7 +10139,7 @@ begin
|
||||
pilote_train(det2,det3,adrtrainLoc,i); // pilote le train sur det3
|
||||
// test si on peut réserver le canton suivant
|
||||
det_suiv:=det_suiv_cont(det2,det3,1);
|
||||
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc,i,2)
|
||||
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc,i,nCantonsRes)
|
||||
else
|
||||
begin
|
||||
if det_suiv=9996 then affiche_evt('Erreur 2-0 position inconnue aiguillage ',clred)
|
||||
@@ -10050,7 +10191,27 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
if TraceListe then AfficheDebug('La route est invalide car les détecteurs '+intToSTR(det2)+' '+intToSTR(det3)+' ne sont pas contigus',clOrange);
|
||||
if (det1=det3) and false then
|
||||
begin
|
||||
s:='Demi-tour train '+intToSTR(i);
|
||||
if TraceListe then AfficheDebug(s,clOrange);
|
||||
Affiche_evt(s,clOrange);
|
||||
MemZone[det2,det_Suiv].etat:=false;
|
||||
MemZone[det2,det3].etat:=true;
|
||||
efface_trajet(det2,i);
|
||||
with event_det_train[i] do
|
||||
begin
|
||||
det[1].adresse:=det_suiv;
|
||||
det[1].etat:=false;
|
||||
det[2].adresse:=det2;
|
||||
det[2].etat:=false;
|
||||
NbEl:=2;
|
||||
end;
|
||||
|
||||
end
|
||||
else
|
||||
begin
|
||||
if TraceListe then AfficheDebug('La route est invalide car les détecteurs '+intToSTR(det1)+' '+intToSTR(det2)+' n''ont pas le '+intToSTR(det3)+' attendu',clOrange);
|
||||
s:='2-1 Train n°'+intToSTR(i)+' Route nok de '+intToSTR(det2)+' à '+IntToSTR(det3);
|
||||
Affiche_evt(s,couleur);
|
||||
for tco:=1 to nbreTCO do
|
||||
@@ -10058,17 +10219,7 @@ begin
|
||||
// désactivation du morceau avant l'aiguillage
|
||||
efface_trajet(det3,i);
|
||||
end;
|
||||
|
||||
//if rebond and (event_det_train[i].det[2].adresse=det3) then
|
||||
//begin
|
||||
// s:='7. Rebond dét. '+intToSTR(det3)+' déjà affecté au train '+IntToSTR(i);
|
||||
// FormDebug.MemoEvtDet.lines.add(s);
|
||||
// if dupliqueEvt then AfficheDebug(s,clyellow);
|
||||
// désaffecter la zone
|
||||
// memzone[det2,det_suiv].etat:=false;
|
||||
// memZone[det1,det2].etat:=true;
|
||||
// exit; // rebond :sortir
|
||||
//end;
|
||||
end;
|
||||
end;
|
||||
traite:=true; // non traité: train suivant
|
||||
end;
|
||||
@@ -10079,10 +10230,10 @@ begin
|
||||
|
||||
if etat then
|
||||
begin
|
||||
Maj_Signaux(true); // les autres signaux , avec détecteurs
|
||||
Maj_Signaux(false); // les autres signaux , avec détecteurs
|
||||
// mettre à jour le feu du détecteur
|
||||
i2:=signal_detecteur(det3); // trouve le signal associé au detecteur2
|
||||
if i2<>0 then Maj_Signal_P(i2,true); // avec détecteur
|
||||
if i2<>0 then Maj_Signal_P(i2,false); // avec détecteur
|
||||
|
||||
for i:=1 to N_trains do
|
||||
begin
|
||||
@@ -10111,7 +10262,7 @@ begin
|
||||
pilote_train(i2,det3,adrtrainLoc,i); // pilote le train sur det3
|
||||
// test si on peut réserver le canton suivant
|
||||
det_suiv:=det_suiv_cont(i2,det3,1);
|
||||
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc,i,2);
|
||||
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc,i,nCantonsRes);
|
||||
// libère canton
|
||||
libere_canton(i2,det3);
|
||||
exit;
|
||||
@@ -10203,6 +10354,7 @@ begin
|
||||
AfficheDebug('0-0 Création train '+intToStr(N_trains)+' '+detecteur[det3].train+'--------',clyellow);
|
||||
AfficheDebug(s,clyellow);
|
||||
end;
|
||||
Maj_Signaux(false);
|
||||
exit;
|
||||
end;
|
||||
|
||||
@@ -12721,15 +12873,7 @@ begin
|
||||
if TCOActive then affiche_TCO(index);
|
||||
end;
|
||||
|
||||
{ ralentit au démarrage
|
||||
for i:=1 to NbreFeux do
|
||||
begin
|
||||
typeFeu:=Signaux[i].aspect;
|
||||
if TypeFeu=2 then Signaux[i].EtatSignal:=violet_F;
|
||||
if TypeFeu=3 then Signaux[i].EtatSignal:=semaphore_F;
|
||||
if (TypeFeu>3) and (TypeFeu<10) then Signaux[i].EtatSignal:=carre_F;
|
||||
envoi_signal(Signaux[i].adresse);
|
||||
end; }
|
||||
Maj_signaux(false);
|
||||
end;
|
||||
|
||||
// positionnement des aiguillages au démarrage : seulement en mode autonome
|
||||
@@ -13066,15 +13210,34 @@ begin
|
||||
result:=Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
|
||||
end;
|
||||
|
||||
procedure Tformprinc.procAide(Sender : Tobject);
|
||||
var i : integer;
|
||||
begin
|
||||
i:=ShellExecute(Formprinc.Handle,'open',
|
||||
Pchar(FichierAide),
|
||||
nil, // paramètre
|
||||
nil // répertoire
|
||||
,SW_SHOWNORMAL);
|
||||
if i<=32 then Affiche('Impossible d''afficher l''aide '+FichierAide,clred);
|
||||
end;
|
||||
|
||||
// démarrage principal du programme signaux_complexes
|
||||
procedure TFormPrinc.FormCreate(Sender: TObject);
|
||||
var n,t,i,index,OrgMilieu : integer;
|
||||
s : string;
|
||||
trouve : boolean;
|
||||
Sr : TSearchRec;
|
||||
tmP,tmA : tMenuItem;
|
||||
begin
|
||||
af:='Client TCP-IP ou USB CDM Rail - système XpressNet DCC++ Version '+Version+sousVersion;
|
||||
{$IF CompilerVersion >= 28.0}
|
||||
af:=af+' D11';
|
||||
{$IFEND}
|
||||
for index:=1 to 10 do
|
||||
begin
|
||||
formTCO[index]:=nil;
|
||||
end;
|
||||
|
||||
Caption:=af;
|
||||
TraceSign:=True;
|
||||
configPrete:=false; // form config prete
|
||||
@@ -13082,6 +13245,8 @@ begin
|
||||
sauve_tco:=false;
|
||||
pasChgTBV:=false;
|
||||
ntrains:=0;
|
||||
|
||||
mode_reserve:=0; // mode_reserve 0 = par canton - 1=par détecteurs
|
||||
ntrains_cdm:=0;
|
||||
protocole:=1;
|
||||
filtrageDet0:=3;
|
||||
@@ -13132,8 +13297,10 @@ begin
|
||||
affevt:=false;
|
||||
EvtClicDet:=false;
|
||||
Algo_localisation:=1; // normal
|
||||
nCantonsRes:=2;
|
||||
AntiTimeoutEthLenz:=0;
|
||||
Verif_AdrXpressNet:=1;
|
||||
Max_Signal_Sens:=5;
|
||||
portServeur:=4500;
|
||||
avecRoulage:=0;
|
||||
formatY:=-1;
|
||||
@@ -13144,7 +13311,6 @@ begin
|
||||
Diffusion:=AvecInit; // mode diffusion publique + debug mise au point etc
|
||||
roulage1.visible:=false;
|
||||
FenRich.MaxLength:=$7FFFFFF0;
|
||||
|
||||
NbDecodeur:= 11;
|
||||
NbDecodeurdeBase:=NbDecodeur;
|
||||
Decodeur[0]:='Rien';Decodeur[1]:='Digital Bahn';Decodeur[2]:='CDF';Decodeur[3]:='LS-DEC-SNCF';Decodeur[4]:='LEB';
|
||||
@@ -13165,6 +13331,39 @@ begin
|
||||
cheminWin:=GetCurrentProcessEnvVar('windir')+'\System32';
|
||||
end;
|
||||
|
||||
//DirList:=TStringList.Create;
|
||||
if FindFirst(chemin_dest+ '*.*', faAnyFile, SR) = 0 then
|
||||
begin
|
||||
repeat
|
||||
s:=sr.Name;
|
||||
if (s<>'.') and (s<>'..') then
|
||||
begin
|
||||
FichierAide:=lowercase(SR.Name);
|
||||
trouve:=pos('.pdf',FichierAide)<>0;
|
||||
end;
|
||||
until (FindNext(sr)<>0) or (trouve);
|
||||
FindClose(sr);
|
||||
end;
|
||||
if trouve then
|
||||
begin
|
||||
// menu principal
|
||||
tmP:=TmenuItem.Create(MainMenu1);
|
||||
tmP.Caption:='Aide';
|
||||
tmP.Name:='MiAide';
|
||||
tmP.Hint:=FichierAide;
|
||||
MainMenu1.items.Add(tmP);
|
||||
|
||||
// 1ere entrée
|
||||
i:=MainMenu1.Items.Count;
|
||||
tmA:=TmenuItem.Create(MainMenu1);
|
||||
tmA.Caption:='Fichier d''aide';
|
||||
tmA.Name:='MiAidePDF';
|
||||
tmA.Hint:=FichierAide;
|
||||
MainMenu1.Items[i-1].Add(tmA);
|
||||
|
||||
MainMenu1.Items[i-1].Items[0].OnClick:=ProcAide;
|
||||
end;
|
||||
|
||||
// vérifier ocx tmscomm
|
||||
i:=filesize(cheminwin+'\mscomm32.ocx');
|
||||
if (i<>103744) and (i<>-1) then Affiche('Version fichier '+cheminwin+'\mscomm32.ocx incorrecte',clred);
|
||||
@@ -13346,10 +13545,6 @@ begin
|
||||
positionne_elements(PosSplitter);
|
||||
end;
|
||||
|
||||
for index:=1 to 10 do
|
||||
begin
|
||||
formTCO[index]:=nil;
|
||||
end;
|
||||
|
||||
// positionnement de la fenêtre principale
|
||||
show;
|
||||
@@ -13465,19 +13660,15 @@ begin
|
||||
begin
|
||||
if maxaiguillage>0 then
|
||||
begin
|
||||
Affiche('Positionnement des aiguillages',clYellow);
|
||||
Affiche('Positionnement des aiguillages',clcyan);
|
||||
init_aiguillages; // initialisation des aiguillages
|
||||
end;
|
||||
if NbreSignaux>0 then
|
||||
begin
|
||||
Affiche('Positionnement des signaux',clyellow);
|
||||
envoi_signauxCplx; // initialisation des signaux
|
||||
end;
|
||||
end;
|
||||
|
||||
if not(AvecInitAiguillages) and not(ferme) and (parSocketLenz or portCommOuvert)
|
||||
and AvecDemandeAiguillages then
|
||||
begin
|
||||
procetape('demande etats accessoires');
|
||||
procetape('Demande etats accessoires');
|
||||
demande_etat_acc; // demande l'état des accessoires (position des aiguillages)
|
||||
end;
|
||||
//Menu_interface(valide);
|
||||
@@ -15658,9 +15849,9 @@ begin
|
||||
end;
|
||||
end;
|
||||
Affiche('Liste des zones actuellement occupées:',clWhite);
|
||||
i:=1;
|
||||
i:=0;
|
||||
repeat
|
||||
j:=1;
|
||||
j:=0;
|
||||
repeat
|
||||
aff:=MemZone[i,j].etat;
|
||||
if aff then
|
||||
@@ -16079,7 +16270,6 @@ end;
|
||||
procedure TFormPrinc.TrackBarVitChange(Sender: TObject);
|
||||
var s : string;
|
||||
i,adr,vit,erreur : integer;
|
||||
sens : boolean;
|
||||
begin
|
||||
if affEvt then Affiche('Changement TrackBarVit',clyellow);
|
||||
if pasChgTBV then exit;
|
||||
@@ -16099,9 +16289,10 @@ begin
|
||||
end;
|
||||
|
||||
//Affiche('Commande vitesse train '+s+' ('+intToSTR(adr)+') à '+IntToSTR(vit)+'%',cllime);
|
||||
sens:=vit>0;
|
||||
vitesse_loco(s,i,adr,vit,sens,true);
|
||||
if s='' then s:=intToSTR(adr);
|
||||
// ne pas commander la vitesse car la rétro met à jour la track bar!!!
|
||||
//sens:=vit>0;
|
||||
//vitesse_loco(s,i,adr,vit,sens,true);
|
||||
//if s='' then s:=intToSTR(adr);
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.EditVitesseChange(Sender: TObject);
|
||||
@@ -16318,10 +16509,13 @@ begin
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.RazResaClick(Sender: TObject);
|
||||
var i : integer;
|
||||
begin
|
||||
Affiche('Mise à 0 de la réservation des aiguillages',clYellow);
|
||||
Raz_reservations;
|
||||
Maj_Signaux(false);
|
||||
//Maj_Signaux(false);
|
||||
for i:=1 to nbreTCO do
|
||||
Affiche_tco(i);
|
||||
end;
|
||||
|
||||
procedure TFormPrinc.SBMarcheArretLocoClick(Sender: TObject);
|
||||
@@ -17530,7 +17724,8 @@ begin
|
||||
if n>1 then affiche(intToSTR(n)+' clients connectés',clyellow);
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
end.
|
||||
end.
|
||||
|
||||
|
||||
|
||||
+14
-3
@@ -556,7 +556,7 @@ var
|
||||
OldBmp : TBitMap;
|
||||
PScrollBoxTCO : TScrollBox;
|
||||
|
||||
// liste des variables par tco
|
||||
// liste des variables par tco de 1 à 10
|
||||
largeurCelld2,HauteurCelld2,NbCellulesTCO,NbreCellX,NbreCellY,LargeurCell,HauteurCell,
|
||||
Xentoure,Yentoure,XclicCell,YclicCell,EcranTCO,clGrille,clFond,ClAllume,ClVoies,
|
||||
ClCanton,clPiedSignal,ClQuai,ClBarriere,ZoomInit,Xinit,Yinit : array[1..10] of integer;
|
||||
@@ -8485,16 +8485,20 @@ begin
|
||||
2 : yt:=hauteurCell[indexTCO]-round(17*fryGlob[indexTCO]); // bas
|
||||
end; }
|
||||
|
||||
|
||||
begin
|
||||
i:=detecteur[adresse].AdrTrain;
|
||||
if i<>0 then
|
||||
begin
|
||||
i:=index_train_adresse(i);
|
||||
i:=index_train_adresse(i); // trouve le nom du train par son adresse
|
||||
if i<>0 then s:=s+' '+trains[i].nom_train;
|
||||
end;
|
||||
end
|
||||
else if roulage then s:=s+' ';
|
||||
//PCanvasTCO[indexTCO].font.Size:=(LargeurCell[indexTCO] div 13)+4 ;
|
||||
TextOut(xOrg+xt,Yorg+yt,s+' ');
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// autres détecteurs
|
||||
if ((Bimage=7) or (Bimage=8) or (Bimage=9) or (Bimage=10) or (Bimage=17) ) and (adresse<>0) then
|
||||
@@ -8966,6 +8970,12 @@ procedure efface_trajet(det,train : integer);
|
||||
var i,j,t,n,Bimage,x,y : integer;
|
||||
trouve : boolean;
|
||||
begin
|
||||
if Train>Max_Trains then
|
||||
begin
|
||||
Affiche('Erreur 85: paramètre maximal train atteint',clred);
|
||||
exit;
|
||||
end;
|
||||
|
||||
for t:=1 to NbreTCO do
|
||||
begin
|
||||
n:=Trace_Train[t].train[train].nombre;
|
||||
@@ -12608,6 +12618,7 @@ begin
|
||||
YclicCellInserer:=YClic;
|
||||
EditAdrElement.Text:=IntToSTR(tco[indextco,XClicCellInserer,YClicCellInserer].Adresse);
|
||||
EditTypeImage.Text:=IntToSTR(tco[indextco,XClicCellInserer,YClicCellInserer].Bimage);
|
||||
CheckPinv.Checked:=tco[indextco,XClicCellInserer,YClicCellInserer].inverse;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ implementation
|
||||
{$R *.dfm}
|
||||
|
||||
procedure commande_simple;
|
||||
var i : integer;
|
||||
begin
|
||||
with formAig do
|
||||
begin
|
||||
@@ -50,9 +51,22 @@ begin
|
||||
|
||||
ButtonDev.Left:=48;
|
||||
ButtonDroit.Left:=216;
|
||||
|
||||
i:=Index_aig(Aiguille);
|
||||
i:=aiguillage[i].position;
|
||||
if i=const_devie then
|
||||
begin
|
||||
buttonDev.SetFocus;
|
||||
end;
|
||||
if i=const_droit then
|
||||
begin
|
||||
buttonDroit.SetFocus;
|
||||
end;
|
||||
|
||||
end;
|
||||
end;
|
||||
|
||||
// activation de la form, l'aiguillage à piloter est dans la variable globale "Aiguille"
|
||||
procedure TFormAig.FormActivate(Sender: TObject);
|
||||
var i : integer;
|
||||
s : string;
|
||||
|
||||
+6
-6
@@ -177,20 +177,20 @@ begin
|
||||
if (prec<9990) then
|
||||
begin
|
||||
inc(it);
|
||||
{
|
||||
|
||||
detecteur[detect].etat:=true;
|
||||
detecteur[detect].AdrTrain:=trains[i].adresse;
|
||||
detecteur[detect].train:=placement[i].train;
|
||||
detecteur[detect].IndexTrain:=i;
|
||||
|
||||
|
||||
|
||||
// valider zone précédente
|
||||
MemZone[prec,detect].etat:=true;
|
||||
MemZone[prec,detect].train:=placement[i].train;
|
||||
MemZone[prec,detect].Adrtrain:=trains[i].adresse;
|
||||
MemZone[prec,detect].NumTrain:=i;
|
||||
MemZone[prec,detect].IndexTrain:=i;
|
||||
//Affiche(inttostr(prec)+' '+intToSTR(detect),clorange);
|
||||
|
||||
// remplir 1er élément du tableau
|
||||
event_det_train[it].NbEl:=1 ;
|
||||
event_det_train[it].AdrTrain:=trains[i].adresse;
|
||||
event_det_train[it].det[1].adresse:=prec;
|
||||
@@ -198,7 +198,7 @@ begin
|
||||
event_det_train[it].nom_train:=placement[i].train;
|
||||
|
||||
inc(N_trains);
|
||||
}
|
||||
|
||||
// essai-------------------------
|
||||
Event_Detecteur(detect,true,nomtrain);
|
||||
detecteur[detect].AdrTrain:=trains[i].adresse;
|
||||
@@ -384,7 +384,7 @@ begin
|
||||
s:='Lancement du train '+detecteur[adrDet].train+' depuis détecteur '+intToSTR(adrDet);
|
||||
Affiche(s,clYellow);
|
||||
if traceListe then AfficheDebug(s,clyellow);
|
||||
reserve_canton(AdrDet,placement[j].detdir,adrtrain,0,2);
|
||||
reserve_canton(AdrDet,placement[j].detdir,adrtrain,0,nCantonsRes);
|
||||
|
||||
end
|
||||
Else Affiche('Le signal '+intToSTR(AdrSignal)+' étant rouge, le train '+detecteur[adrDet].train+' @'+intToSTR(AdrTrain)+' ne démarre pas',clyellow);
|
||||
|
||||
+285
-10
@@ -5,7 +5,7 @@ interface
|
||||
uses
|
||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, StdCtrls , ComCtrls ,WinInet, ExtCtrls , StrUtils, unitPrinc,
|
||||
ShellAPI;
|
||||
ShellAPI , comObj , ShlObj , ActiveX ;
|
||||
|
||||
type
|
||||
TFormVersion = class(TForm)
|
||||
@@ -22,15 +22,23 @@ type
|
||||
var
|
||||
FormVersion: TFormVersion;
|
||||
Lance_verif : integer;
|
||||
verifVersion,notificationVersion : boolean;
|
||||
date_creation,nombre_tel : string;
|
||||
verifVersion,notificationVersion,essai : boolean;
|
||||
chemin_Dest,chemin_src,date_creation,nombre_tel : string;
|
||||
|
||||
Const Version='8.41'; // sert à la comparaison de la version publiée
|
||||
Const Version='8.42'; // sert à la comparaison de la version publiée
|
||||
SousVersion=' '; // A B C ... en cas d'absence de sous version mettre un espace
|
||||
// pour unzip
|
||||
SHCONTCH_NOPROGRESSBOX = 4;
|
||||
SHCONTCH_AUTORENAME = 8;
|
||||
SHCONTCH_RESPONDYESTOALL = 16;
|
||||
SHCONTF_INCLUDEHIDDEN = 128;
|
||||
SHCONTF_FOLDERS = 32;
|
||||
SHCONTF_NONFOLDERS = 64;
|
||||
|
||||
function GetCurrentProcessEnvVar(const VariableName: string): string;
|
||||
function verifie_version : real;
|
||||
function DownloadURL_NOCache(aUrl: string;s : string;var taille : longint): Boolean;
|
||||
function Unzip(zipfile : oleVariant): boolean;
|
||||
|
||||
implementation
|
||||
|
||||
@@ -114,11 +122,195 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure copie_fichier(s : string);
|
||||
var fs,fd : string;
|
||||
i : integer;
|
||||
begin
|
||||
fd:=chemin_dest+s;
|
||||
fs:=chemin_src+s;
|
||||
//Affiche(fd,clOrange);
|
||||
//Affiche(fs,clOrange);
|
||||
|
||||
if not(copyfile(pchar(fs),pchar(fd),false)) then
|
||||
begin
|
||||
fs:=' non copié'; // true évite de le recopier
|
||||
i:=getLastError;
|
||||
Affiche('Erreur '+s,clred);
|
||||
Affiche('non copié. Erreur '+intToSTR(i)+': '+SysErrorMessage(i),clred);
|
||||
end
|
||||
else
|
||||
Affiche(s+' copié',clLime);
|
||||
end;
|
||||
|
||||
procedure cree_raccourci(nom_exe : string);
|
||||
var
|
||||
LinkName : WideString;
|
||||
TargetName : String;
|
||||
IObject : IUnknown;
|
||||
ISLink : IShellLink;
|
||||
IPFile : IPersistFile;
|
||||
PIDL : PItemIDList;
|
||||
InFolder : array[0..MAX_PATH] of Char;
|
||||
begin
|
||||
TargetName:=CheminProgrammes+'\Signaux_complexes\'+nom_exe;
|
||||
IObject:=CreateComObject(CLSID_ShellLink);
|
||||
ISLink:=IObject as IShellLink;
|
||||
IPFile:=IObject as IPersistFile;
|
||||
|
||||
with ISLink do begin
|
||||
SetPath(pChar(TargetName));
|
||||
SetWorkingDirectory(pChar(ExtractFilePath(TargetName)));
|
||||
end;
|
||||
|
||||
// on veut placer le lien sur le bureau
|
||||
SHGetSpecialFolderLocation(0,CSIDL_DESKTOPDIRECTORY,PIDL);
|
||||
SHGetPathFromIDList(PIDL,InFolder);
|
||||
|
||||
if nom_exe='signaux_complexes_gl.exe' then LinkName:=InFolder + '\Signaux Complexes.lnk';
|
||||
if nom_exe='signaux_complexes_gl_d11.exe' then LinkName:=InFolder + '\Signaux Complexes D11.lnk';
|
||||
|
||||
IPFile.Save(PWChar(LinkName),false);
|
||||
end;
|
||||
|
||||
|
||||
// dézipe copie les fichiers et lance la nouvelle version
|
||||
procedure dezipe_copie(s : string);
|
||||
var fichier,nomPDF : string;
|
||||
dirList : tStrings;
|
||||
SR : TSearchRec;
|
||||
nombre,i,attributes : integer;
|
||||
pdf,ok : boolean;
|
||||
begin
|
||||
Aff('Téléchargement réussi, décompression');
|
||||
formVersion.close;
|
||||
|
||||
Affiche('Décompression du zip '+s,clLime);
|
||||
if not(unzip(s)) then
|
||||
begin
|
||||
Affiche('Erreur à la décompression du zip',clred);
|
||||
exit;
|
||||
end;
|
||||
|
||||
chemin_src:=s;
|
||||
i:=pos('.zip',chemin_src);
|
||||
if i=0 then
|
||||
begin
|
||||
affiche('Zip invalide',clred);
|
||||
exit;
|
||||
end;
|
||||
delete(chemin_src,i,4);
|
||||
|
||||
// Vérifier si répertoire dest existe
|
||||
chemin_Dest:=CheminProgrammes+'\Signaux_complexes';
|
||||
if not(directoryExists(chemin_Dest)) then
|
||||
begin
|
||||
Affiche('Création du répertoire '+chemin_dest,clLime);
|
||||
mkDir(chemin_dest);
|
||||
end;
|
||||
chemin_dest:=chemin_dest+'\';
|
||||
chemin_src:=chemin_src+'\';
|
||||
|
||||
|
||||
// remplit dirlist avec les noms de fichiers du chemin dest
|
||||
nombre:=0;
|
||||
DirList:=TStringList.Create;
|
||||
if FindFirst(chemin_dest+ '*.*', faAnyFile, SR) = 0 then
|
||||
begin
|
||||
repeat
|
||||
s:=sr.Name;
|
||||
if (s<>'.') and (s<>'..') then
|
||||
begin
|
||||
DirList.Add(SR.Name); //Fill the list
|
||||
inc(nombre);
|
||||
end;
|
||||
until FindNext(SR) <> 0;
|
||||
FindClose(SR);
|
||||
end;
|
||||
|
||||
// supprimer les fichiers signaux_complexes_gl.Exe et versions.txt et pdf
|
||||
nomPdf:='';
|
||||
for i:=0 to nombre-1 do
|
||||
begin
|
||||
s:=DirList.Strings[i];
|
||||
s:=lowercase(s);
|
||||
pdf:=pos('.pdf',s)<>0;
|
||||
if pdf then
|
||||
nomPDF:=s;
|
||||
|
||||
//Affiche(s,clyellow);
|
||||
// fichiers à supprimer dans répertoire destination
|
||||
if (pos('.exe',s)<>0) or (s='versions.txt') or (s='signaux_complexes_gl_d11.exe') or pdf then
|
||||
begin
|
||||
fichier:=chemin_dest+s;
|
||||
if sysutils.FileExists((fichier)) then
|
||||
begin
|
||||
Affiche('Suppression de '+fichier,clorange);
|
||||
Attributes:=FileGetAttr(pchar(fichier));
|
||||
Attributes := Attributes and not (faReadOnly or faHidden);
|
||||
SetFileAttributes(pchar(fichier),Attributes);
|
||||
ok:=sysutils.DeleteFile(pchar(fichier));
|
||||
if not(OK) then Affiche('Erreur : Pas réussi à supprimer '+fichier,clred);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// copie les fichiers du répertoire zip vers le rep installé
|
||||
copie_fichier('signaux_complexes_gl.exe');
|
||||
copie_fichier('signaux_complexes_gl_d11.exe');
|
||||
copie_fichier('versions.txt');
|
||||
|
||||
// trouver du nom du pdf
|
||||
nombre:=0;
|
||||
// remplit dirlist avec les noms de fichiers du chemin src
|
||||
if FindFirst(chemin_src+ '*.*', faAnyFile, SR) = 0 then
|
||||
begin
|
||||
repeat
|
||||
s:=sr.Name;
|
||||
if (s<>'.') and (s<>'..') then
|
||||
begin
|
||||
DirList.Add(SR.Name); //Fill the list
|
||||
if pos('.pdf',sr.Name)<>0 then NomPdf:=sr.name;
|
||||
inc(nombre);
|
||||
end;
|
||||
until FindNext(SR) <> 0;
|
||||
FindClose(SR);
|
||||
end;
|
||||
DirList.Destroy;
|
||||
|
||||
if nomPdf<>'' then copie_fichier(nomPdf);
|
||||
|
||||
Affiche('Création des raccourcis sur le bureau',cllime);
|
||||
cree_raccourci('signaux_complexes_gl.exe');
|
||||
cree_raccourci('signaux_complexes_gl_d11.exe');
|
||||
|
||||
if essai then exit;
|
||||
|
||||
s:='';
|
||||
Affiche('Lancement de la nouvelle version',clyellow);
|
||||
Application.processMessages;
|
||||
Sleep(3000);
|
||||
i:=ShellExecute(Formprinc.Handle,'open',
|
||||
Pchar('signaux_complexes_gl_d11.exe'),
|
||||
Pchar(s), // paramètre
|
||||
PChar(chemin_dest) // répertoire
|
||||
,SW_SHOWNORMAL);
|
||||
if i>32 then
|
||||
begin
|
||||
Affiche('lancement ok',cllime);
|
||||
Application.Terminate;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Affiche('Erreur '+intToSTR(i),clred);
|
||||
exit;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
// renvoie le numéro de version depuis le site github
|
||||
// si 0
|
||||
function verifie_version : real;
|
||||
var description,s,s2,s3,Version_p,Url,LocalFile,nomfichier,date_creation_ang
|
||||
: string;
|
||||
var description,s,s2,s3,Version_p,Url,LocalFile,nomfichier,date_creation_ang : string;
|
||||
trouve_version,trouve_zip,zone_comm,LocZip : boolean;
|
||||
fichier : text;
|
||||
i,j,erreur,Ncomm,i2,l : integer;
|
||||
@@ -301,21 +493,34 @@ begin
|
||||
aff(' ');
|
||||
for i:=1 to ncomm do aff(comm[i]);
|
||||
end;
|
||||
if MessageDlg(s+'. Voulez-vous la télécharger?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
|
||||
if MessageDlg(s+#13+'Voulez-vous la télécharger, l''installer et l''exécuter?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
|
||||
begin
|
||||
// récupérer depuis la variable d'environnement windows USERPROFILE le repertoire de la session ouverte
|
||||
s:=GetCurrentProcessEnvVar('USERPROFILE')+'\Downloads\'+Nomfichier;
|
||||
|
||||
essai:=false;
|
||||
|
||||
if not(essai) then
|
||||
begin
|
||||
Aff('Téléchargement de '+s3+' dans ');
|
||||
Aff(s);
|
||||
Affiche('Téléchargement de '+s3+' dans '+s,clLime);
|
||||
end;
|
||||
|
||||
if essai then
|
||||
begin
|
||||
Affiche('*** mode essai ***',clOrange);
|
||||
dezipe_copie(s);
|
||||
exit;
|
||||
end;
|
||||
|
||||
if DownloadURL_NOCache(s3,s,taille) then
|
||||
begin
|
||||
if taille>700000 then
|
||||
begin
|
||||
Aff('Téléchargement réussi');
|
||||
Aff('Vous pouvez ouvrir le dossier de téléchargement, décomprimer le zip et l''installer');
|
||||
dezipe_copie(s);
|
||||
end
|
||||
else Aff('Echec 2 de téléchargement');
|
||||
else Aff('Echec 2 de téléchargement - taille invalide');
|
||||
end
|
||||
else Aff('Echec 1 de téléchargement');
|
||||
end
|
||||
@@ -368,5 +573,75 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure DeleteDirectory(const DirName: string);
|
||||
var
|
||||
FileFolderOperation: TSHFileOpStruct;
|
||||
begin
|
||||
FillChar(FileFolderOperation, SizeOf(FileFolderOperation), 0);
|
||||
FileFolderOperation.wFunc := FO_DELETE;
|
||||
FileFolderOperation.pFrom := PChar(ExcludeTrailingPathDelimiter(DirName) + #0);
|
||||
FileFolderOperation.fFlags := FOF_SILENT or FOF_NOERRORUI or FOF_NOCONFIRMATION;
|
||||
SHFileOperation(FileFolderOperation);
|
||||
end;
|
||||
|
||||
// https://github.com/sx2008/Delphi-Test-Apps/blob/master/ShellZipTest/ShellZipTool.pas
|
||||
function Unzip(zipfile : oleVariant): boolean;
|
||||
var
|
||||
shellobj,srcfldr, destfldr, shellfldritems,repertoire: Olevariant;
|
||||
filtre: string;
|
||||
i : integer;
|
||||
erreur : integer;
|
||||
begin
|
||||
filtre:='';
|
||||
zipfile:=lowercase(zipfile);
|
||||
i:=pos('.zip',zipfile);
|
||||
if i=0 then exit;
|
||||
filtre:=zipfile;
|
||||
delete(filtre,i,4);
|
||||
|
||||
if directoryExists(filtre) then DeleteDirectory(filtre);
|
||||
|
||||
{$I-}
|
||||
MkDir(filtre);
|
||||
erreur:=IoResult;
|
||||
{$I+}
|
||||
if erreur<>0 then
|
||||
begin
|
||||
Affiche('Impossible de créer répertoire',clred);
|
||||
exit;
|
||||
end;
|
||||
|
||||
|
||||
repertoire:=filtre; // mettre dans olevariant
|
||||
|
||||
filtre:='';
|
||||
shellobj:=CreateOleObject('Shell.Application');
|
||||
|
||||
srcfldr:=ShellObj.NameSpace(Zipfile);
|
||||
if not ((VarType(srcfldr)=varDispatch) and Assigned(TVarData(srcfldr).VDispatch)) then
|
||||
begin
|
||||
Affiche(zipfile+ ' invalide ou absent',clred);
|
||||
result:=false;
|
||||
exit;
|
||||
end;
|
||||
|
||||
destfldr:=ShellObj.NameSpace(repertoire);
|
||||
if not ((VarType(destfldr)=varDispatch) and Assigned(TVarData(destfldr).VDispatch)) then
|
||||
begin
|
||||
Affiche(' répertoire destination invalide : '+ repertoire,clred);
|
||||
result:=false;
|
||||
exit;
|
||||
end;
|
||||
|
||||
shellfldritems:=srcfldr.Items;
|
||||
if (filtre<>'') then shellfldritems.Filter(SHCONTF_INCLUDEHIDDEN or SHCONTF_NONFOLDERS or SHCONTF_FOLDERS,filtre);
|
||||
|
||||
//destfldr.CopyHere(shellfldritems, SHCONTCH_NOPROGRESSBOX or SHCONTCH_RESPONDYESTOALL);
|
||||
destfldr.CopyHere(shellfldritems, SHCONTCH_RESPONDYESTOALL);
|
||||
result:=true;
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
end.
|
||||
|
||||
+4
-1
@@ -227,6 +227,9 @@ version 8.38 : Ajout de l'importation depuis le r
|
||||
Amélioration du traitement des trames inconnues en XpressNet.
|
||||
version 8.4 : Création de la version D11 (deux exécutables disponibles après installation) qui permet de choisir des styles d'affichage.
|
||||
Lire la documentation pages 6 et 7.
|
||||
version 8.41 : Améliorations diverses dans les traitements
|
||||
version 8.41 : Améliorations diverses dans les traitements.
|
||||
Possibilité d'ouvrir signaux_complexes sur un écran au choix.
|
||||
Auto-installation des nouvelles versions au choix.
|
||||
version 8.42 : Création d'un onglet de paramètres avancés.
|
||||
Fichier d'aide affichable depuis le menu.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user