diff --git a/Notice d'utilisation des signaux_complexes_GL_V8.33.pdf b/Notice d'utilisation des signaux_complexes_GL_V8.35.pdf similarity index 76% rename from Notice d'utilisation des signaux_complexes_GL_V8.33.pdf rename to Notice d'utilisation des signaux_complexes_GL_V8.35.pdf index f9b51ca..99dc3e9 100644 Binary files a/Notice d'utilisation des signaux_complexes_GL_V8.33.pdf and b/Notice d'utilisation des signaux_complexes_GL_V8.35.pdf differ diff --git a/Signaux_complexes_GL.map b/Signaux_complexes_GL.map index 761d473..22cc40a 100644 --- a/Signaux_complexes_GL.map +++ b/Signaux_complexes_GL.map @@ -1,104 +1,104 @@ Start Length Name Class - 0001:00000000 0016EE98H .text CODE - 0002:00000000 00002C50H .data DATA - 0002:00002C50 00C39ABDH .bss BSS + 0001:00000000 0019EF04H .text CODE + 0002:00000000 00002C2CH .data DATA + 0002:00002C2C 045DDFF1H .bss BSS Detailed map of segments - 0001:00000000 00005E8F C=CODE S=.text G=(none) M=System ACBP=A9 - 0001:00005E90 00000140 C=CODE S=.text G=(none) M=SysInit ACBP=A9 - 0001:00005FD0 00000108 C=CODE S=.text G=(none) M=Types ACBP=A9 - 0001:000060D8 00000F08 C=CODE S=.text G=(none) M=Windows ACBP=A9 - 0001:00006FE0 00000038 C=CODE S=.text G=(none) M=Messages ACBP=A9 - 0001:00007018 00000338 C=CODE S=.text G=(none) M=SysConst ACBP=A9 - 0001:00007350 00006E28 C=CODE S=.text G=(none) M=SysUtils ACBP=A9 - 0001:0000E178 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9 - 0001:0000E994 0000809A C=CODE S=.text G=(none) M=Variants ACBP=A9 - 0001:00016A30 000001A0 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9 - 0001:00016BD0 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9 - 0001:0001740C 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9 - 0001:00017764 0000A7EA C=CODE S=.text G=(none) M=Classes ACBP=A9 - 0001:00021F50 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9 - 0001:000222C0 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9 - 0001:0002BEBC 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9 - 0001:0002BFE0 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9 - 0001:0002C298 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9 - 0001:0002C430 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9 - 0001:0002CBB8 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9 - 0001:0002CBF0 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9 - 0001:0002DBE8 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9 - 0001:0002DC40 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9 - 0001:0002ED08 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9 - 0001:0002F028 000003F0 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9 - 0001:0002F418 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9 - 0001:0002FDD4 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9 - 0001:0002FE0C 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9 - 0001:0002FE44 00000040 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9 - 0001:0002FE84 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9 - 0001:0002FEBC 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9 - 0001:0002FF14 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9 - 0001:0002FF4C 0000006C C=CODE S=.text G=(none) M=ShlObj ACBP=A9 - 0001:0002FFB8 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9 - 0001:00030018 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9 - 0001:00030050 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9 - 0001:00033724 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9 - 0001:00038200 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9 - 0001:00038290 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9 - 0001:00038A30 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9 - 0001:00038B58 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9 - 0001:0003C37C 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9 - 0001:0003C3B4 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9 - 0001:0003C41C 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9 - 0001:0003C484 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9 - 0001:0003C4F0 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9 - 0001:0003C548 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9 - 0001:0003C580 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9 - 0001:00045EC8 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9 - 0001:00046D68 0000C698 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9 - 0001:00053400 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9 - 0001:00053568 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9 - 0001:00054288 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9 - 0001:0006568C 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9 - 0001:00066920 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9 - 0001:000684BC 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9 - 0001:0006EBA0 0000CEFC C=CODE S=.text G=(none) M=Forms ACBP=A9 - 0001:0007BA9C 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9 - 0001:0007BAFC 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9 - 0001:0007CD58 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9 - 0001:0007CD90 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9 - 0001:0007E524 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9 - 0001:0007E584 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9 - 0001:00081AA0 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9 - 0001:00081AF0 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9 - 0001:00094EDC 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9 - 0001:000951F0 00000128 C=CODE S=.text G=(none) M=WinSock ACBP=A9 - 0001:00095318 00003A78 C=CODE S=.text G=(none) M=ScktComp ACBP=A9 - 0001:00098D90 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9 - 0001:0009967C 000005A0 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9 - 0001:00099C1C 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9 - 0001:00099C5C 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9 - 0001:00099C94 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9 - 0001:0009A6AC 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9 - 0001:0009C7B4 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9 - 0001:000A5A00 00001748 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 - 0001:000A7148 000004D0 C=CODE S=.text G=(none) M=Importation ACBP=A9 - 0001:000A7618 000102AC C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 - 0001:000B78C4 000026F4 C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 - 0001:000B9FB8 00000C40 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 - 0001:000BABF8 00003A0C C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 - 0001:000BE604 00030CCC C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 - 0001:000EF2D0 00002C18 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 - 0001:000F1EE8 00002404 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 - 0001:000F42EC 00038270 C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 - 0001:0012C55C 00001613 C=CODE S=.text G=(none) M=verif_version ACBP=A9 - 0001:0012DB70 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 - 0001:0012ED40 000029E0 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 - 0001:00131720 00000C00 C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 - 0001:00132320 000023CC C=CODE S=.text G=(none) M=Unitplace ACBP=A9 - 0001:001346EC 0003A31C C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 - 0001:0016EA08 0000048D C=CODE S=.text G=(none) M=Signaux_complexes_GL ACBP=A9 + 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 00000F08 C=CODE S=.text G=(none) M=Windows ACBP=A9 + 0001:00007018 00000038 C=CODE S=.text G=(none) M=Messages ACBP=A9 + 0001:00007050 00000338 C=CODE S=.text G=(none) M=SysConst ACBP=A9 + 0001:00007388 00006E28 C=CODE S=.text G=(none) M=SysUtils ACBP=A9 + 0001:0000E1B0 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9 + 0001:0000E9CC 0000809A C=CODE S=.text G=(none) M=Variants ACBP=A9 + 0001:00016A68 000001A0 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9 + 0001:00016C08 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9 + 0001:00017444 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9 + 0001:0001779C 0000A7EA C=CODE S=.text G=(none) M=Classes ACBP=A9 + 0001:00021F88 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9 + 0001:000222F8 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9 + 0001:0002BEF4 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9 + 0001:0002C018 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9 + 0001:0002C2D0 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9 + 0001:0002C468 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9 + 0001:0002CBF0 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9 + 0001:0002CC28 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9 + 0001:0002DC20 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9 + 0001:0002DC78 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9 + 0001:0002ED40 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9 + 0001:0002F060 000003F0 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9 + 0001:0002F450 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9 + 0001:0002FE0C 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9 + 0001:0002FE44 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9 + 0001:0002FE7C 00000040 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9 + 0001:0002FEBC 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9 + 0001:0002FEF4 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9 + 0001:0002FF4C 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9 + 0001:0002FF84 0000006C C=CODE S=.text G=(none) M=ShlObj ACBP=A9 + 0001:0002FFF0 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9 + 0001:00030050 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9 + 0001:00030088 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9 + 0001:0003375C 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9 + 0001:00038238 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9 + 0001:000382C8 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9 + 0001:00038A68 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9 + 0001:00038B90 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9 + 0001:0003C3B4 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9 + 0001:0003C3EC 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9 + 0001:0003C454 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9 + 0001:0003C4BC 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9 + 0001:0003C528 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9 + 0001:0003C580 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9 + 0001:0003C5B8 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9 + 0001:00045F00 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9 + 0001:00046DA0 0000C698 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9 + 0001:00053438 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9 + 0001:000535A0 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9 + 0001:000542C0 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9 + 0001:000656C4 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9 + 0001:00066958 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9 + 0001:000684F4 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9 + 0001:0006EBD8 0000CEFC C=CODE S=.text G=(none) M=Forms ACBP=A9 + 0001:0007BAD4 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9 + 0001:0007BB34 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9 + 0001:0007CD90 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9 + 0001:0007CDC8 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9 + 0001:0007E55C 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9 + 0001:0007E5BC 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9 + 0001:00081AD8 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9 + 0001:00081B28 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9 + 0001:00094F14 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9 + 0001:00095228 00000128 C=CODE S=.text G=(none) M=WinSock ACBP=A9 + 0001:00095350 00003A78 C=CODE S=.text G=(none) M=ScktComp ACBP=A9 + 0001:00098DC8 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9 + 0001:000996B4 00000598 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9 + 0001:00099C4C 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9 + 0001:00099C8C 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9 + 0001:00099CC4 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9 + 0001:0009A6DC 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9 + 0001:0009C7E4 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9 + 0001:000A5A30 00001748 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 + 0001:000A7178 000004D0 C=CODE S=.text G=(none) M=Importation ACBP=A9 + 0001:000A7648 00013ACC C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 + 0001:000BB114 000026F4 C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 + 0001:000BD808 00000D10 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 + 0001:000BE518 00003A0C C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 + 0001:000C1F24 000452C0 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 + 0001:001071E4 000030E4 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 + 0001:0010A2C8 000027D4 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 + 0001:0010CA9C 00001833 C=CODE S=.text G=(none) M=verif_version ACBP=A9 + 0001:0010E2D0 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 + 0001:0010F4A0 00042A80 C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 + 0001:00151F20 00002B44 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 + 0001:00154A64 00000D2C C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 + 0001:00155790 00002584 C=CODE S=.text G=(none) M=Unitplace ACBP=A9 + 0001:00157D14 00046D60 C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 + 0001:0019EA74 0000048D 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 @@ -125,12 +125,12 @@ Detailed map of segments 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 00000080 C=DATA S=.data G=DGROUP M=MSCommLib_TLB ACBP=A9 - 0002:00001C34 00000009 C=DATA S=.data G=DGROUP M=MaskUtils ACBP=A9 - 0002:00001C40 00000004 C=DATA S=.data G=DGROUP M=Mask ACBP=A9 - 0002:00001C44 00000006 C=DATA S=.data G=DGROUP M=Grids ACBP=A9 - 0002:00001C4C 000000D4 C=DATA S=.data G=DGROUP M=UnitTCO ACBP=A9 - 0002:00001D20 0000060D C=DATA S=.data G=DGROUP M=UnitPrinc 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: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 @@ -208,20 +208,20 @@ Detailed map of segments 0002:00003E60 00000004 C=BSS S=.bss G=DGROUP M=Grids ACBP=A9 0002:00003E64 00000010 C=BSS S=.bss G=DGROUP M=UnitPilote ACBP=A9 0002:00003E74 00000010 C=BSS S=.bss G=DGROUP M=Importation ACBP=A9 - 0002:00003E84 000228A0 C=BSS S=.bss G=DGROUP M=UnitAnalyseSegCDM ACBP=A9 - 0002:00026724 00000014 C=BSS S=.bss G=DGROUP M=UnitConfigTCO ACBP=A9 - 0002:00026738 00000014 C=BSS S=.bss G=DGROUP M=Unit_Pilote_aig ACBP=A9 - 0002:0002674C 00000014 C=BSS S=.bss G=DGROUP M=UnitConfigCellTCO ACBP=A9 - 0002:00026760 004186C8 C=BSS S=.bss G=DGROUP M=UnitTCO ACBP=A9 - 0002:0043EE28 00000010 C=BSS S=.bss G=DGROUP M=UnitSR ACBP=A9 - 0002:0043EE38 00000014 C=BSS S=.bss G=DGROUP M=UnitCDF ACBP=A9 - 0002:0043EE4C 000004FC C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 - 0002:0043F348 00000018 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9 - 0002:0043F360 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9 - 0002:0043F364 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 - 0002:0043F390 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 - 0002:0043F39C 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 - 0002:0043F3A4 007FD718 C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 + 0002:00003E84 000118A0 C=BSS S=.bss G=DGROUP M=UnitAnalyseSegCDM ACBP=A9 + 0002:00015724 00000014 C=BSS S=.bss G=DGROUP M=UnitConfigTCO ACBP=A9 + 0002:00015738 00000014 C=BSS S=.bss G=DGROUP M=Unit_Pilote_aig ACBP=A9 + 0002:0001574C 00000014 C=BSS S=.bss G=DGROUP M=UnitConfigCellTCO ACBP=A9 + 0002:00015760 004186C8 C=BSS S=.bss G=DGROUP M=UnitTCO ACBP=A9 + 0002:0042DE28 00000010 C=BSS S=.bss G=DGROUP M=UnitSR ACBP=A9 + 0002:0042DE38 00000014 C=BSS S=.bss G=DGROUP M=UnitCDF ACBP=A9 + 0002:0042DE4C 00000018 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9 + 0002:0042DE64 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9 + 0002:0042DE68 000004FC C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 + 0002:0042E364 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 + 0002:0042E390 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 + 0002:0042E39C 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 + 0002:0042E3A4 041B2C4C C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 Bound resource files @@ -237,8 +237,8 @@ UnitConfigCellTCO.dfm UnitTCO.dfm UnitSR.dfm UnitCDF.dfm -UnitConfig.dfm verif_version.dfm +UnitConfig.dfm UnitDebug.dfm UnitSimule.dfm Unitplace.dfm @@ -247,4 +247,4 @@ Signaux_complexes_GL.res Signaux_complexes_GL.drf -Program entry point at 0001:0016ED18 +Program entry point at 0001:0019ED84 diff --git a/UnitConfig.dfm b/UnitConfig.dfm index af8102f..f4ef5a8 100644 --- a/UnitConfig.dfm +++ b/UnitConfig.dfm @@ -1,6 +1,6 @@ object FormConfig: TFormConfig - Left = 503 - Top = 109 + Left = 251 + Top = 157 Hint = 'Modifie la configuration selon les s'#233'lections choisies' BorderStyle = bsDialog Caption = 'Configuration g'#233'n'#233'rale' @@ -667,8 +667,8 @@ object FormConfig: TFormConfig Left = 8 Top = 8 Width = 633 - Height = 497 - ActivePage = TabSheetCDM + Height = 505 + ActivePage = TabSheetAig Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 @@ -1541,7 +1541,7 @@ object FormConfig: TFormConfig ParentFont = False end object LabelCrois: TLabel - Left = 56 + Left = 88 Top = 280 Width = 187 Height = 26 @@ -1749,7 +1749,7 @@ object FormConfig: TFormConfig Caption = 'LabelTJD1' end object LabelTJD2: TLabel - Left = 176 + Left = 168 Top = 76 Width = 52 Height = 13 @@ -1794,8 +1794,12 @@ object FormConfig: TFormConfig Top = 28 Width = 33 Height = 21 + Hint = '1'#232're adresse de la TJD/S' Color = clLime + ParentShowHint = False + ShowHint = True TabOrder = 2 + OnExit = EditP1Exit OnKeyPress = EditP1KeyPress end object EditP2: TEdit @@ -1803,8 +1807,12 @@ object FormConfig: TFormConfig Top = 48 Width = 33 Height = 21 + Hint = '1'#232're adresse de la TJD/S' Color = clLime + ParentShowHint = False + ShowHint = True TabOrder = 3 + OnExit = EditP2Exit OnKeyPress = EditP2KeyPress end object EditP3: TEdit @@ -1812,8 +1820,12 @@ object FormConfig: TFormConfig Top = 22 Width = 33 Height = 21 + Hint = '2'#232'me adresse de la TJD/S' Color = clLime + ParentShowHint = False + ShowHint = True TabOrder = 4 + OnExit = EditP3Exit OnKeyPress = EditP3KeyPress end object EditP4: TEdit @@ -1821,8 +1833,12 @@ object FormConfig: TFormConfig Top = 44 Width = 33 Height = 21 + Hint = '2'#232'me adresse de la TJD/S' Color = clLime + ParentShowHint = False + ShowHint = True TabOrder = 5 + OnExit = EditP4Exit OnKeyPress = EditP4KeyPress end object EditDevie_HD: TEdit @@ -1850,9 +1866,8 @@ object FormConfig: TFormConfig Top = 68 Width = 33 Height = 21 - Color = clLime TabOrder = 8 - OnKeyPress = EditDevieS2KeyPress + OnChange = EditDevieS2Change end object EditL: TEdit Left = 32 @@ -1941,7 +1956,7 @@ object FormConfig: TFormConfig Top = 80 Width = 89 Height = 73 - Caption = 'Type TJD' + Caption = 'Type TJD-TJS' TabOrder = 8 object RadioButtonTJD2: TRadioButton Left = 8 diff --git a/UnitConfig.pas b/UnitConfig.pas index 6959c65..8d038a6 100644 --- a/UnitConfig.pas +++ b/UnitConfig.pas @@ -407,7 +407,6 @@ type procedure EditP4KeyPress(Sender: TObject; var Key: Char); procedure EditP1KeyPress(Sender: TObject; var Key: Char); procedure EditP2KeyPress(Sender: TObject; var Key: Char); - procedure EditDevieS2KeyPress(Sender: TObject; var Key: Char); procedure ButtonConfigSRClick(Sender: TObject); procedure EditDet1Change(Sender: TObject); procedure EditSuiv1Change(Sender: TObject); @@ -529,6 +528,11 @@ type procedure EditPortServeurExit(Sender: TObject); procedure EditPortServeurChange(Sender: TObject); procedure EditAdrSigChange(Sender: TObject); + procedure EditP3Exit(Sender: TObject); + procedure EditP4Exit(Sender: TObject); + procedure EditP1Exit(Sender: TObject); + procedure EditP2Exit(Sender: TObject); + procedure EditDevieS2Change(Sender: TObject); private { Déclarations privées } @@ -682,8 +686,6 @@ implementation uses UnitDebug,UnitTCO, UnitSR, UnitCDF,UnitAnalyseSegCDM, unitPilote; -var ListCom : tstrings; - {$R *.dfm} // envoi d'une chaîne Com_IPC à CDM par socket, puis attend l'ack ou le nack @@ -966,7 +968,7 @@ begin end; end; - // tjd 2/4 états ou tjs + // tjd-s 2/4 états if (tjdC or tjsC) then begin s:=s+'D('+intToSTR(aiguillage[index].Adroit); @@ -1027,7 +1029,7 @@ begin s:=s+IntToSTR(aiguillage[index].temps)+')'; end; - if tjdC then + if tjdC or tjsC then begin if aiguillage[index].EtatTJD=2 then s:=s+',E2' else s:=s+',E4'; end; @@ -1193,13 +1195,13 @@ end; // décode la ligne de signal et la stocke dans l'index i du tableau feux // sortie vrai si le signal a été stocké - faux si doublon -function decode_ligne_feux(chaine_signal : string;i : integer) : boolean; +function decode_ligne_signal(chaine_signal : string;i : integer) : boolean; var s,chaine,sa : string; j,k,l,t,id,adresse,adr,erreur ,asp,bd: integer; c : char; multiple,fini : boolean; begin - decode_ligne_feux:=true; // pas de doublon + decode_ligne_signal:=true; // pas de doublon if i=0 then begin AfficheDebug('Erreur 670 : index nul',clred); @@ -1217,145 +1219,150 @@ begin begin if Signaux[id].adresse=adresse then begin - decode_ligne_feux:=false; + decode_ligne_signal:=false; exit; end; end; - inc(NbreSignaux); Delete(s,1,j); - Signaux[i].adresse:=adresse; - Index_Accessoire[adresse]:=i; // stocker l'index provisoire avant tri - j:=pos(',',s); - if j>1 then - begin - sa:=copy(s,1,j-1); - if sa[1]='D' then - // feu directionnel ------------------------------------------ - begin - delete(sa,1,1); - j:=pos(',',s); - val(sa,l,erreur); // nombre de feux du signal directionnel - if l>6 then - begin - Affiche('Erreur 672 ligne '+chaine_signal+' 6 feux maximum pour un panneau directionnel',clred); - exit; - end; - Signaux[i].aspect:=l+10;Delete(s,1,j); - // décodeur - val(s,adr,erreur); - Signaux[i].decodeur:=adr; - if (adr>NbDecodeur-1) then Affiche('Erreur 673 ligne '+chaine_signal+' : erreur décodeur inconnu',clred); - j:=pos(',',s);Delete(s,1,j); - // liste des aiguillages - k:=1; // numéro de feu directionnel - repeat - // boucle de direction - delete(s,1,1); // supprimer ( ou le , - j:=1; // Nombre de descriptions d'aiguillages dans le feu - repeat - if s[1]<>'A' then begin Affiche('Erreur 674 ligne '+chaine_signal,clred);exit;end; - delete(s,1,1); - val(s,adr,erreur); // adresse - c:=#0; - if erreur<>0 then c:=s[erreur]; // type - setlength(Signaux[i].AigDirection[k],j+1); // augmenter le tableau dynamique - Signaux[i].AigDirection[k][j].PosAig:=c; - Signaux[i].AigDirection[k][j].Adresse:=adr; - delete(s,1,erreur); // supprime jusque S - //Affiche(s,clLime); - if s[1]=',' then delete(s,1,1); - inc(j); - until s[1]=')'; - delete(s,1,1); - inc(k); - until length(s)<1; - dec(k); - if k<>l+1 then - begin - Affiche('Erreur 675 ligne '+chaine_signal,clred); - Affiche('Nombre incorrect de description des aiguillages: '+intToSTR(k)+' pour '+intToSTR(l)+' feux directionnels',clred); - end; - end - else - // feu de signalisation--------------------------------- - begin - val(sa,asp,erreur); //aspect - if (asp<2) or (asp=6) or (asp=8) or (asp>20) then - begin - Affiche('Erreur 676: configuration aspect ('+intToSTR(asp)+') signal incorrect à la ligne '+chaine_signal,clRed); - asp:=2; - end; - Signaux[i].aspect:=asp;Delete(s,1,j); - j:=pos(',',s); - if j>1 then begin Signaux[i].FeuBlanc:=(copy(s,1,j-1))='1';delete(s,1,j);end; - j:=pos(',',s); - val(s,Signaux[i].decodeur,erreur); - if (Signaux[i].decodeur>NbDecodeurdeBase+NbreDecPers-1) then Affiche('Erreur 677 Ligne '+chaine_signal+' : erreur décodeur inconnu: '+intToSTR(Signaux[i].decodeur),clred); - if j<>0 then delete(s,1,j); - Signaux[i].Adr_el_suiv1:=0;Signaux[i].Adr_el_suiv2:=0;Signaux[i].Adr_el_suiv3:=0;Signaux[i].Adr_el_suiv4:=0; - Signaux[i].Btype_Suiv1:=rien;Signaux[i].Btype_Suiv2:=rien;Signaux[i].Btype_Suiv3:=rien;Signaux[i].Btype_Suiv4:=rien; - Signaux[i].Adr_det1:=0;Signaux[i].Adr_det2:=0;Signaux[i].Adr_det3:=0;Signaux[i].Adr_det4:=0; - // éléments optionnels des voies supplémentaires - if j<>0 then + if adresse>MaxAcc then + affiche('Erreur 637 : adresse signal '+intToSTR(adresse)+' trop élevée (maxi='+intToSTR(MaxAcc)+')',clred) + else + begin + inc(NbreSignaux); + Signaux[i].adresse:=adresse; + tablo_Index_Signal[adresse]:=i; // stocker l'index provisoire avant tri + j:=pos(',',s); + if j>1 then + begin + sa:=copy(s,1,j-1); + if sa[1]='D' then + // feu directionnel ------------------------------------------ begin - sa:=s; - multiple:=s[1]='('; - if multiple then + delete(sa,1,1); + j:=pos(',',s); + val(sa,l,erreur); // nombre de feux du signal directionnel + if l>6 then begin - delete(s,1,1); - j:=0; + Affiche('Erreur 672 ligne '+chaine_signal+' 6 feux maximum pour un panneau directionnel',clred); + exit; + end; + Signaux[i].aspect:=l+10;Delete(s,1,j); + // décodeur + val(s,adr,erreur); + Signaux[i].decodeur:=adr; + if (adr>NbDecodeur-1) then Affiche('Erreur 673 ligne '+chaine_signal+' : erreur décodeur inconnu',clred); + j:=pos(',',s);Delete(s,1,j); + // liste des aiguillages + k:=1; // numéro de feu directionnel + repeat + // boucle de direction + delete(s,1,1); // supprimer ( ou le , + j:=1; // Nombre de descriptions d'aiguillages dans le feu repeat - adr:=0; - k:=pos(',',s); - if k>1 then - begin - val(s,adr,erreur); // extraire l'adresse - Delete(s,1,k); + if s[1]<>'A' then begin Affiche('Erreur 674 ligne '+chaine_signal,clred);exit;end; + delete(s,1,1); + val(s,adr,erreur); // adresse + c:=#0; + if erreur<>0 then c:=s[erreur]; // type + setlength(Signaux[i].AigDirection[k],j+1); // augmenter le tableau dynamique + Signaux[i].AigDirection[k][j].PosAig:=c; + Signaux[i].AigDirection[k][j].Adresse:=adr; + delete(s,1,erreur); // supprime jusque S + //Affiche(s,clLime); + if s[1]=',' then delete(s,1,1); + inc(j); + until s[1]=')'; + delete(s,1,1); + inc(k); + until length(s)<1; + dec(k); + if k<>l+1 then + begin + Affiche('Erreur 675 ligne '+chaine_signal,clred); + Affiche('Nombre incorrect de description des aiguillages: '+intToSTR(k)+' pour '+intToSTR(l)+' feux directionnels',clred); + end; + end + else + // feu de signalisation--------------------------------- + begin + val(sa,asp,erreur); //aspect + if (asp<2) or (asp=6) or (asp=8) or (asp>20) then + begin + Affiche('Erreur 676: configuration aspect ('+intToSTR(asp)+') signal incorrect à la ligne '+chaine_signal,clRed); + asp:=2; + end; + Signaux[i].aspect:=asp;Delete(s,1,j); + j:=pos(',',s); + if j>1 then begin Signaux[i].FeuBlanc:=(copy(s,1,j-1))='1';delete(s,1,j);end; + j:=pos(',',s); + val(s,Signaux[i].decodeur,erreur); + + if (Signaux[i].decodeur>NbDecodeurdeBase+NbreDecPers-1) then Affiche('Erreur 677 Ligne '+chaine_signal+' : erreur décodeur inconnu: '+intToSTR(Signaux[i].decodeur),clred); + if j<>0 then delete(s,1,j); + Signaux[i].Adr_el_suiv1:=0;Signaux[i].Adr_el_suiv2:=0;Signaux[i].Adr_el_suiv3:=0;Signaux[i].Adr_el_suiv4:=0; + Signaux[i].Btype_Suiv1:=rien;Signaux[i].Btype_Suiv2:=rien;Signaux[i].Btype_Suiv3:=rien;Signaux[i].Btype_Suiv4:=rien; + Signaux[i].Adr_det1:=0;Signaux[i].Adr_det2:=0;Signaux[i].Adr_det3:=0;Signaux[i].Adr_det4:=0; + // éléments optionnels des voies supplémentaires + if j<>0 then + begin + sa:=s; + multiple:=s[1]='('; + if multiple then + begin + delete(s,1,1); + j:=0; + repeat + adr:=0; + k:=pos(',',s); + if k>1 then + begin + val(s,adr,erreur); // extraire l'adresse + Delete(s,1,k); + if Adr>NbMaxDet then + begin + Affiche('Erreur 677A : ligne '+chaine_signal+' : adresse détecteur trop grand: '+intToSTR(adr),clred); + Adr:=NbMaxDet; + end; + end; + inc(j); + if (j=1) then Signaux[i].Adr_det1:=adr; + if (j=2) then Signaux[i].Adr_det2:=adr; + if (j=3) then Signaux[i].Adr_det3:=adr; + if (j=4) then Signaux[i].Adr_det4:=adr; + //type de l'élément suivant (1=détecteur 2=aig ou TJD ou TJS 4=tri + if s[1]='A' then + begin + if (j=1) then Signaux[i].Btype_Suiv1:=aig; + if (j=2) then Signaux[i].Btype_Suiv2:=aig; + if (j=3) then Signaux[i].Btype_Suiv3:=aig; + if (j=4) then Signaux[i].Btype_Suiv4:=aig; + delete(s,1,1); + end + else + begin // détecteur + if (j=1) then Signaux[i].Btype_Suiv1:=det; + if (j=2) then Signaux[i].Btype_Suiv2:=det; + if (j=3) then Signaux[i].Btype_Suiv3:=det; + if (j=4) then Signaux[i].Btype_Suiv4:=det; + end; + Val(s,adr,erreur); if Adr>NbMaxDet then begin - Affiche('Erreur 677A : ligne '+chaine_signal+' : adresse détecteur trop grand: '+intToSTR(adr),clred); + Affiche('Erreur 677B : ligne '+chaine_signal+' : adresse élément trop grand: '+intToSTR(adr),clred); Adr:=NbMaxDet; end; - end; - inc(j); - if (j=1) then Signaux[i].Adr_det1:=adr; - if (j=2) then Signaux[i].Adr_det2:=adr; - if (j=3) then Signaux[i].Adr_det3:=adr; - if (j=4) then Signaux[i].Adr_det4:=adr; - //type de l'élément suivant (1=détecteur 2=aig ou TJD ou TJS 4=tri - if s[1]='A' then - begin - if (j=1) then Signaux[i].Btype_Suiv1:=aig; - if (j=2) then Signaux[i].Btype_Suiv2:=aig; - if (j=3) then Signaux[i].Btype_Suiv3:=aig; - if (j=4) then Signaux[i].Btype_Suiv4:=aig; - delete(s,1,1); - end - else - begin // détecteur - if (j=1) then Signaux[i].Btype_Suiv1:=det; - if (j=2) then Signaux[i].Btype_Suiv2:=det; - if (j=3) then Signaux[i].Btype_Suiv3:=det; - if (j=4) then Signaux[i].Btype_Suiv4:=det; - end; - Val(s,adr,erreur); - if Adr>NbMaxDet then - begin - Affiche('Erreur 677B : ligne '+chaine_signal+' : adresse élément trop grand: '+intToSTR(adr),clred); - Adr:=NbMaxDet; - end; - if (j=1) then Signaux[i].Adr_el_suiv1:=Adr; - if (j=2) then Signaux[i].Adr_el_suiv2:=Adr; - if (j=3) then Signaux[i].Adr_el_suiv3:=Adr; - if (j=4) then Signaux[i].Adr_el_suiv4:=Adr; - delete(s,1,erreur-1); - if s[1]=',' then delete(s,1,1); - fini:=s[1]=')'; - until (fini) or (j>4); + if (j=1) then Signaux[i].Adr_el_suiv1:=Adr; + if (j=2) then Signaux[i].Adr_el_suiv2:=Adr; + if (j=3) then Signaux[i].Adr_el_suiv3:=Adr; + if (j=4) then Signaux[i].Adr_el_suiv4:=Adr; + delete(s,1,erreur-1); + if s[1]=',' then delete(s,1,1); + fini:=s[1]=')'; + until (fini) or (j>4); + end; end; - end; if (j>4) or (not(multiple)) then begin Affiche('Erreur 678: fichier de configuration ligne erronnée : '+chaine_signal,clred); @@ -1561,6 +1568,7 @@ begin Signaux[i].na:=j; end; end; + end; end; end; end; @@ -1900,7 +1908,7 @@ begin s:=encode_sig_feux(i); // transformer le tableau feux en ligne //Affiche(s,clLime); - if s='' then Affiche('Erreur 700 - Encodage du feu index='+IntToSTR(i),clRed); + if s='' then Affiche('Erreur 700 - Encodage du signal index='+IntToSTR(i),clRed); Signaux[i].modifie:=false; // sauvegarde en cours, on démarque writeln(fichierN,s); end; @@ -1977,7 +1985,7 @@ end; procedure trier_detecteurs; var i,j,temp : integer; begin - for i:=1 to NDetecteurs do + for i:=1 to NDetecteurs-1 do begin for j:=i+1 to NDetecteurs do begin @@ -1991,12 +1999,12 @@ begin end; end; -// trie les aiguillages +// trier les aiguillages procedure trier_aig; var i,j : integer; temp : TAiguillage; begin - for i:=1 to MaxAiguillage do + for i:=1 to MaxAiguillage-1 do begin for j:=i+1 to MaxAiguillage do begin @@ -2010,7 +2018,7 @@ begin end; for i:=1 to MaxAiguillage do - index_accessoire[aiguillage[i].adresse]:=i; + tablo_index_aiguillage[aiguillage[i].adresse]:=i; end; // trie les signaux @@ -2018,7 +2026,7 @@ procedure trier_sig; var i,j : integer; temp : TSignal; begin - for i:=1 to NbreSignaux do + for i:=1 to NbreSignaux-1 do begin for j:=i+1 to NbreSignaux do begin @@ -2032,7 +2040,7 @@ begin end; for i:=1 to NbreSignaux do begin - index_accessoire[Signaux[i].adresse]:=i; + tablo_index_signal[Signaux[i].adresse]:=i; end; end; @@ -2087,7 +2095,7 @@ var s,sa,SOrigine: string; end else begin - if decode_ligne_feux(s,i) then // décode la chaine et stocke en tableau feux + if decode_ligne_signal(s,i) then // décode la chaine et stocke en tableau feux begin inc(i); end @@ -5661,15 +5669,15 @@ begin // tjd if tjd or tjs or croi then begin - if not(croi) then Label20.Visible:=true; - if tjd then + if not(croi) then begin Label20.Visible:=true; labelcrois.Visible:=false;end; + if tjd or tjs then begin ComboBoxAig.ItemIndex:=1; EditL.Visible:=false; LabelL.Visible:=false; GroupBoxEtatTJD.Visible:=true; if aiguillage[ind].EtatTJD=2 then - begin + begin RadioButtonTJD2.Checked:=true;RadioButtonTJD4.Checked:=false; EditP1.Visible:=false;EditP2.Visible:=false;EditP3.Visible:=false;EditP4.Visible:=false; LabelTJD1.Visible:=false;LabelTJD2.Visible:=false; @@ -5687,59 +5695,57 @@ begin if tjs then begin + // GroupBoxEtatTJD.Visible:=true; ComboBoxAig.ItemIndex:=2; EditL.Visible:=true; LabelL.Visible:=true; LabelL.Caption:='L'; EditL.Text:=IntToSTR(aiguillage[ind].tjsint)+aiguillage[ind].tjsintB; end; + ImageAffiche.Picture.BitMap:=Imagetjd.Picture.Bitmap; labelBG.Caption:='S'; Edit_HG.Visible:=true; EditAigTriple.Visible:=false; - + Edit_HG.ReadOnly:=false; - EditPointe_BG.ReadOnly:=false; + EditPointe_BG.ReadOnly:=false; EditDevie_HD.ReadOnly:=false; EditDroit_BD.ReadOnly:=false; tjd:=true; labelHG.Visible:=true; - + CheckInverse.Visible:=true; EditDevieS2.Visible:=false; Label18.Visible:=false; adr2:=aiguillage[Index_Aig(adresse)].DDevie; id2:=Index_Aig(adr2); - + // champ en haut à gauche - b:=aiguillage[Index_Aig(adresse)].ADroitB; - if b='Z' then b:=#0; - Edit_HG.Text:=intToSTR(aiguillage[index].ADroit)+b; - Edit_HG.Hint:=TypeElAIg_to_char(aiguillage[index].Adroit,b); + Edit_HG.Text:=intToSTR(aiguillage[index].ADroit)+aiguillage[Index_Aig(adresse)].ADroitB; + Edit_HG.Hint:=TypeElAIg_to_char(aiguillage[index].Adroit,aiguillage[Index_Aig(adresse)].ADroitB); // champ en bas à gauche - b:=aiguillage[Index].ADevieB; - if b='Z' then b:=#0; - EditPointe_BG.Text:=intToSTR(aiguillage[index].ADevie)+b; - EditPointe_BG.Hint:=TypeElAIg_to_char(aiguillage[index].ADevie,b); + EditPointe_BG.Text:=intToSTR(aiguillage[index].ADevie)+aiguillage[Index].ADevieB;; + EditPointe_BG.Hint:=TypeElAIg_to_char(aiguillage[index].ADevie,aiguillage[Index].ADevieB); // milieu haut gauche - EditP1.Text:=intToSTR(adresse)+aiguillage[Index].DDroitB; + EditP1.Text:=intToSTR(adresse)+aiguillage[Index].DDroitB; // milieu bas gauche EditP2.Text:=intToSTR(adresse)+aiguillage[Index].DDevieB; - + // milieu haut droit EditP3.Text:=intToSTR(aiguillage[index].Ddevie)+aiguillage[index].DDevieB; // milieu bas droit - EditP4.Text:=intToSTR(aiguillage[index].Ddroit)+aiguillage[index].DdroitB; + EditP4.Text:=intToSTR(aiguillage[index].Ddroit)+aiguillage[index].DdroitB; if (aiguillage[ind].EtatTJD=4) or tjs then begin // droit haut - EditDevie_HD.Text:=intToSTR(aiguillage[id2].Adevie)+aiguillage[id2].AdevieB; - EditDevie_HD.Hint:=TypeElAIg_to_char(aiguillage[id2].Adevie,aiguillage[id2].AdevieB); + EditDevie_HD.Text:=intToSTR(aiguillage[id2].Adevie)+aiguillage[id2].AdevieB; + EditDevie_HD.Hint:=TypeElAIg_to_char(aiguillage[id2].Adevie,aiguillage[id2].AdevieB); LabelTJD1.Caption:=IntToSTR(adresse); - + // droit bas EditDroit_BD.Text:=intToSTR(aiguillage[id2].Adroit)+aiguillage[Id2].AdroitB; EditDroit_BD.Hint:=TypeElAIg_to_char(aiguillage[id2].ADroit,aiguillage[Id2].AdroitB); @@ -5749,7 +5755,7 @@ begin if ((aiguillage[ind].EtatTJD=2) and tjd) or croi then begin // droit haut - EditDevie_HD.Text:=intToSTR(aiguillage[index].Ddevie)+aiguillage[index].DdevieB; + EditDevie_HD.Text:=intToSTR(aiguillage[index].Ddevie)+aiguillage[index].DdevieB; EditDevie_HD.Hint:=TypeElAIg_to_char(aiguillage[index].Ddevie,aiguillage[index].DdevieB); LabelTJD1.Caption:=IntToSTR(adresse); @@ -6781,7 +6787,6 @@ begin ComboBoxAig.ItemIndex:=-1; formconfig.ComboBoxDD.ItemIndex:=-1; - with Formconfig.ListBoxAig do begin i:=0; @@ -6905,7 +6910,11 @@ begin begin adr2:=aiguillage[index].DDroit; // adresse homologue index:=Index_aig(adr2); - if index=0 then exit; + if index=0 then + begin + labelInfo.Caption:='Renseignez le champ vert droit pour l''adresse homologue'; + exit; + end; aiguillage[index].Adevie:=adr; aiguillage[index].AdevieB:=B; LabelInfo.caption:='Modification de la TJD homologe ('+IntToSTR(adr2)+')'; @@ -7077,19 +7086,22 @@ begin end; end; -procedure TFormConfig.EditDevieS2KeyPress(Sender: TObject; var Key: Char); +procedure TFormConfig.EditDevieS2Change(Sender: TObject); var AdrAig,adr,erreur,index : integer; b : char; s : string; begin // cliqué sur le edit droit aiguillage // ne pas traiter si on a cliqué sur la liste - if clicliste or (ligneClicAig<0) or (ord(Key)<>VK_RETURN) then exit; + if clicliste or (ligneClicAig<0) + // or (ord(Key)<>VK_RETURN) + then exit; if affevt then affiche('Evt change S2',clyellow); if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then with Formconfig do begin + clicListe:=true; s:=formconfig.ListBoxAig.items[ligneclicAig]; Val(s,adrAig,erreur); //vérifier la syntaxe de P @@ -7114,7 +7126,8 @@ begin begin LabelInfo.caption:='Erreur S2 aiguillage '+intToSTR(AdrAig); end; - end; + end; + clicListe:=false; end; @@ -7177,9 +7190,10 @@ begin if index<>0 then begin aiguillage[index].etatTJD:=2; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; end; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; + formconfig.ListBoxAig.selected[ligneclicAig]:=true; end; @@ -7210,9 +7224,10 @@ begin begin aiguillage[index].etatTJD:=4; aiguillage[index].modifie:=true; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; end; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; + formconfig.ListBoxAig.selected[ligneclicAig]:=true; end; @@ -8080,7 +8095,7 @@ end; procedure TFormConfig.EditAdrAigChange(Sender: TObject); var s : string; - i,vide,erreur,index,adr2 : integer; + nEtat,i,vide,erreur,index,adr2 : integer; modele: TEquipement; c : char; begin @@ -8102,39 +8117,49 @@ begin modele:=aiguillage[index].modele; // si normal ou triple - if (modele=aig) or (modele=triple) then - begin - if (erreur<>0) or (i>MaxAcc) then begin LabelInfo.caption:='Erreur adresse aiguillage ';exit;end; - // vérifier si l'adresse de l'aiguillage existe déja - if (aiguillage[Index_Aig(i)].modele<>rien) then - begin - EditAdrAig.Color:=clred; - LabelInfo.caption:='aiguillage '+IntToSTR(i)+' existe déja - ne sera pas écrasé' ; - exit; - end; + if (erreur<>0) or (i>MaxAcc) then begin LabelInfo.caption:='Erreur adresse aiguillage ';exit;end; + // vérifier si l'adresse de l'aiguillage existe déja + if (aiguillage[Index_Aig(i)].modele<>rien) then + begin + EditAdrAig.Color:=clred; + LabelInfo.caption:='aiguillage '+IntToSTR(i)+' existe déja - ne sera pas écrasé' ; + exit; + end; + + EditAdrAig.Color:=clWindow; + LabelInfo.caption:=' '; + + if (modele=aig) or (modele=triple) or (modele=crois) then + begin EditAdrAig.Color:=clWindow; LabelInfo.caption:=' '; aiguillage[index].adresse:=i; aiguillage[index].modifie:=true; - index_accessoire[i]:=index; + tablo_index_aiguillage[i]:=index; s:=encode_aig(index); formconfig.ListBoxAig.items[ligneclicAig]:=s; formconfig.ListBoxAig.selected[ligneclicAig]:=true; end; + if (modele=tjd) or (modele=tjs) then begin clicListe:=true; + nEtat:=aiguillage[index].EtatTJD; + if nEtat=4 then + begin // modifier les champs P1 et P2 avec la nouvelle adresse - val(editP1.Text,vide,erreur); - if erreur<>0 then c:=editP1.text[erreur] else c:='D'; - editP1.Text:=IntToSTR(i)+c; - val(editP2.Text,vide,erreur); - if erreur<>0 then c:=editP2.text[erreur] else c:='D'; - editP2.Text:=IntToSTR(i)+c; - + val(editP1.Text,vide,erreur); + if erreur<>0 then c:=editP1.text[erreur] else c:='D'; + editP1.Text:=IntToSTR(i)+c; + val(editP2.Text,vide,erreur); + if erreur<>0 then c:=editP2.text[erreur] else c:='D'; + editP2.Text:=IntToSTR(i)+c; + end; clicListe:=false; + aiguillage[index].adresse:=i; + tablo_index_aiguillage[i]:=index; aiguillage[index].modifie:=true; s:=encode_aig(index); formconfig.ListBoxAig.items[index-1]:=s; @@ -8143,10 +8168,13 @@ begin // modif homologue adr2:=aiguillage[index].Ddroit; index:=index_aig(adr2); - aiguillage[index].dDroit:=i; - aiguillage[index].dDevie:=i; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; + if index<>0 then + begin + aiguillage[index].dDroit:=i; + aiguillage[index].dDevie:=i; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + end; ListBoxSig.selected[ligneClicSig]:=true; end; end; @@ -8836,7 +8864,7 @@ begin config_modifie:=true; // encoder l'index - Index_accessoire[i]:=Signaux[i].Adresse; + tablo_index_signal[Signaux[i].Adresse]:=i; end; procedure TFormConfig.ButtonNouvFeuClick(Sender: TObject); @@ -8844,7 +8872,7 @@ begin ajoute_signal; end; -procedure supprime_sig; +procedure supprime_sig; var n,i,j : integer; s,ss : string; begin @@ -8880,7 +8908,7 @@ begin FormConfig.ButtonInsFeu.Caption:='Ajouter le signal '+intToSTR(Signaux[i].adresse)+' supprimé'; // supprimer le signal i - Affiche('supprime signal '+intToSTR(Signaux[i].adresse),clOrange); + Affiche('Supprime signal '+intToSTR(Signaux[i].adresse),clOrange); formconfig.ListBoxSig.Items.Delete(i-1); @@ -8892,16 +8920,18 @@ begin for j:=i to NbreSignaux-1 do begin Signaux[j]:=Signaux[j+1]; - if Signaux[j].img=nil then affiche('erreur',clred); + tablo_index_signal[signaux[j].adresse]:=j; + if Signaux[j].img=nil then affiche('erreur',clred) + else + with Signaux[j].Img do + begin + Parent:=Formprinc.ScrollBox1; // dire que l'image est dans la scrollBox1 + Top:=(HtImg+espY+20)*((j-1) div NbreImagePLigne); // détermine les points d'origine + Left:=10+ (LargImg+5)*((j-1) mod (NbreImagePLigne)); + Name:='ImageFeu'+IntToSTR(Signaux[j].adresse); + Maj_Hint_Signal(j); + end; - with Signaux[j].Img do - begin - Parent:=Formprinc.ScrollBox1; // dire que l'image est dans la scrollBox1 - Top:=(HtImg+espY+20)*((j-1) div NbreImagePLigne); // détermine les points d'origine - Left:=10+ (LargImg+5)*((j-1) mod (NbreImagePLigne)); - Name:='ImageFeu'+IntToSTR(Signaux[j].adresse); - Maj_Hint_Signal(j); - end; with Signaux[j].Lbl do begin Top:=HtImg+((HtImg+EspY+20)*((j-1) div NbreImagePLigne)); @@ -9068,7 +9098,7 @@ end; function verif_coherence : boolean; -var AncAdr,i,j,k,l,Indexaig,adr,adr2,extr,detect,condcarre,nc,index2,SuivAdr,indexTCO, +var AncAdr,i,j,k,l,Indexaig,adr,adr2,extr,detect,condcarre,nc,index2,SuivAdr,indexTCO,AdrAig, x,y,extr2,adr3,index3,det1Br,det2Br,det1index,det2index,adresse,Adresse2,dec,nc2 : integer; modAig,AncModel,model,km,SuivModel,model2: TEquipement; c : char; @@ -9079,11 +9109,11 @@ begin // validation des index signaux et détecteurs for i:=1 to NbreSignaux do begin - index_accessoire[Signaux[i].adresse]:=i; + tablo_index_signal[Signaux[i].adresse]:=i; end; for i:=1 to maxAiguillage do begin - index_accessoire[aiguillage[i].adresse]:=i; + tablo_index_aiguillage[aiguillage[i].adresse]:=i; end; // vérification de la cohérence1 @@ -9153,34 +9183,89 @@ begin ok:=false; end; end;} + + // vérifier si le détecteur sur la position droite est dans les branches adr:=aiguillage[Indexaig].Adroit; if (aiguillage[Indexaig].AdroitB='Z') or (aiguillage[Indexaig].AdroitB=#0) then begin trouve_detecteur(adr); if IndexBranche_trouve=0 then begin - Affiche('Erreur 21: détecteur '+intToSTR(adr)+' décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais absent dans la description des branches',clred); + Affiche('Erreur 21.1: détecteur '+intToSTR(adr)+' décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais absent dans la description des branches',clred); ok:=false; + end + else + begin + AdrAig:=aiguillage[IndexAig].Adresse; + det1br:=brancheN[branche_trouve,indexBranche_trouve-1].Adresse; // adresse avant détecteur + det2br:=brancheN[branche_trouve,indexBranche_trouve+1].Adresse; // adresse après détecteur + if (det1br<>AdrAig) and (det2br<>AdrAig) and (adr<>0) then + begin + Affiche('Erreur 21.2: Le détecteur '+intToSTR(adr)+' est décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais déclaré dans la ',clred); + s:='branche '+intToSTR(Branche_trouve)+' entre'; + if brancheN[branche_trouve,indexBranche_trouve-1].BType=aig then s:=s+' l''aiguillage ' else s:=s+' le détecteur '; + s:=s+intToSTR(det1br)+' et '; + if brancheN[branche_trouve,indexBranche_trouve+1].BType=aig then s:=s+' l''aiguillage ' else s:=s+' le détecteur '; + s:=s+intToSTR(det2br); + Affiche(s,clred); + ok:=false; + end; end; end; + // vérifier si le détecteur sur la position déviée est dans les branches adr:=aiguillage[Indexaig].Adevie; if (aiguillage[Indexaig].AdevieB='Z') or (aiguillage[Indexaig].AdevieB=#0) then begin trouve_detecteur(adr); if IndexBranche_trouve=0 then begin - Affiche('Erreur 31: détecteur '+intToSTR(adr)+' décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais absent dans la description des branches',clRed); + Affiche('Erreur 22.1: détecteur '+intToSTR(adr)+' décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais absent dans la description des branches',clRed); ok:=false; + end + else + begin + AdrAig:=aiguillage[IndexAig].Adresse; + det1br:=brancheN[branche_trouve,indexBranche_trouve-1].Adresse; // adresse avant détecteur + det2br:=brancheN[branche_trouve,indexBranche_trouve+1].Adresse; // adresse après détecteur + if (det1br<>AdrAig) and (det2br<>AdrAig) and (adr<>0) then + begin + Affiche('Erreur 22.2: Le détecteur '+intToSTR(adr)+' est décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais déclaré dans la ',clred); + s:='branche '+intToSTR(Branche_trouve)+' entre'; + if brancheN[branche_trouve,indexBranche_trouve-1].BType=aig then s:=s+' l''aiguillage ' else s:=s+' le détecteur '; + s:=s+intToSTR(det1br)+' et '; + if brancheN[branche_trouve,indexBranche_trouve+1].BType=aig then s:=s+' l''aiguillage ' else s:=s+' le détecteur '; + s:=s+intToSTR(det2br); + Affiche(s,clred); + ok:=false; + end; end; end; + // vérifier si le détecteur sur la pointe est dans les branches adr:=aiguillage[Indexaig].Apointe; if ( ((aiguillage[Indexaig].ApointeB='Z') or (aiguillage[Indexaig].ApointeB=#0)) and (aiguillage[Indexaig].modele=aig) ) then begin trouve_detecteur(adr); if IndexBranche_trouve=0 then begin - Affiche('Erreur 4 : détecteur '+intToSTR(adr)+' décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais absent dans la description des branches',clRed); + Affiche('Erreur 23.1 : détecteur '+intToSTR(adr)+' décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais absent dans la description des branches',clRed); ok:=false; + end + else + begin + AdrAig:=aiguillage[IndexAig].Adresse; + det1br:=brancheN[branche_trouve,indexBranche_trouve-1].Adresse; // adresse avant détecteur + det2br:=brancheN[branche_trouve,indexBranche_trouve+1].Adresse; // adresse après détecteur + if (det1br<>AdrAig) and (det2br<>AdrAig) and (adr<>0) then + begin + Affiche('Erreur 23.2: Le détecteur '+intToSTR(adr)+' est décrit dans l''aiguillage '+intToSTR(aiguillage[Indexaig].adresse)+' mais déclaré dans la ',clred); + s:='branche '+intToSTR(Branche_trouve)+' entre'; + if brancheN[branche_trouve,indexBranche_trouve-1].BType=aig then s:=s+' l''aiguillage ' else s:=s+' le détecteur '; + s:=s+intToSTR(det1br)+' et '; + if brancheN[branche_trouve,indexBranche_trouve+1].BType=aig then s:=s+' l''aiguillage ' else s:=s+' le détecteur '; + s:=s+intToSTR(det2br); + Affiche(s,clred); + ok:=false; + end; end; end; if (aiguillage[Indexaig].modele=triple) then // aiguillage triple @@ -10046,6 +10131,9 @@ begin aiguillage[i].vitesse:=0; aiguillage[i].IndexBranche:=0; + // encoder l'index + tablo_index_aiguillage[aiguillage[i].Adresse]:=i; + s:=encode_Aig(i); // scroller à la fin et sélectionner with formconfig.ListBoxAig do @@ -10064,8 +10152,7 @@ begin config_modifie:=true; Aig_sauve.Adresse:=0; - // encoder l'index - Index_accessoire[i]:=aiguillage[i].Adresse; + end; procedure TFormConfig.ButtonNouvAigClick(Sender: TObject); @@ -10108,6 +10195,7 @@ begin repeat if formconfig.ListBoxAig.selected[i-1] then begin + Affiche('Supprime aiguillage '+intToSTR(aiguillage[i].Adresse),clOrange); Aig_supprime:=aiguillage[i]; // sauve l'aiguillage supprimé FormConfig.ButtonAjSup.Caption:='Ajouter l''aig '+intToSTR(aiguillage[i].adresse)+' supprimé'; @@ -10115,6 +10203,7 @@ begin begin formconfig.ListBoxAig.selected[j-1]:=formconfig.ListBoxAig.selected[j]; Aiguillage[j]:=Aiguillage[j+1]; + tablo_index_aiguillage[aiguillage[j].Adresse]:=j; end; dec(MaxAiguillage); i:=0; @@ -10145,216 +10234,232 @@ begin Supprime_aig; end; -procedure TFormConfig.EditP1KeyPress(Sender: TObject; var Key: Char); -var AdrAig,adr,adr2,erreur,index,id2 : integer; +procedure adresse_p1; +var AdrAig,adr,erreur,index,adr2 : integer; b,c : char; + model: Tequipement; s : string; begin - if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; if affevt then affiche('Evt change P1',clyellow); - + if clicliste or (ligneclicAig<0) then exit; if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then with Formconfig do begin s:=formconfig.ListBoxAig.items[ligneClicAig]; Val(s,adrAig,erreur); - - //vérifier la syntaxe de P + + //vérifier la syntaxe s:=EditP1.text; if RightStr(s,1)<>'D' then begin + val(s,adr,erreur); clicListe:=true; - s:=s+'D'; + if erreur=0 then s:=intToSTR(adr)+'D' + else + begin + delete(s,length(s),1); + s:=s+'D'; + end; editP1.text:=s; clicListe:=false; end; - + decodeAig(s,adr,B); - if (B='D') and (adr<>0) then - begin - LabelInfo.caption:=''; - Index:=Index_Aig(AdrAig); - - Aiguillage[index].modifie:=true; - LabelInfo.caption:=''; - // modifier la base de données de l'aiguillage - if b=#0 then b:='Z'; - - adr2:=aiguillage[index].DDevie; // ancien aiguillage associé à la tjd - clicliste:=true; - if B='D' then c:='S'; - if B='S' then c:='D'; - EditP2.Text:=IntToSTR(adr)+c; - clicliste:=false; - LabelInfo.caption:='Changement de l''adresse de la TJD de '+IntToSTR(adr2)+' à '+intToSTR(adr) ; - - id2:=Index_Aig(Adr); - if (aiguillage[id2].modele<>rien) then - begin - LabelInfo.caption:='aiguillage '+IntToSTR(adr)+' existe déja - ne sera pas écrasé' ; - exit; - end ; - aiguillage[index].Adresse:=adr; - clicliste:=true; - editAdrAig.Text:=IntToSTR(adr); - clicListe:=false; - s:=encode_aig(index); - formconfig.ListBoxAig.items[ligneClicAig]:=s; - s:=encode_aig(index); - formconfig.ListBoxAig.items[ligneClicAig]:=s; - // changer l'homologue - adr2:=aiguillage[index].Ddroit; - index:=index_aig(Adr2); - aiguillage[index].Ddroit:=adr; - aiguillage[index].Ddevie:=adr; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; - end - else - LabelInfo.caption:='Erreur P1 TJD '+intToSTR(AdrAig); - end; -end; - -procedure TFormConfig.EditP2KeyPress(Sender: TObject; var Key: Char); -var AdrAig,adr,adr2,erreur,index,id2 : integer; - b,c : char; - s : string; -begin - if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; - if affevt then affiche('Evt change P2',clyellow); - - if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then - with Formconfig do - begin - s:=formconfig.ListBoxAig.items[ligneClicAig]; - Val(s,adrAig,erreur); - - //vérifier la syntaxe - s:=EditP2.text; - if RightStr(s,1)<>'S' then - begin - clicListe:=true; - s:=s+'S'; - editP2.text:=s; - clicListe:=false; - end; - - decodeAig(s,adr,B); - if (B='S') and (adr<>0) then - begin - LabelInfo.caption:=''; - Index:=Index_Aig(AdrAig); - - Aiguillage[index].modifie:=true; - LabelInfo.caption:=''; - // modifier la base de données de l'aiguillage - if b=#0 then b:='Z'; - - adr2:=aiguillage[index].DDevie; // ancien aiguillage associé à la tjd - clicliste:=true; - if B='D' then c:='S'; - if B='S' then c:='D'; - EditP1.Text:=IntToSTR(adr)+c; - clicliste:=false; - - LabelInfo.caption:='Changement de l''adresse de la TJD de '+IntToSTR(adr2)+' à '+intToSTR(adr) ; - - id2:=Index_Aig(Adr); - if (aiguillage[id2].modele<>rien) then - begin - LabelInfo.caption:='aiguillage '+IntToSTR(adr)+' existe déja - ne sera pas écrasé' ; - exit; - end ; - aiguillage[index].Adresse:=adr; - clicliste:=true; - editAdrAig.Text:=IntToSTR(adr); - clicListe:=false; - s:=encode_aig(index); - formconfig.ListBoxAig.items[ligneClicAig]:=s; - // changer l'homologue - adr2:=aiguillage[index].Ddroit; - index:=index_aig(Adr2); - aiguillage[index].Ddroit:=adr; - aiguillage[index].Ddevie:=adr; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; - end - else - LabelInfo.caption:='Erreur P2 TJD '+intToSTR(AdrAig); - end; -end; - -procedure TFormConfig.EditP3KeyPress(Sender: TObject; var Key: Char); -var AdrAig,adr,adr2,erreur,index : integer; - model: Tequipement; - b,c : char; - s : string; -begin - if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; - if affevt then affiche('Evt change P3',clyellow); - if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then - with Formconfig do - begin - s:=formconfig.ListBoxAig.items[ligneClicAig]; - Val(s,adrAig,erreur); // adrAig est l'adresse de l'aiguillage modifié - - //vérifier la syntaxe - s:=EditP3.text; - if RightStr(s,1)<>'S' then - begin - clicListe:=true; - s:=s+'S'; - editP3.text:=s; - clicListe:=false; - end; - - decodeAig(s,adr,B); // adr est le contenu du champ P3 - if (B='S') and (adr<>0) then + if (B='D') and (adr<>0) then + begin + LabelInfo.caption:=''; + Index:=Index_Aig(AdrAig); + model:=aiguillage[Index].modele; + + Aiguillage[index].modifie:=true; + LabelInfo.caption:=''; + // modifier la base de données de l'aiguillage + if b=#0 then b:='Z'; + + clicliste:=true; + if B='D' then c:='S'; + if B='S' then c:='D'; + EditP2.Text:=IntToSTR(adr)+c; + + // existe, vérifier si c'est bien une TJD/S + if (model=tjd) or (model=tjs) then + begin + if model=tjd then labelInfo.Caption:='Mise à jour de la TJD '+IntToSTR(adr); + if model=tjs then labelInfo.Caption:='Mise à jour de la TJS '+IntToSTR(adr); + aiguillage[Index].modele:=model; + adr2:=aiguillage[index].adresse; // adresse avant modif + tablo_index_aiguillage[adr2]:=0; // supprimer l'index de l'ancienne adresse + + aiguillage[index].adresse:=adr; // met la nouvelle adresse à jour + tablo_index_aiguillage[adr]:=index; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + + adr2:=aiguillage[index].dDroit; // adresse de la tjd homologue + index:=tablo_index_aiguillage[adr2]; + if index<>0 then + begin + aiguillage[index].DDroit:=adr; // mettre la nouvelle adresse dans la tjd/s homologue + aiguillage[index].DDevie:=adr; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + end; + end; + end + else + LabelInfo.caption:='Erreur P1 TJD/S '+intToSTR(AdrAig); + end; + clicliste:=false; +end; + + +procedure adresse_p2; +var AdrAig,adr,adr2,erreur,index : integer; + b,c : char; + model: Tequipement; + s : string; +begin + if affevt then affiche('Evt change P2',clyellow); + if clicliste or (ligneclicAig<0) then exit; + if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then + with Formconfig do + begin + s:=formconfig.ListBoxAig.items[ligneClicAig]; + Val(s,adrAig,erreur); + + //vérifier la syntaxe + s:=EditP2.text; + if RightStr(s,1)<>'S' then + begin + val(s,adr,erreur); + clicListe:=true; + if erreur=0 then s:=intToSTR(adr)+'S' + else + begin + delete(s,length(s),1); + s:=s+'S'; + end; + editP2.text:=s; + clicListe:=false; + end; + + decodeAig(s,adr,B); + if (B='S') and (adr<>0) then + begin + LabelInfo.caption:=''; + Index:=Index_Aig(AdrAig); + model:=aiguillage[Index].modele; + + Aiguillage[index].modifie:=true; + LabelInfo.caption:=''; + // modifier la base de données de l'aiguillage + if b=#0 then b:='Z'; + + clicliste:=true; + if B='D' then c:='S'; + if B='S' then c:='D'; + EditP1.Text:=IntToSTR(adr)+c; + + // existe, vérifier si c'est bien une TJD/S + if (model=tjd) or (model=tjs) then + begin + if model=tjd then labelInfo.Caption:='Mise à jour de la TJD '+IntToSTR(adr); + if model=tjs then labelInfo.Caption:='Mise à jour de la TJS '+IntToSTR(adr); + aiguillage[Index].modele:=model; + adr2:=aiguillage[index].adresse; // adresse avant modif + tablo_index_aiguillage[adr2]:=0; // supprimer l'index de l'ancienne adresse + + aiguillage[index].adresse:=adr; // met la nouvelle adresse à jour + tablo_index_aiguillage[adr]:=index; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + + adr2:=aiguillage[index].dDroit; // adresse de la tjd homologue + index:=tablo_index_aiguillage[adr2]; + if index<>0 then + begin + aiguillage[index].DDroit:=adr; // mettre la nouvelle adresse dans la tjd/s homologue + aiguillage[index].DDevie:=adr; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + end; + end; + end + else + LabelInfo.caption:='Erreur P1 TJD/S '+intToSTR(AdrAig); + end; + clicliste:=false; +end; + +procedure adresse_p3; +var AdrAig,adr,erreur,index,adr2 : integer; + b,c : char; + model: Tequipement; + s : string; +begin + if affevt then affiche('Evt change P3',clyellow); + if clicliste or (ligneclicAig<0) then exit; + if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then + with Formconfig do + begin + s:=formconfig.ListBoxAig.items[ligneClicAig]; + Val(s,adrAig,erreur); + + //vérifier la syntaxe + s:=EditP3.text; + if RightStr(s,1)<>'S' then + begin + val(s,adr,erreur); + clicListe:=true; + if erreur=0 then s:=intToSTR(adr)+'S' + else + begin + delete(s,length(s),1); + s:=s+'S'; + end; + editP3.text:=s; + clicListe:=false; + end; + + decodeAig(s,adr,B); + if (B='S') and (adr<>0) then begin LabelInfo.caption:=''; Index:=Index_Aig(AdrAig); model:=aiguillage[Index].modele; - if model=tjs then // TJS - begin - LabelL.caption:=IntToSTR(adr); - aiguillage[index].tjsint:=adr; - end; - - Aiguillage[index].modifie:=true; LabelInfo.caption:=''; // modifier la base de données de l'aiguillage if b=#0 then b:='Z'; - adr2:=aiguillage[index].DDevie; // ancien aiguillage associé à la tjd clicliste:=true; if B='D' then c:='S'; if B='S' then c:='D'; EditP4.Text:=IntToSTR(adr)+c; - clicliste:=false; - LabelInfo.caption:='Changement de la TJD homologue de '+IntToSTR(adr2)+' à '+intToSTR(adr) ; - adr2:=aiguillage[index].Ddroit; // 'ancienne' adresse homologue avant écrasement + adr2:=aiguillage[index].Ddroit; // 'ancienne' adresse avant écrasement aiguillage[index].Ddroit:=adr; //aiguillage[index].DdroitB:=B; aiguillage[index].Ddevie:=adr; - aiguillage[index].DdevieB:=B; - + aiguillage[index].DdevieB:=c; + s:=encode_aig(index); formconfig.ListBoxAig.items[ligneClicAig]:=s; - // changer l'homologue - index:=index_aig(Adr); + // index avant changement + index:=index_aig(Adr2); + if index=0 then // si elle n'existe pas la créer begin // créer homologue if model=tjd then labelInfo.Caption:='Création de la TJD homologue '+IntToSTR(adr); if model=tjs then labelInfo.Caption:='Création de la TJS homologue '+IntToSTR(adr); - + inc(MaxAiguillage); index:=MaxAiguillage; aiguillage[index].Adresse:=Adr; + tablo_index_aiguillage[adr]:=index; aiguillage[Index].modele:=model; aiguillage[Index].Adroit:=0; aiguillage[Index].AdroitB:='D'; @@ -10366,93 +10471,181 @@ begin aiguillage[Index].DdevieB:='S'; aiguillage[Index].APointeB:='Z'; aiguillage[Index].tjsINTB:='S'; - + s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; + formconfig.ListBoxAig.items.add(s); // scroller à la fin - ListBoxAig.SetFocus; + ListBoxAig.SetFocus; // génère evt adresse_p4 donc clicListe doit être à false end // fin de la création - else + else begin - // existe, vérifier si c'est bien une TJD/S + // si l'ancienne adresse = la nouvelle, on a rien changé, sortir absolument sinon on va remetre l'index à 0 + if adr=adr2 then begin clicListe:=false;exit;end; model:=aiguillage[Index].modele; + // existe, vérifier si c'est bien une TJD/S if (model=tjd) or (model=tjs) then begin + if model=tjd then labelInfo.Caption:='Mise à jour de la TJD homologue '+IntToSTR(adr); + if model=tjs then labelInfo.Caption:='Mise à jour de la TJS homologue '+IntToSTR(adr); + aiguillage[Index].modele:=model; aiguillage[index].adresse:=adr; + tablo_index_aiguillage[adr]:=index; + tablo_index_aiguillage[adr2]:=0; // raz l'ancien index s:=encode_aig(index); formconfig.ListBoxAig.items[index-1]:=s; - end - else - labelInfo.caption:='L''aiguillage '+IntToSTR(adr)+' existe, il ne sera pas écrasé'; - end; + end; + end; end else LabelInfo.caption:='Erreur P3 TJD '+intToSTR(AdrAig); - end; + end; + clicliste:=false; end; - -procedure TFormConfig.EditP4KeyPress(Sender: TObject; var Key: Char); -var AdrAig,adr,adr2,erreur,index : integer; +procedure adresse_p4; +var AdrAig,adr,erreur,index,adr2 : integer; b,c : char; + model: Tequipement; s : string; begin - if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; if affevt then affiche('Evt change P4',clyellow); - + if clicliste or (ligneclicAig<0) then exit; if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then with Formconfig do begin s:=formconfig.ListBoxAig.items[ligneClicAig]; Val(s,adrAig,erreur); - + //vérifier la syntaxe s:=EditP4.text; if RightStr(s,1)<>'D' then begin + val(s,adr,erreur); clicListe:=true; - s:=s+'D'; + if erreur=0 then s:=intToSTR(adr)+'D' + else + begin + delete(s,length(s),1); + s:=s+'D'; + end; editP4.text:=s; clicListe:=false; end; - + decodeAig(s,adr,B); - if (B='D') and (adr<>0) then + if (B='D') and (adr<>0) then begin LabelInfo.caption:=''; Index:=Index_Aig(AdrAig); - + model:=aiguillage[Index].modele; + Aiguillage[index].modifie:=true; LabelInfo.caption:=''; // modifier la base de données de l'aiguillage if b=#0 then b:='Z'; - adr2:=aiguillage[index].DDevie; // ancien aiguillage associé à la tjd clicliste:=true; if B='D' then c:='S'; if B='S' then c:='D'; EditP3.Text:=IntToSTR(adr)+c; - clicliste:=false; - LabelInfo.caption:='Changement de la TJD homologue de '+IntToSTR(adr2)+' à '+intToSTR(adr) ; - adr2:=aiguillage[index].Ddroit; // 'ancienne' adresse homologue avant écrasement + adr2:=aiguillage[index].Ddroit; // 'ancienne' adresse avant écrasement aiguillage[index].Ddroit:=adr; //aiguillage[index].DdroitB:=B; aiguillage[index].Ddevie:=adr; - aiguillage[index].DdevieB:=B; + aiguillage[index].DdevieB:=c; s:=encode_aig(index); formconfig.ListBoxAig.items[ligneClicAig]:=s; - // changer l'homologue + // index de l'ancienne adresse index:=index_aig(Adr2); - aiguillage[index].adresse:=adr; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; + + if index=0 then // si elle n'existe pas la créer + begin + // créer homologue + if model=tjd then labelInfo.Caption:='Création de la TJD homologue '+IntToSTR(adr); + if model=tjs then labelInfo.Caption:='Création de la TJS homologue '+IntToSTR(adr); + + inc(MaxAiguillage); + index:=MaxAiguillage; + aiguillage[index].Adresse:=Adr; + tablo_index_aiguillage[adr]:=index; + aiguillage[Index].modele:=model; + aiguillage[Index].Adroit:=0; + aiguillage[Index].AdroitB:='D'; + aiguillage[Index].Adevie:=0; + aiguillage[Index].AdevieB:='D'; + aiguillage[Index].Ddroit:=adrAig; + aiguillage[Index].DdroitB:='D'; + aiguillage[Index].Ddevie:=adrAig; + aiguillage[Index].DdevieB:='S'; + aiguillage[Index].APointeB:='Z'; + aiguillage[Index].tjsINTB:='S'; + + s:=encode_aig(index); + formconfig.ListBoxAig.items.add(s); + // scroller à la fin + ListBoxAig.SetFocus; // génère evt adresse_p4 donc clicListe doit être à false + end // fin de la création + else + begin + // si l'ancienne adresse = la nouvelle, on a rien changé, sortir absolument sinon on va remetre l'index à 0 + if adr=adr2 then begin clicListe:=false;exit;end; + model:=aiguillage[Index].modele; + // existe, vérifier si c'est bien une TJD/S + if (model=tjd) or (model=tjs) then + begin + if model=tjd then labelInfo.Caption:='Mise à jour de la TJD homologue '+IntToSTR(adr); + if model=tjs then labelInfo.Caption:='Mise à jour de la TJS homologue '+IntToSTR(adr); + + aiguillage[index].adresse:=adr; + tablo_index_aiguillage[adr]:=index; + tablo_index_aiguillage[adr2]:=0; // supprimer l'ancien index + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + end; + end; end else LabelInfo.caption:='Erreur P4 TJD '+intToSTR(AdrAig); - end; + end; + clicliste:=false; +end; + +procedure TFormConfig.EditP1KeyPress(Sender: TObject; var Key: Char); +begin + if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; + adresse_p1; +end; + +procedure TFormConfig.EditP2KeyPress(Sender: TObject; var Key: Char); +begin + if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; + adresse_p2; +end; + +procedure TFormConfig.EditP3Exit(Sender: TObject); +begin + adresse_p3; +end; + +procedure TFormConfig.EditP4Exit(Sender: TObject); +begin + adresse_p4; +end; + +procedure TFormConfig.EditP3KeyPress(Sender: TObject; var Key: Char); +begin + if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; + adresse_P3; +end; + + +procedure TFormConfig.EditP4KeyPress(Sender: TObject; var Key: Char); +begin + if clicliste or (ligneclicAig<0) or (ord(Key)<>VK_RETURN) then exit; + adresse_p4; end; procedure TFormConfig.ButtonAjSupClick(Sender: TObject); @@ -10463,7 +10656,7 @@ begin inc(MaxAiguillage); aiguillage[MaxAiguillage]:=Aig_supprime; Aig_Supprime.adresse:=0; // dévalider l'aiguillage sauvegardé - Aig_Supprime.modele:=rien; + Aig_Supprime.modele:=rien; clicListe:=true; config_modifie:=true; @@ -10479,9 +10672,9 @@ begin SetFocus; //Selstart:=ListBoxAig.GetTextLen-1; Perform(EM_SCROLLCARET,0,0); - end; + end; Aff_champs_aig_tablo(MaxAiguillage); - end; + end; clicListe:=false; end; @@ -10497,12 +10690,12 @@ begin ListBoxAig.items[ligneclicAig]:=encode_Aig(index); aff_champs_Aig_tablo(index); // réaffiche les champs clicListe:=false; - end; + end; end; procedure TFormConfig.ComboBoxAigChange(Sender: TObject); var s: string; - i : integer; + i,i2 : integer; begin if clicListe then exit; if MaxAiguillage'S') and (aiguillage[i].tjsIntB<>'D') then aiguillage[i].tjsIntB:='D'; + if aiguillage[i].EtatTJD=4 then + begin + // si la tjd homologue existe, changer son type aussi + i2:=aiguillage[i].dDroit; + i2:=tablo_index_aiguillage[i2]; // index tjd homologue + if i2<>0 then + begin + LabelInfo.Caption:='Mise à jour TJD/S homologue'; + aiguillage[i2].modele:=aiguillage[i].modele; // type vers homologue + s:=encode_aig(i2); + formconfig.ListBoxAig.items[i2-1]:=s; + end; + end; end; if aiguillage[i].modele=crois then LabelCrois.Visible:=true else LabelCrois.Visible:=false; @@ -10529,7 +10737,6 @@ begin s:=encode_aig(i); formconfig.ListBoxAig.items[ligneclicAig]:=s; formconfig.ListBoxAig.selected[ligneclicAig]:=true; - clicliste:=true; Aff_champs_aig_tablo(i); clicliste:=false; end; @@ -10980,16 +11187,20 @@ begin s:=EditL.Text; if s='' then exit; val(s,i,erreur); - if erreur<>0 then - if (s[erreur]<>'S') and (s[erreur]<>'D') then + if (erreur<>0) then + if (s[erreur]<>'S') and (s[erreur]<>'D') then + begin + LabelInfo.caption:='Erreur Champ L manque D ou S terminal'; + exit + end + else begin - LabelInfo.caption:='Erreur Champ L manque D ou S';exit - end - else LabelInfo.caption:=''; - aiguillage[ligneclicAig+1].tjsint:=i; - aiguillage[ligneclicAig+1].tjsintb:=s[erreur]; - s:=encode_aig(ligneclicAig+1); - ListBoxAig.items[ligneclicAig]:=s; + LabelInfo.caption:=''; + aiguillage[ligneclicAig+1].tjsint:=i; + aiguillage[ligneclicAig+1].tjsintb:=s[erreur]; + s:=encode_aig(ligneclicAig+1); + ListBoxAig.items[ligneclicAig]:=s; + end; end; end; @@ -13263,15 +13474,27 @@ begin EditAdrSig.Color:=clWindow; LabelInfo.caption:=' '; Signaux[ligneClicSig+1].adresse:=i; + tablo_index_signal[i]:=ligneClicSig+1; + Signaux[ligneClicSig+1].Lbl.caption:='@'+IntToSTR(i); - index_accessoire[i]:=ligneClicSig+1; s:=encode_sig_feux(ligneClicSig+1); ListBoxSig.Items[ligneClicSig]:=s; ListBoxSig.selected[ligneClicSig]:=true; Maj_Hint_Signal(ligneClicSig+1); - end; + end; end; -end. +procedure TFormConfig.EditP1Exit(Sender: TObject); + begin + adresse_P1; +end; + +procedure TFormConfig.EditP2Exit(Sender: TObject); + begin + adresse_P2; +end; + + + end. diff --git a/UnitPrinc.dfm b/UnitPrinc.dfm index 1dc3159..4fb33c4 100644 --- a/UnitPrinc.dfm +++ b/UnitPrinc.dfm @@ -19,8 +19,8 @@ object FormPrinc: TFormPrinc OnCreate = FormCreate OnResize = FormResize DesignSize = ( - 1125 - 602) + 1117 + 595) PixelsPerInch = 96 TextHeight = 13 object LabelTitre: TLabel @@ -1429,8 +1429,8 @@ object FormPrinc: TFormPrinc end object StatusBar1: TStatusBar Left = 0 - Top = 580 - Width = 1125 + Top = 573 + Width = 1117 Height = 22 Panels = < item @@ -1521,7 +1521,7 @@ object FormPrinc: TFormPrinc OnMouseDown = FenRichMouseDown end object ScrollBox1: TScrollBox - Left = 424 + Left = 512 Top = 192 Width = 465 Height = 249 @@ -2032,15 +2032,6 @@ object FormPrinc: TFormPrinc end end end - object ButtonIndex: TButton - Left = 840 - Top = 176 - Width = 75 - Height = 25 - Caption = 'Indexs' - TabOrder = 4 - OnClick = ButtonIndexClick - end object MSCommCde1: TMSComm Left = 1064 Top = 272 diff --git a/UnitPrinc.pas b/UnitPrinc.pas index efd6ddf..40d53b8 100644 --- a/UnitPrinc.pas +++ b/UnitPrinc.pas @@ -1,5 +1,5 @@ Unit UnitPrinc; -// 23/12 12h +// 29/12 10h (******************************************** Programme signaux complexes Graphique Lenz Delphi 7 + activeX Tmscomm + clientSocket @@ -207,7 +207,6 @@ type Affichagenormal1: TMenuItem; N14: TMenuItem; Sauvegarderla1: TMenuItem; - ButtonIndex: TButton; MSCommCde1: TMSComm; MSCommCde2: TMSComm; ClientSocketCde1: TClientSocket; @@ -332,8 +331,7 @@ type procedure FormResize(Sender: TObject); procedure Affichagenormal1Click(Sender: TObject); procedure Sauvegarderla1Click(Sender: TObject); - procedure ButtonIndexClick(Sender: TObject); - procedure StatusBar1DrawPanel(StatusBar: TStatusBar; + procedure StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); procedure MSCommCde1Comm(Sender: TObject); procedure MSCommCde2Comm(Sender: TObject); @@ -376,8 +374,8 @@ type const titre='Signaux complexes GL '; -MaxAcc=2048; // adresse maxi d'accessoire XpressNet -NbMaxDet=513+128; // indice maximal de détecteurs d'un réseau (nombre en XpressNet=128) +MaxAcc=1024; // adresse maxi d'accessoire XpressNet (testé à la LH100) +NbMaxDet=2048; // indice maximal de détecteurs d'un réseau Max_Trains=100; // nombre maximal de train de CDM ou déclarés ou en circulation MaxZones=250; // nombre de zones de détecteurs activés par les trains MaxTrainZone=40; // nombre maximal de trains pour le tableau d'historique des zones @@ -629,7 +627,8 @@ var reaffecte : integer ; // =1 réaffecté au bon train dans le cas de 2 détecteurs contigus qui ne s'enchainent pas bien =2 réaffecté par changement aiguillage end; - Index_Accessoire : array[0..MaxAcc] of integer; // tableau d'index des accessoires aiguillages et signaux sur le bus DCC + tablo_Index_Signal : array[0..MaxAcc] of integer; // tableau d'index des accessoires signaux sur le bus DCC + tablo_Index_Aiguillage : array[0..MaxAcc] of integer; // tableau d'index des aiguillages sur le bus DCC // tableau des périphériques Tablo_periph : array[1..NbMaxi_Periph] of TPeripherique; @@ -707,11 +706,14 @@ var // modélisations des fichiers config branche : array [1..MaxBranches] of string; - // l'indice du tableau aiguillage n'est pas son adresse - aiguillage : array[0..NbreMaxiAiguillages] of Taiguillage; + + // Pour les tableaux aiguillage et signaux : l'indice du tableau aiguillage n'est pas son adresse + // ils sont stockés dans les tableaux tablo_Index_Signal[adresse]=index et tablo_Index_Aiguillage[adresse]=index + Aiguillage : array[0..NbreMaxiAiguillages] of Taiguillage; // signaux - L'index du tableau n'est pas son adresse - CdeDccpp : array[1..MaxCdeDccpp] of string; Signaux : array[0..NbreMaxiSignaux] of TSignal; + + CdeDccpp : array[1..MaxCdeDccpp] of string; trains_cdm : array[1..Max_Trains] of record nom_train : string; adresse,vitmax : integer; @@ -976,8 +978,8 @@ function chaine_signal(adresse : word) : string; var a,i,aspect,etat,combine,nation : integer; s : string; begin - //i:=Index_Signal(adresse); - i:=index_accessoire[adresse]; + i:=Index_Signal(adresse); + //i:=index_accessoire[adresse]; etat:=Signaux[i].EtatSignal ; nation:=1; a:=Signaux[i].aspect; @@ -1659,8 +1661,7 @@ begin XChiffre:=14;Ychiffre:=76; Xfin:=26;yFin:=99; - //index:=index_signal(adresse); - index:=index_accessoire[adresse]; + index:=index_signal(adresse); if Signaux[index].contrevoie then begin xvert:=largeur-xvert; @@ -2078,7 +2079,8 @@ end; function index_signal(adresse : integer) : integer; begin if adresse>MaxAcc then result:=0 else - result:=Index_Accessoire[adresse]; + //result:=Index_Accessoire[adresse]; + result:=Tablo_Index_Signal[adresse]; // vérifier si l'index correspond à un signal if Signaux[result].adresse<>adresse then result:=0; end; @@ -2100,7 +2102,7 @@ end; function Index_Aig(adresse : integer) : integer; begin if adresse>MaxAcc then result:=0 else - result:=Index_Accessoire[adresse]; + result:=tablo_index_aiguillage[adresse]; // vérifier si l'index correspond à un aiguillage if Aiguillage[result].adresse<>adresse then result:=0; end; @@ -2280,8 +2282,12 @@ begin end; dessine_signal_mx(Signaux[rang].Img.Canvas,0,0,1,1,Signaux[rang].adresse,1); //if Signaux[rang].aspect=5 then cercle(Picture.Bitmap.Canvas,13,22,6,ClYellow); + refresh; + Picture.Bitmap.Modified:=True; + end; + // créée le label pour afficher son adresse Signaux[rang].Lbl:=Tlabel.create(Formprinc.ScrollBox1); with Signaux[rang].Lbl do @@ -5271,12 +5277,12 @@ begin begin // changer l'adresse du précédent par l'autre adresse de la TJD/S // V1 index:=index_aig(prec); - index:=index_accessoire[prec]; + index:=tablo_index_aiguillage[prec]; md:=aiguillage[index].modele; if (md=tjs) or (md=tjd) then begin //V1 prec:=Aiguillage[index_aig(prec)].Ddroit; - prec:=Aiguillage[index_accessoire[prec]].Ddroit; + prec:=Aiguillage[tablo_index_aiguillage[prec]].Ddroit; if NivDebug=3 then AfficheDebug('Le précedent est une TJD/S - substitution du precédent par la pointe de la TJD qui est '+intToSTR(prec),clYellow); end; end; @@ -5297,7 +5303,7 @@ begin if (Bt=aig) or (Bt=buttoir) then // aiguillage ou buttoir begin //V1 index:=index_aig(adr); - index:=index_accessoire[adr]; + index:=tablo_index_aiguillage[adr]; if index=0 then begin if bt=aig then @@ -5399,7 +5405,7 @@ begin begin // si TJD (modele=2) sur le précédent, alors substituer avec la 2eme adresse de la TJD // V1 md:=aiguillage[index_aig(prec)].modele; - md:=aiguillage[index_accessoire[prec]].modele; + md:=aiguillage[tablo_index_aiguillage[prec]].modele; if (md=tjd) or (md=tjs) then prec:=aiguillage[index_aig(prec)].DDroit; if prec<>aiguillage[index_aig(Adr)].Adroit then //Adroit begin @@ -5483,7 +5489,7 @@ begin // récupérer les élements de la TJD/S AdrTjdP:=aiguillage[index].Ddroit; // 2eme adresse de la TJD/S // V1 index2:=index_aig(AdrTjdP); - index2:=index_accessoire[AdrTjdP]; + index2:=tablo_index_aiguillage[AdrTjdP]; tjdC:=aiguillage[index].modele=tjd; tjsC:=aiguillage[index].modele=tjs; @@ -12717,7 +12723,6 @@ begin serveurIPCDM_Touche:=false; AvecInit:=true; // &&&& avec initialisation des aiguillages ou pas Diffusion:=AvecInit; // mode diffusion publique + debug mise au point etc - ButtonIndex.Visible:=not(avecInit); roulage1.visible:=false; FenRich.MaxLength:=$7FFFFFF0; @@ -12744,7 +12749,6 @@ begin if OsBits=64 then s:='OS 64 Bits' else s:='OS 32 Bits'; s:=DateToStr(date)+' '+TimeToStr(Time)+' '+s; Affiche(s,clLime); - With ScrollBox1 do begin HorzScrollBar.Tracking:=true; @@ -12782,7 +12786,6 @@ begin Application.HintPause:=400; //visible:=true; // rend la form visible plus tot for i:=1 to MaxCdeDccpp do CdeDccpp[i]:=''; - // lecture fichiers de configuration procetape('Lecture de la configuration'); lit_config; @@ -12813,6 +12816,7 @@ begin EditEnvoi.Visible:=true; end; + Application.ProcessMessages; // Initialisation des images des signaux procetape('Création des signaux'); @@ -12825,6 +12829,7 @@ begin if debug=1 then affiche('Création du signal '+intToSTR(i)+' ----------',clLime); cree_image(i); // et initialisation tableaux signaux end; + Tempo_init:=5; // démarre les initialisation des signaux et des aiguillages dans 0,5 s if debug=1 then Affiche('Création TCO',clLime); @@ -12846,7 +12851,6 @@ begin Affiche(intToSTR(ecran[i+1].x0)+' '+intToSTR(ecran[i+1].y0)+' '+ intToSTR(ecran[i+1].larg)+' '+intToSTR(ecran[i+1].haut),clyellow); } end; - OrgMilieu:=formprinc.width div 2; with statusbar1 do begin @@ -12959,6 +12963,7 @@ begin else Affiche_Fenetre_TCO(index,avecTCO); end; + show; // ouvre les périphériques commandes actionneurs, car on a lu les com dans la config @@ -12977,6 +12982,7 @@ begin end; end; + if debug=1 then Affiche('Initialisations',clLime); raz_tout; procetape('Début des init'); @@ -13022,6 +13028,7 @@ begin end; end; + if debug=1 then Affiche('Tentative ouverture liaison centrale',clLime); if portCommOuvert or parSocketLenz then With Formprinc do @@ -13133,11 +13140,11 @@ begin else Affiche_fenetre_CDM.Enabled:=false; //Affiche(GetMACAddress,clred); - formPrinc.left:=-1000; + //formPrinc.left:=-1000; ConfCellTCO:=false; if debug=1 then Affiche('Fini',clLime); - //reserve_canton(521,527,1,1); + end; @@ -13892,7 +13899,7 @@ begin begin adr:=aiguillage[i].adresse; begin - s:=IntToSTR(i)+' Adr='+IntToSTR(adr); + s:=IntToSTR(i)+' i='+intToSTR(tablo_index_aiguillage[adr])+' Adr='+IntToSTR(adr); if aiguillage[i].modele=aig then s:=s+' Pointe='; if (aiguillage[i].modele=crois) then @@ -14731,7 +14738,7 @@ begin for i:=1 to NbreSignaux do begin // feu de signalisation - s:=IntToSTR(i)+' Adr='+IntToSTR(Signaux[i].Adresse); + s:=IntToSTR(i)+' i='+intToSTR(tablo_index_signal[Signaux[i].Adresse])+' Adr='+IntToSTR(Signaux[i].Adresse); s:=s+' décodeur='+IntToStr(Signaux[i].decodeur); asp:=Signaux[i].aspect; if asp<>20 then nation:=1 else nation:=2; @@ -16823,16 +16830,6 @@ begin end; -procedure TFormPrinc.ButtonIndexClick(Sender: TObject); -var i,v : integer; -begin - for i:=1 to MaxAcc do - begin - v:=index_accessoire[i]; - if v<>0 then affiche('adresse='+intToSTR(i)+' index = '+intToSTR(v),clLime); - end; -end; - procedure TFormPrinc.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); var RectForText: TRect; begin diff --git a/verif_version.pas b/verif_version.pas index f4269bc..2b70ee6 100644 --- a/verif_version.pas +++ b/verif_version.pas @@ -25,7 +25,7 @@ var verifVersion,notificationVersion : boolean; date_creation,nombre_tel : string; -Const Version='8.34'; // sert à la comparaison de la version publiée +Const Version='8.35'; // sert à la comparaison de la version publiée SousVersion=' '; // A B C ... en cas d'absence de sous version mettre un espace function GetCurrentProcessEnvVar(const VariableName: string): string; diff --git a/versions.txt b/versions.txt index 8e4bbe1..3cb7a5f 100644 --- a/versions.txt +++ b/versions.txt @@ -214,7 +214,9 @@ version 8.31 : Correction d'un bug sur les d version 8.32 : Un actionneur seul peut être déclenché par plusieurs trains. Correction du lancement du serveur COM-IP pour CDMRail V20.12. version 8.33 : Correction d'un bug sur le calcul d'index. -version 8.34 : Correction signal Unisemaf +version 8.34 : Correction signal Unisemaf. Ajout de la Z21 dans le choix des interfaces au lancement de CDM rail. - +version 8.35 : Correction ajout de signaux et d'aiguillages. + Renforcement de la vérification de la cohérence. + Amélioration de l'édition des TJD.