diff --git a/Installeur.exe b/Installeur.exe index 8189618..74ce0cc 100644 Binary files a/Installeur.exe and b/Installeur.exe differ diff --git a/Notice d'utilisation des signaux_complexes_GL_V8.51.pdf b/Notice d'utilisation des signaux_complexes_GL_V8.52.pdf similarity index 80% rename from Notice d'utilisation des signaux_complexes_GL_V8.51.pdf rename to Notice d'utilisation des signaux_complexes_GL_V8.52.pdf index de5007a..5628a6b 100644 Binary files a/Notice d'utilisation des signaux_complexes_GL_V8.51.pdf and b/Notice d'utilisation des signaux_complexes_GL_V8.52.pdf differ diff --git a/Signaux_complexes_GL.map b/Signaux_complexes_GL.map index d761a1d..49fcdd9 100644 --- a/Signaux_complexes_GL.map +++ b/Signaux_complexes_GL.map @@ -1,104 +1,104 @@ Start Length Name Class - 0001:00000000 0017F73CH .text CODE - 0002:00000000 00002CB0H .data DATA - 0002:00002CB0 045E33E9H .bss BSS + 0001:00000000 0017FCFCH .text CODE + 0002:00000000 00002CA0H .data DATA + 0002:00002CA0 045F6E41H .bss BSS Detailed map of segments - 0001:00000000 00005ED3 C=CODE S=.text G=(none) M=System ACBP=A9 - 0001:00005ED4 00000140 C=CODE S=.text G=(none) M=SysInit ACBP=A9 - 0001:00006014 00000108 C=CODE S=.text G=(none) M=Types ACBP=A9 - 0001:0000611C 00000F38 C=CODE S=.text G=(none) M=Windows ACBP=A9 - 0001:00007054 00000038 C=CODE S=.text G=(none) M=Messages ACBP=A9 - 0001:0000708C 00000338 C=CODE S=.text G=(none) M=SysConst ACBP=A9 - 0001:000073C4 00006FF8 C=CODE S=.text G=(none) M=SysUtils ACBP=A9 - 0001:0000E3BC 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9 - 0001:0000EBD8 0000804E C=CODE S=.text G=(none) M=Variants ACBP=A9 - 0001:00016C28 000001A0 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9 - 0001:00016DC8 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9 - 0001:00017604 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9 - 0001:0001795C 0000A7EA C=CODE S=.text G=(none) M=Classes ACBP=A9 - 0001:00022148 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9 - 0001:000224B8 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9 - 0001:0002C0B4 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9 - 0001:0002C1D8 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9 - 0001:0002C490 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9 - 0001:0002C628 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9 - 0001:0002CDB0 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9 - 0001:0002CDE8 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9 - 0001:0002DDE0 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9 - 0001:0002DE38 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9 - 0001:0002EF00 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9 - 0001:0002F220 000003F0 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9 - 0001:0002F610 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9 - 0001:0002FFCC 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9 - 0001:00030004 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9 - 0001:0003003C 00000048 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9 - 0001:00030084 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9 - 0001:000300BC 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9 - 0001:00030114 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9 - 0001:0003014C 0000007C C=CODE S=.text G=(none) M=ShlObj ACBP=A9 - 0001:000301C8 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9 - 0001:00030228 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9 - 0001:00030260 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9 - 0001:00033934 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9 - 0001:00038410 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9 - 0001:000384A0 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9 - 0001:00038C40 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9 - 0001:00038D68 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9 - 0001:0003C58C 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9 - 0001:0003C5C4 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9 - 0001:0003C62C 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9 - 0001:0003C694 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9 - 0001:0003C700 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9 - 0001:0003C758 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9 - 0001:0003C790 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9 - 0001:000460D8 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9 - 0001:00046F78 0000C698 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9 - 0001:00053610 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9 - 0001:00053778 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9 - 0001:00054498 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9 - 0001:0006589C 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9 - 0001:00066B30 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9 - 0001:000686CC 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9 - 0001:0006EDB0 0000CF8C C=CODE S=.text G=(none) M=Forms ACBP=A9 - 0001:0007BD3C 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9 - 0001:0007BD8C 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9 - 0001:0008F178 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9 - 0001:0008F1D8 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9 - 0001:00090434 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9 - 0001:0009046C 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9 - 0001:00091C00 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9 - 0001:00091C60 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9 - 0001:0009517C 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9 - 0001:00095490 00000128 C=CODE S=.text G=(none) M=WinSock ACBP=A9 - 0001:000955B8 00003A78 C=CODE S=.text G=(none) M=ScktComp ACBP=A9 - 0001:00099030 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9 - 0001:0009991C 00000598 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9 - 0001:00099EB4 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9 - 0001:00099EF4 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9 - 0001:00099F2C 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9 - 0001:0009A944 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9 - 0001:0009CA4C 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9 - 0001:000A5C98 00001820 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 - 0001:000A74B8 0000057C C=CODE S=.text G=(none) M=Importation ACBP=A9 - 0001:000A7A34 000147DC C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 - 0001:000BC210 0000289B C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 - 0001:000BEAAC 00000C64 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 - 0001:000BF710 00003D24 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 - 0001:000C3434 00032118 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 - 0001:000F554C 00003410 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 - 0001:000F895C 000027B4 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 - 0001:000FB110 0000284B C=CODE S=.text G=(none) M=verif_version ACBP=A9 - 0001:000FD95C 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 - 0001:000FEB2C 00000C00 C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 - 0001:000FF72C 00002850 C=CODE S=.text G=(none) M=Unitplace ACBP=A9 - 0001:00101F7C 0003D29F C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 - 0001:0013F21C 0003D35C C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 - 0001:0017C578 00002D04 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 - 0001:0017F27C 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 00006F8C C=CODE S=.text G=(none) M=SysUtils ACBP=A9 + 0001:0000E384 0000081B C=CODE S=.text G=(none) M=VarUtils ACBP=A9 + 0001:0000EBA0 0000804E C=CODE S=.text G=(none) M=Variants ACBP=A9 + 0001:00016BF0 000001A0 C=CODE S=.text G=(none) M=RTLConsts ACBP=A9 + 0001:00016D90 0000083C C=CODE S=.text G=(none) M=TypInfo ACBP=A9 + 0001:000175CC 00000358 C=CODE S=.text G=(none) M=ActiveX ACBP=A9 + 0001:00017924 0000A7EA C=CODE S=.text G=(none) M=Classes ACBP=A9 + 0001:00022110 00000370 C=CODE S=.text G=(none) M=Consts ACBP=A9 + 0001:00022480 00009BFB C=CODE S=.text G=(none) M=Graphics ACBP=A9 + 0001:0002C07C 00000124 C=CODE S=.text G=(none) M=Math ACBP=A9 + 0001:0002C1A0 000002B8 C=CODE S=.text G=(none) M=Contnrs ACBP=A9 + 0001:0002C458 00000198 C=CODE S=.text G=(none) M=CommCtrl ACBP=A9 + 0001:0002C5F0 00000787 C=CODE S=.text G=(none) M=MultiMon ACBP=A9 + 0001:0002CD78 00000038 C=CODE S=.text G=(none) M=Imm ACBP=A9 + 0001:0002CDB0 00000FF8 C=CODE S=.text G=(none) M=HelpIntfs ACBP=A9 + 0001:0002DDA8 00000058 C=CODE S=.text G=(none) M=WinSpool ACBP=A9 + 0001:0002DE00 000010C8 C=CODE S=.text G=(none) M=Printers ACBP=A9 + 0001:0002EEC8 0000031F C=CODE S=.text G=(none) M=FlatSB ACBP=A9 + 0001:0002F1E8 000003F0 C=CODE S=.text G=(none) M=SyncObjs ACBP=A9 + 0001:0002F5D8 000009BB C=CODE S=.text G=(none) M=UxTheme ACBP=A9 + 0001:0002FF94 00000038 C=CODE S=.text G=(none) M=RichEdit ACBP=A9 + 0001:0002FFCC 00000038 C=CODE S=.text G=(none) M=ToolWin ACBP=A9 + 0001:00030004 00000040 C=CODE S=.text G=(none) M=ShellAPI ACBP=A9 + 0001:00030044 00000038 C=CODE S=.text G=(none) M=RegStr ACBP=A9 + 0001:0003007C 00000058 C=CODE S=.text G=(none) M=WinInet ACBP=A9 + 0001:000300D4 00000038 C=CODE S=.text G=(none) M=UrlMon ACBP=A9 + 0001:0003010C 0000006C C=CODE S=.text G=(none) M=ShlObj ACBP=A9 + 0001:00030178 00000060 C=CODE S=.text G=(none) M=CommDlg ACBP=A9 + 0001:000301D8 00000038 C=CODE S=.text G=(none) M=Dlgs ACBP=A9 + 0001:00030210 000036D1 C=CODE S=.text G=(none) M=Dialogs ACBP=A9 + 0001:000338E4 00004ADA C=CODE S=.text G=(none) M=ExtCtrls ACBP=A9 + 0001:000383C0 00000090 C=CODE S=.text G=(none) M=ComStrs ACBP=A9 + 0001:00038450 000007A0 C=CODE S=.text G=(none) M=Clipbrd ACBP=A9 + 0001:00038BF0 00000128 C=CODE S=.text G=(none) M=StrUtils ACBP=A9 + 0001:00038D18 00003821 C=CODE S=.text G=(none) M=Buttons ACBP=A9 + 0001:0003C53C 00000038 C=CODE S=.text G=(none) M=ExtDlgs ACBP=A9 + 0001:0003C574 00000068 C=CODE S=.text G=(none) M=IniFiles ACBP=A9 + 0001:0003C5DC 00000068 C=CODE S=.text G=(none) M=Registry ACBP=A9 + 0001:0003C644 0000006C C=CODE S=.text G=(none) M=Mapi ACBP=A9 + 0001:0003C6B0 00000058 C=CODE S=.text G=(none) M=ExtActns ACBP=A9 + 0001:0003C708 00000038 C=CODE S=.text G=(none) M=ListActns ACBP=A9 + 0001:0003C740 00009948 C=CODE S=.text G=(none) M=ComCtrls ACBP=A9 + 0001:00046088 00000EA0 C=CODE S=.text G=(none) M=Themes ACBP=A9 + 0001:00046F28 0000C698 C=CODE S=.text G=(none) M=StdCtrls ACBP=A9 + 0001:000535C0 00000168 C=CODE S=.text G=(none) M=StdActns ACBP=A9 + 0001:00053728 00000D1F C=CODE S=.text G=(none) M=WinHelpViewer ACBP=A9 + 0001:00054448 00011403 C=CODE S=.text G=(none) M=Controls ACBP=A9 + 0001:0006584C 00001292 C=CODE S=.text G=(none) M=ActnList ACBP=A9 + 0001:00066AE0 00001B9C C=CODE S=.text G=(none) M=ImgList ACBP=A9 + 0001:0006867C 000066E1 C=CODE S=.text G=(none) M=Menus ACBP=A9 + 0001:0006ED60 0000CF8C C=CODE S=.text G=(none) M=Forms ACBP=A9 + 0001:0007BCEC 00000050 C=CODE S=.text G=(none) M=JConsts ACBP=A9 + 0001:0007BD3C 000133EC C=CODE S=.text G=(none) M=jpeg ACBP=A9 + 0001:0008F128 00000060 C=CODE S=.text G=(none) M=ComConst ACBP=A9 + 0001:0008F188 00001259 C=CODE S=.text G=(none) M=ComObj ACBP=A9 + 0001:000903E4 00000038 C=CODE S=.text G=(none) M=StdVCL ACBP=A9 + 0001:0009041C 00001793 C=CODE S=.text G=(none) M=AxCtrls ACBP=A9 + 0001:00091BB0 00000060 C=CODE S=.text G=(none) M=OleConst ACBP=A9 + 0001:00091C10 00003519 C=CODE S=.text G=(none) M=OleCtrls ACBP=A9 + 0001:0009512C 00000314 C=CODE S=.text G=(none) M=TlHelp32 ACBP=A9 + 0001:00095440 00000128 C=CODE S=.text G=(none) M=WinSock ACBP=A9 + 0001:00095568 00003A78 C=CODE S=.text G=(none) M=ScktComp ACBP=A9 + 0001:00098FE0 000008EA C=CODE S=.text G=(none) M=OleServer ACBP=A9 + 0001:000998CC 00000598 C=CODE S=.text G=(none) M=MSCommLib_TLB ACBP=A9 + 0001:00099E64 00000040 C=CODE S=.text G=(none) M=MMSystem ACBP=A9 + 0001:00099EA4 00000038 C=CODE S=.text G=(none) M=Nb30 ACBP=A9 + 0001:00099EDC 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9 + 0001:0009A8F4 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9 + 0001:0009C9FC 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9 + 0001:000A5C48 00001820 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 + 0001:000A7468 0000057C C=CODE S=.text G=(none) M=Importation ACBP=A9 + 0001:000A79E4 000147DC C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 + 0001:000BC1C0 0000289B C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 + 0001:000BEA5C 00000C64 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 + 0001:000BF6C0 00003D24 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 + 0001:000C33E4 000320D4 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 + 0001:000F54B8 00003410 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 + 0001:000F88C8 000027B4 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 + 0001:000FB07C 00002667 C=CODE S=.text G=(none) M=verif_version ACBP=A9 + 0001:000FD6E4 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 + 0001:000FE8B4 00000DDC C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 + 0001:000FF690 00002850 C=CODE S=.text G=(none) M=Unitplace ACBP=A9 + 0001:00101EE0 0003D627 C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 + 0001:0013F508 0003D4BC C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 + 0001:0017C9C4 00002E78 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 + 0001:0017F83C 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,29 +109,28 @@ 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 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 00000908 C=DATA S=.data G=DGROUP M=jpeg ACBP=A9 - 0002:00001B68 00000030 C=DATA S=.data G=DGROUP M=ComObj ACBP=A9 - 0002:00001B98 0000002C C=DATA S=.data G=DGROUP M=OleCtrls 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: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 00000908 C=DATA S=.data G=DGROUP M=jpeg ACBP=A9 + 0002:00001B58 00000030 C=DATA S=.data G=DGROUP M=ComObj ACBP=A9 + 0002:00001B88 0000002C C=DATA S=.data G=DGROUP M=OleCtrls 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: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 @@ -216,13 +215,13 @@ Detailed map of segments 0002:00018770 00418704 C=BSS S=.bss G=DGROUP M=UnitTCO ACBP=A9 0002:00430E74 00000010 C=BSS S=.bss G=DGROUP M=UnitSR ACBP=A9 0002:00430E84 00000014 C=BSS S=.bss G=DGROUP M=UnitCDF ACBP=A9 - 0002:00430E98 00000020 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9 - 0002:00430EB8 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9 - 0002:00430EBC 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 - 0002:00430EC8 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 - 0002:00430ED0 041B4F80 C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 - 0002:045E5E50 0000056C C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 - 0002:045E63BC 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 + 0002:00430E98 000001EC C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9 + 0002:00431084 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9 + 0002:00431088 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 + 0002:00431094 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 + 0002:0043109C 041C8808 C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 + 0002:045F98A4 00000570 C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 + 0002:045F9E14 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 Bound resource files @@ -248,4 +247,4 @@ Signaux_complexes_GL.res Signaux_complexes_GL.drf -Program entry point at 0001:0017F58C +Program entry point at 0001:0017FB4C diff --git a/UnitConfig.dfm b/UnitConfig.dfm index 19efb02..4d52e4c 100644 --- a/UnitConfig.dfm +++ b/UnitConfig.dfm @@ -681,7 +681,7 @@ object FormConfig: TFormConfig Top = 8 Width = 633 Height = 505 - ActivePage = TabSheetPeriph + ActivePage = TabSheetAig Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 @@ -1987,7 +1987,7 @@ object FormConfig: TFormConfig Left = 0 Top = 56 Width = 305 - Height = 409 + Height = 377 Color = clBlack Font.Charset = DEFAULT_CHARSET Font.Color = clAqua @@ -2003,6 +2003,19 @@ object FormConfig: TFormConfig OnKeyDown = ListBoxAigKeyDown OnMouseDown = ListBoxAigMouseDown end + object CheckBoxMsgAigInc: TCheckBox + Left = 8 + Top = 448 + Width = 273 + Height = 17 + Hint = + 'Affiche un message d'#39'avertissement si un '#233'v'#232'nement est re'#231'u d'#39'un' + + ' aiguillage non d'#233'clar'#233 + Caption = 'Affiche un message sur '#233'vt aiguillage inconnu' + ParentShowHint = False + ShowHint = True + TabOrder = 5 + end end object TabSheetBranches: TTabSheet Caption = 'Branches' @@ -2353,7 +2366,7 @@ object FormConfig: TFormConfig Width = 137 Height = 21 Style = csDropDownList - ItemHeight = 0 + ItemHeight = 13 TabOrder = 1 OnChange = ComboBoxDecChange end @@ -2460,7 +2473,7 @@ object FormConfig: TFormConfig Width = 137 Height = 21 Style = csDropDownList - ItemHeight = 0 + ItemHeight = 13 TabOrder = 2 OnChange = ComboBoxAspChange end @@ -2753,7 +2766,7 @@ object FormConfig: TFormConfig Top = 56 Width = 193 Height = 21 - ItemHeight = 0 + ItemHeight = 13 TabOrder = 0 OnChange = ComboBoxDecodeurPersoChange end @@ -2772,7 +2785,7 @@ object FormConfig: TFormConfig Width = 145 Height = 21 Style = csDropDownList - ItemHeight = 0 + ItemHeight = 13 TabOrder = 2 OnChange = ComboBoxNationChange end @@ -2818,7 +2831,7 @@ object FormConfig: TFormConfig Width = 193 Height = 21 Style = csDropDownList - ItemHeight = 0 + ItemHeight = 13 TabOrder = 6 OnChange = ComboBoxDecCdeChange end @@ -3203,7 +3216,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 @@ -3384,7 +3397,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 diff --git a/UnitConfig.pas b/UnitConfig.pas index dfa5092..04ec292 100644 --- a/UnitConfig.pas +++ b/UnitConfig.pas @@ -357,6 +357,7 @@ type TabAvance: TTabSheet; Label31: TLabel; Label39: TLabel; + CheckBoxMsgAigInc: TCheckBox; procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ListBoxAigMouseDown(Sender: TObject; Button: TMouseButton; @@ -578,6 +579,7 @@ Avec_roulage_ch='Avec_roulage'; nb_det_dist_ch='nb_det_dist'; IpV4_PC_ch='IpV4_PC'; ServicesCDM_ch='ServicesCDM'; +AffAigND_ch='AigND'; retro_ch='retro'; Ecran_ch='Ecran'; Z21_ch='Z21'; @@ -651,7 +653,7 @@ var ack_cdm,clicliste,config_modifie,clicproprietes,confasauver,trouve_MaxPort,fermeSC, modif_branches,ConfigPrete,trouve_section_dccpp,trouve_section_trains,trouve_section_acccomusb, - trouveAvecVerifIconesTCO,Affiche_avert,activ,trouve_section_dec_pers,Z21 : boolean; + trouveAvecVerifIconesTCO,Affiche_avert,activ,trouve_section_dec_pers,Z21,AffAigND : boolean; fichier : text; @@ -1873,6 +1875,9 @@ begin if Raz_Acc_signaux then s:='1' else s:='0'; writeln(fichierN,Raz_signaux_ch+'='+s); + if AffAigND then s:='1' else s:='0'; + writeln(fichierN,AffAigND_ch+'='+s); + // temporisation entre 2 commandes décodeurs signaux writeln(fichierN,Tempo_signal_ch+'=',IntToSTR(Tempo_Signal)); @@ -3691,6 +3696,17 @@ var s,sa,SOrigine: string; Raz_Acc_signaux:=i=1; end; + sa:=uppercase(AffAigND_ch)+'='; + i:=pos(sa,s); + if i=1 then + begin + inc(nv); + delete(s,i,length(sa)); + val(s,i,erreur); + if i>1 then i:=1; + AffAigND:=i=1; + end; + // section aiguillages sa:=uppercase(section_aig_ch); if pos(sa,s)<>0 then @@ -4159,6 +4175,7 @@ begin Srvc_Pos:=CheckServPosTrains.checked; Srvc_Sig:=CheckBoxSrvSig.checked; Raz_Acc_signaux:=CheckBoxRazSignaux.checked; + AffAigND:=CheckBoxMsgAigInc.checked; AvecInitAiguillages:=CheckBoxInitAig.Checked; AvecDemandeAiguillages:=checkPosAig.checked; AvecDemandeInterfaceUSB:=CheckBoxDemarUSB.checked; @@ -5960,6 +5977,7 @@ begin ' = 2 : protocole matériel RTS-CTS sans temporisation d''envoi (Interfaces Lenz LI)'+#13+ ' = 4 : contrôle de la ligne CTS avant d''émettre un caractère avec temporisation d''envoi'; EditComUSB.showHint:=true; + ListBoxAig.Height:=382; ligneclicAig:=-1; AncLigneClicAig:=-1; @@ -14436,6 +14454,7 @@ begin CheckBoxSrvSig.Checked:=Srvc_Sig; CheckBoxRazSignaux.checked:=Raz_Acc_signaux; + CheckBoxMsgAigInc.checked:=AffAigND; CheckBoxInitAig.checked:=AvecInitAiguillages; CheckPosAig.checked:=AvecDemandeAiguillages; CheckBoxDemarUSB.checked:=AvecDemandeInterfaceUSB; diff --git a/UnitDebug.dfm b/UnitDebug.dfm index 476fdad..754fb8a 100644 --- a/UnitDebug.dfm +++ b/UnitDebug.dfm @@ -1,13 +1,13 @@ object FormDebug: TFormDebug - Left = 196 - Top = 37 + Left = 244 + Top = 119 VertScrollBar.Increment = 67 VertScrollBar.Tracking = True VertScrollBar.Visible = False AutoScroll = False Caption = 'Fen'#234'tre de d'#233'bug' - ClientHeight = 757 - ClientWidth = 946 + ClientHeight = 662 + ClientWidth = 878 Color = clWindow TransparentColorValue = clTeal Font.Charset = DEFAULT_CHARSET @@ -22,25 +22,25 @@ object FormDebug: TFormDebug OnCreate = FormCreate OnKeyPress = FormKeyPress DesignSize = ( - 946 - 757) + 878 + 662) PixelsPerInch = 96 TextHeight = 13 object ScrollBoxDebug: TScrollBox Left = 0 Top = 0 - Width = 940 - Height = 772 + Width = 872 + Height = 677 HorzScrollBar.Visible = False Anchors = [akLeft, akTop, akRight, akBottom] Color = clBtnFace ParentColor = False TabOrder = 0 DesignSize = ( - 919 - 768) + 851 + 673) object LabelTitreDebug: TLabel - Left = 543 + Left = 475 Top = 8 Width = 131 Height = 18 @@ -54,7 +54,7 @@ object FormDebug: TFormDebug ParentFont = False end object Label1: TLabel - Left = 695 + Left = 627 Top = 10 Width = 108 Height = 13 @@ -72,7 +72,7 @@ object FormDebug: TFormDebug object RichDebug: TRichEdit Left = 0 Top = 0 - Width = 522 + Width = 454 Height = 753 Anchors = [akLeft, akTop, akRight] Color = clMaroon @@ -84,7 +84,7 @@ object FormDebug: TFormDebug OnChange = RichDebugChange end object ButtonRazTout: TButton - Left = 533 + Left = 465 Top = 216 Width = 97 Height = 25 @@ -99,7 +99,7 @@ object FormDebug: TFormDebug OnClick = ButtonRazToutClick end object ButtonCop: TButton - Left = 533 + Left = 465 Top = 248 Width = 97 Height = 41 @@ -116,7 +116,7 @@ object FormDebug: TFormDebug OnClick = ButtonCopClick end object ButtonAffEvtChrono: TButton - Left = 533 + Left = 465 Top = 296 Width = 97 Height = 33 @@ -127,7 +127,7 @@ object FormDebug: TFormDebug OnClick = ButtonAffEvtChronoClick end object ButtonCherche: TButton - Left = 533 + Left = 465 Top = 336 Width = 97 Height = 25 @@ -140,7 +140,7 @@ object FormDebug: TFormDebug OnClick = ButtonChercheClick end object ButtonEcrLog: TButton - Left = 533 + Left = 465 Top = 184 Width = 97 Height = 29 @@ -150,7 +150,7 @@ object FormDebug: TFormDebug OnClick = ButtonEcrLogClick end object ButtonRazTampon: TButton - Left = 533 + Left = 465 Top = 368 Width = 97 Height = 33 @@ -161,7 +161,7 @@ object FormDebug: TFormDebug OnClick = ButtonRazTamponClick end object ButtonRazLog: TButton - Left = 533 + Left = 465 Top = 408 Width = 97 Height = 33 @@ -172,7 +172,7 @@ object FormDebug: TFormDebug OnClick = ButtonRazLogClick end object MemoEvtDet: TRichEdit - Left = 638 + Left = 570 Top = 186 Width = 272 Height = 263 @@ -183,7 +183,7 @@ object FormDebug: TFormDebug OnChange = MemoEvtDetChange end object GroupBox5: TGroupBox - Left = 530 + Left = 462 Top = 456 Width = 380 Height = 57 @@ -250,7 +250,7 @@ object FormDebug: TFormDebug end end object GroupBox6: TGroupBox - Left = 530 + Left = 462 Top = 520 Width = 380 Height = 52 @@ -327,7 +327,7 @@ object FormDebug: TFormDebug end end object GroupBoxPrim: TGroupBox - Left = 532 + Left = 464 Top = 584 Width = 378 Height = 185 @@ -345,12 +345,12 @@ object FormDebug: TFormDebug object GroupBox3: TGroupBox Left = 8 Top = 16 - Width = 353 + Width = 361 Height = 73 Caption = 'Signal' TabOrder = 0 object Label4: TLabel - Left = 313 + Left = 321 Top = 10 Width = 32 Height = 13 @@ -363,7 +363,7 @@ object FormDebug: TFormDebug ParentFont = False end object ButtonSigSuiv: TButton - Left = 0 + Left = 8 Top = 16 Width = 49 Height = 49 @@ -376,7 +376,7 @@ object FormDebug: TFormDebug OnClick = ButtonSigSuivClick end object ButtonCanSuivSig: TButton - Left = 48 + Left = 56 Top = 16 Width = 65 Height = 49 @@ -389,7 +389,7 @@ object FormDebug: TFormDebug OnClick = ButtonCanSuivSigClick end object EditSigSuiv: TEdit - Left = 312 + Left = 320 Top = 32 Width = 33 Height = 21 @@ -399,7 +399,7 @@ object FormDebug: TFormDebug TabOrder = 2 end object ButtonCP: TButton - Left = 112 + Left = 120 Top = 16 Width = 81 Height = 49 @@ -412,7 +412,7 @@ object FormDebug: TFormDebug OnClick = ButtonCPClick end object Button2: TButton - Left = 192 + Left = 200 Top = 16 Width = 57 Height = 49 @@ -427,7 +427,7 @@ object FormDebug: TFormDebug OnClick = Button2Click end object ButtonAigDevie: TButton - Left = 248 + Left = 256 Top = 16 Width = 57 Height = 49 @@ -443,7 +443,7 @@ object FormDebug: TFormDebug object GroupBox4: TGroupBox Left = 8 Top = 96 - Width = 353 + Width = 361 Height = 81 Caption = 'D'#233'tecteur/'#233'l'#233'ment suivant' TabOrder = 1 @@ -462,7 +462,7 @@ object FormDebug: TFormDebug OnClick = ButtonDetSuivClick end object EditPrec: TEdit - Left = 208 + Left = 216 Top = 34 Width = 49 Height = 21 @@ -472,7 +472,7 @@ object FormDebug: TFormDebug TabOrder = 1 end object EditActuel: TEdit - Left = 264 + Left = 272 Top = 34 Width = 49 Height = 21 @@ -498,7 +498,7 @@ object FormDebug: TFormDebug end end object GroupBox2: TGroupBox - Left = 534 + Left = 466 Top = 28 Width = 376 Height = 149 @@ -711,7 +711,7 @@ object FormDebug: TFormDebug end end object EditNivDebug: TEdit - Left = 819 + Left = 751 Top = 8 Width = 49 Height = 21 diff --git a/UnitDebug.pas b/UnitDebug.pas index db2ed19..b4cf1db 100644 --- a/UnitDebug.pas +++ b/UnitDebug.pas @@ -275,9 +275,9 @@ end; procedure TFormDebug.EditNivDebugKeyPress(Sender: TObject; var Key: Char); var i,e : integer; begin - if ord(Key) = VK_RETURN then + if ord(Key)=VK_RETURN then begin - Key := #0; // prevent beeping + Key:=#0; // prevent beeping val(EditNivDebug.text,i,e); if e=0 then begin diff --git a/UnitPrinc.dfm b/UnitPrinc.dfm index 478466b..54c0760 100644 --- a/UnitPrinc.dfm +++ b/UnitPrinc.dfm @@ -1,6 +1,6 @@ object FormPrinc: TFormPrinc - Left = 180 - Top = 135 + Left = 134 + Top = 180 Width = 1148 Height = 618 Anchors = [akLeft, akTop, akRight] @@ -20,8 +20,8 @@ object FormPrinc: TFormPrinc OnCreate = FormCreate OnResize = FormResize DesignSize = ( - 1132 - 560) + 1140 + 567) PixelsPerInch = 96 TextHeight = 13 object LabelTitre: TLabel @@ -1430,8 +1430,8 @@ object FormPrinc: TFormPrinc end object StatusBar1: TStatusBar Left = 0 - Top = 538 - Width = 1132 + Top = 545 + Width = 1140 Height = 22 Panels = < item @@ -2124,6 +2124,7 @@ object FormPrinc: TFormPrinc end object DeconnecterUSB: TMenuItem Caption = 'D'#233'connecter l'#39'interface de l'#39'USB' + Enabled = False Hint = 'D'#233'connecter l'#39'interface USB' OnClick = DeconnecterUSBClick end diff --git a/UnitPrinc.pas b/UnitPrinc.pas index c32a670..9c3c8ca 100644 --- a/UnitPrinc.pas +++ b/UnitPrinc.pas @@ -714,7 +714,8 @@ var record tick : longint; modele : Tequipement; - Adresse,etat : integer ; + Adresse,Adresse2,etat : integer ; + train : string; end; tablo_CV : array [1..255] of integer; @@ -5469,7 +5470,7 @@ end; // un élément est constitué de son adresse et de son type // et renvoie aussi en variable globale: typeGen le type de l'élément (det aig uniquement! pas tjd ni crois) // : AigMal = aiguillage mal positionné ou inconnu -// alg= algorithme 1 à 8 sous forme de bits fonctionnels +// alg= algorithme 1 à 8 sous forme de bits fonctionnels: // bit0 (1)=arret sur suivant qu'il soit un détecteur ou un aiguillage // bit1 (2)=arret sur aiguillage en talon mal positionné // bit2 (4)=arret sur aiguillage réservé @@ -5482,11 +5483,13 @@ end; // 9996: arrêt sur position inconnue d'aiguillage // 9995: arrêt sur buttoir // 9994: arrêt sur aiguillage réservé +// 9993: éléments non consécutifs + // 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; var Adr,AdrPrec,indexBranche_prec,branche_trouve_prec,indexBranche_actuel,branche_trouve_actuel, tjsc1,tjsc2,AdrTjdP,Adr2,N_iteration,index,NetatTJD,index2 : integer; - tjscourbe1,tjscourbe2,tjdC,tjsC : boolean; + tjscourbe1,tjscourbe2,tjdC,tjsC,id : boolean; A,Aprec,tjsc1B,tjsc2B,typeprec: char; Md,BT,BtypePrec,TypeEL : TEquipement; s : string; @@ -5504,7 +5507,7 @@ begin Suivant_alg3:=9999;exit; end; if (NivDebug=3) then - AfficheDebug('Alg3 précédent='+intToSTR(prec)+'/'+BtypeToChaine(TypeElprec)+' actuel='+intToSTR(actuel)+'/'+BtypeToChaine(typeElActuel)+' Alg='+intToSTr(alg),clyellow); + AfficheDebug('it='+intToSTR(n_iteration)+' Alg3 précédent='+intToSTR(prec)+'/'+BtypeToChaine(TypeElprec)+' actuel='+intToSTR(actuel)+'/'+BtypeToChaine(typeElActuel)+' Alg='+intToSTr(alg),clyellow); // trouver les éléments du précédent dans les branches trouve_element(prec,TypeELPrec); // branche_trouve IndexBranche_trouve @@ -5531,13 +5534,15 @@ begin Adr:=actuel; Bt:=BrancheN[branche_trouve_actuel,indexBranche_actuel].Btype; - //Affiche('Btype='+intToSTR(Btype)+' Actuel='+inTToSTR(actuel),clyellow); + if nivDebug=3 then AfficheDebug('Btype='+BTypeToChaine(Bt)+' Actuel='+inTToSTR(actuel),clyellow); + id:=false; if Bt=det then // l'élément actuel est un détecteur begin // on part de l'actuel pour retomber sur le précédent if BrancheN[branche_trouve_actuel,indexBranche_actuel-1].Adresse=prec then // c'est l'autre sens begin + id:=true; if NivDebug=3 then AfficheDebug('40 - trouvé détecteur '+intToSTR(adr)+' en + ',clwhite); Prec:=Adr; Aprec:=a; @@ -5554,6 +5559,7 @@ begin end; if BrancheN[branche_trouve_actuel,indexBranche_actuel+1].Adresse=prec then begin + id:=true; if NivDebug=3 then AfficheDebug('42 - trouvé détecteur '+intToSTR(adr)+' en - ',clwhite); Prec:=Adr; Aprec:=a; @@ -5571,6 +5577,7 @@ begin // ici, les éléments sont non consécutifs. voir si l'un des deux est une TJD/TJS if (btypePrec=aig) then // car btype dans les branches vaut det, aig, buttoir mais jamais tjd ni tjs begin + id:=true; // changer l'adresse du précédent par l'autre adresse de la TJD/S // V1 index:=index_aig(prec); index:=tablo_index_aiguillage[prec]; @@ -5579,9 +5586,16 @@ begin begin //V1 prec:=Aiguillage[index_aig(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); + if NivDebug=3 then AfficheDebug('Le précedent est une TJD/S - substitution du précédent par la pointe de la TJD qui est '+intToSTR(prec),clYellow); end; end; + if not(id) then + begin + Affiche('Erreur 780 alg3: '+intToSTR(prec)+' '+intToSTR(actuel)+' non consécutifs',clRed); + result:=9993; + exit; + end; + inc(n_iteration); if n_iteration>50 then @@ -5620,7 +5634,7 @@ begin if (alg and $4=$4) and (aiguillage[index].AdrTrain<>0) then begin if NivDebug=3 then AfficheDebug('230 - aiguillage '+intToSTR(adr)+' réservé par train @'+intToSTR(aiguillage[index].AdrTrain),clyellow); - suivant_alg3:=9997; //. attention code incorrect devrait être 9994 + suivant_alg3:=9997; // attention code incorrect devrait être 9994 exit; end; @@ -6873,7 +6887,7 @@ begin end; IndexBranche:=IndexBranche_trouve; branche:=branche_trouve; - Dir:=1 ; //test direction + Dir:=1 ; //test direction 1 ou 2 (incrément ou décrément) repeat if (Dir=1) then i:=IndexBranche-1 else i:=IndexBranche+1; @@ -10081,8 +10095,10 @@ begin end else begin - Affiche_evt('1-0 Les éléments '+intToSTR(det1)+' et '+intToSTR(det3)+' ne sont pas contigus',clyellow); - for tco:=1 to nbreTCO do maj_tco(i,det3); + Affiche_evt('1-0 Train '+intToSTR(i)+' Eléments '+intToSTR(det1)+' et '+intToSTR(det3)+' non contigus',clyellow); + + for tco:=1 to nbreTCO do + maj_tco(tco,det3); // det3 et det1 non adjacents end; end; @@ -10348,7 +10364,7 @@ begin end else begin - //Affiche_Evt('Route invalide: dét '+intToSTR(det2)+' '+intToSTR(det3)+' non contigus',clOrange); + Affiche_evt('2-0 Train '+intToSTR(i)+' Eléments '+intToSTR(det2)+' et '+intToSTR(det3)+' non contigus',clyellow); if event_det_train[i].det[2].adresse=det3 then begin s:='7. Rebond dét. '+intToSTR(det3)+' déjà affecté au train '+IntToSTR(i); @@ -10936,15 +10952,14 @@ begin ancien_actionneur[adr]:=etat; if not(fd) and not(fm) then exit; - if AffAigDet then AfficheDebug('Tick='+IntToSTR(tick)+' Evt Act '+intToSTR(Adr)+'/'+intToSTR(Adr2)+'='+intToSTR(etat),clyellow); - + if AffAigDet then AfficheDebug('Tick='+IntToSTR(tick)+' Evt Act='+intToSTR(Adr)+'/'+intToSTR(Adr2)+'='+intToSTR(etat)+' Train='+trainDecl,clyellow); // vérifier si l'actionneur en évènement a été déclaré pour réagir // dans tableau des actionneurs for i:=1 to maxTablo_act do begin sDecl:=Tablo_actionneur[i].trainDecl; etatAct:=Tablo_actionneur[i].etat ; // état à réagir - etatValide:=((etatAct=etat) and fm) or ((etatAct=0) and fd); + etatValide:=((etatAct=etat) and fm) or ((etatAct=0) and fd); // front montant ou descendant typ:=Tablo_actionneur[i].typdeclenche; // déclencheur: 0=actioneur/détecteur 2=evt aig 3=MemZone if typ=0 then begin @@ -11445,7 +11460,9 @@ begin begin evalue;evalue;evalue; end; - end; + end + + else if AffAigND then affiche('Avertissement 47 : un evt aiguillage '+intToSTR(adresse)+' non déclaré a été reçu',clOrange); // evt actionneur d'aiguillage for i:=1 to maxTablo_act do @@ -14568,8 +14585,17 @@ begin // evt détecteur ? if Tablo_simule[I_simule].modele=det then begin - s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].adresse)+'='+IntToSTR(Tablo_simule[i_simule].etat); - Event_Detecteur(Tablo_simule[i_simule].adresse, Tablo_simule[i_simule].etat=1,''); // créer évt détecteur + s:='Simu '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' det='+intToSTR(Tablo_simule[i_simule].adresse)+'='+IntToSTR(Tablo_simule[i_simule].etat); + Event_Detecteur(Tablo_simule[i_simule].adresse, Tablo_simule[i_simule].etat=1, Tablo_simule[i_simule].train); // créer évt détecteur + StatusBar1.Panels[1].text:=s; + //Affiche(s,clyellow); + end; + + // evt actionneur ? + if Tablo_simule[I_simule].modele=act then + begin + s:='Simu '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' act='+intToSTR(Tablo_simule[i_simule].adresse)+'='+IntToSTR(Tablo_simule[i_simule].etat); + Event_Act(Tablo_simule[i_simule].adresse,Tablo_simule[i_simule].adresse2,Tablo_simule[i_simule].etat, Tablo_simule[i_simule].train); StatusBar1.Panels[1].text:=s; //Affiche(s,clyellow); end; @@ -14577,7 +14603,7 @@ begin // evt aiguillage ? if Tablo_simule[I_simule].modele=aig then begin - s:='Simulation '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' aig='+intToSTR(Tablo_simule[i_simule].adresse)+'='+IntToSTR(Tablo_simule[i_simule].etat); + s:='Simu '+intToSTR(I_simule)+' Tick='+IntToSTR(tick)+' aig='+intToSTR(Tablo_simule[i_simule].adresse)+'='+IntToSTR(Tablo_simule[i_simule].etat); Event_Aig(Tablo_simule[i_simule].Adresse,Tablo_simule[i_simule].etat); // créer évt aiguillage StatusBar1.Panels[1].text:=s; //Affiche(s,clyellow); @@ -15928,7 +15954,7 @@ end; procedure TFormPrinc.FichierSimuClick(Sender: TObject); begin - FormSimulation.showModal; + if formSimulation<>nil then FormSimulation.showModal; end; procedure TFormPrinc.ButtonEcrCVClick(Sender: TObject); @@ -16867,13 +16893,9 @@ begin end; procedure TFormPrinc.Button1Click(Sender: TObject); -var s : string; begin - debugTCO:=true; - zone_TCO(2,513,514,1,1); - Affiche('513-514',clYellow); - - //reserve_dereserve_det(530,534,1,2,1); + reserve_dereserve_det(888,561,1,1,0); + //libere_canton end; @@ -17532,7 +17554,6 @@ end; // mise à jour des menus TCO en fonction du nombre i de TCO Procedure Menu_tco(i : integer); -var j : integer; begin with formprinc do begin diff --git a/UnitSimule.pas b/UnitSimule.pas index f4dd33f..7d7e2eb 100644 --- a/UnitSimule.pas +++ b/UnitSimule.pas @@ -62,7 +62,8 @@ begin //if intervalle<>0 then k:=Index_Simule*Intervalle+tick+30 else // démarre dans 3s // k:=Index_Simule+tick+30 ; Tablo_simule[index_simule].tick:=k; - // détecteur? + + // détecteur? Det=528=1 Train=BB16024 i:=pos('DET',s); if i<>0 then begin @@ -78,14 +79,43 @@ begin Delete(s,1,i); val(s,k,erreur); Tablo_simule[index_simule].etat:=k; - {s:=IntToSTR(Index_simule)+' Tick='+intToSTR(Tablo_simule[index_simule].tick)+ - ' Detecteur='+intToSTR(Tablo_simule[index_simule].Adresse)+ - '='+intToSTR(Tablo_simule[index_simule].etat); - Affiche(s,ClLime); } - inc(index_simule); end; + i:=pos('=',s); + if i<>0 then delete(s,1,i); + Tablo_simule[index_simule].train:=s; + + inc(index_simule); end; - // aiguillage? + + // actionneur? Act=803/0=1 Train=CC406526 + i:=pos('ACT',s); + if i<>0 then + begin + Delete(s,1,i+2); + if s[1]='=' then delete(s,1,1); + if s[1]=' ' then delete(s,1,1); + val(s,k,erreur); + Tablo_simule[index_simule].adresse:=k; + + i:=pos('/',s); + if i<>0 then delete(s,1,i); + val(s,k,erreur); + Tablo_simule[index_simule].adresse2:=k; + + i:=pos('=',s); + if i<>0 then delete(s,1,i); + val(s,k,erreur); + + Tablo_simule[index_simule].modele:=act; + Tablo_simule[index_simule].etat:=k; + + i:=pos('=',s); + if i<>0 then delete(s,1,i); + Tablo_simule[index_simule].train:=s; + inc(index_simule); + end; + + // aiguillage? i:=pos('AIG',s); if i<>0 then begin @@ -102,17 +132,14 @@ begin val(s,k,erreur); if (k=1) or (k=2) then Tablo_simule[index_simule].etat:=k else Affiche('Erreur 622 : Position aiguillage '+intToSTR(Tablo_simule[index_simule].adresse)+' inconnue dans le fichier de simulation',clred); - {s:=IntToSTR(Index_simule)+' Tick='+intToSTR(Tablo_simule[index_simule].tick)+ - ' Aiguillage='+intToSTR(Tablo_simule[index_simule].adresse)+ - '='+intToSTR(Tablo_simule[index_simule].etat); - Affiche(s,ClLime); } - inc(index_simule); + inc(index_simule); end; end; end; Application.ProcessMessages; sortie:=eof(fte) or (index_simule>Max_Simule) or (pos('STOP',s)<>0); end ; + if index_simule>Max_Simule then Affiche('Tableau maximal atteint',clred); Affiche('Intervalle='+intToSTR(intervalle),clyellow); dec(index_simule); //maxi diff --git a/UnitTCO.pas b/UnitTCO.pas index 08e30e6..2acb3e9 100644 --- a/UnitTCO.pas +++ b/UnitTCO.pas @@ -1612,27 +1612,6 @@ begin //Affiche(intToSTR(LargeurCell[indexTCO])+' '+intToSTR(epaisseur),clyellow); end; -procedure entoure_cell_grille(indexTCO,x,y : integer); -// redessine le carré de grille de la cellule qui a été altéré par la mise à -// jour de la cellule -var Xorg,Yorg : integer; -begin; - if not(AvecGrille[indexTCO]) then exit; - Xorg:=(x-1)*LargeurCell[indexTCO]; - Yorg:=(y-1)*HauteurCell[indexTCO]; - if PcanvasTCO[indexTCO]<>nil then - With PcanvasTCO[indexTCO] do - begin - Pen.Color:=clGrille[IndexTCO]; - Pen.mode:=PmCopy; - Pen.width:=3; - MoveTo(Xorg,YOrg); - LineTo(Xorg+LargeurCell[indexTCO],YOrg); - LineTo(Xorg+LargeurCell[indexTCO],YOrg+HauteurCell[indexTCO]); - LineTo(Xorg,YOrg+HauteurCell[indexTCO]); - LineTo(Xorg,YOrg); - end; -end; function positionTCO(indexTCO,x,y : integer) : integer; var position,i : integer; @@ -8666,6 +8645,28 @@ begin end; end; +procedure entoure_cell_grille(indexTCO,x,y : integer); +// redessine le carré de grille de la cellule qui a été altéré par la mise à +// jour de la cellule +var Xorg,Yorg : integer; +begin; + if not(AvecGrille[indexTCO]) then exit; + Xorg:=(x-1)*LargeurCell[indexTCO]; + Yorg:=(y-1)*HauteurCell[indexTCO]; + if PcanvasTCO[indexTCO]<>nil then + With PcanvasTCO[indexTCO] do + begin + Pen.Color:=clGrille[IndexTCO]; + Pen.mode:=PmCopy; + Pen.width:=1; + MoveTo(Xorg,YOrg); + LineTo(Xorg+LargeurCell[indexTCO],YOrg); + LineTo(Xorg+LargeurCell[indexTCO],YOrg+HauteurCell[indexTCO]); + LineTo(Xorg,YOrg+HauteurCell[indexTCO]); + LineTo(Xorg,YOrg); + end; +end; + procedure Entoure_cell(indexTCO,x,y : integer); var r : Trect; @@ -8985,7 +8986,7 @@ begin Affiche(s,clred); end; -// efface le trajet du tco du train depuis le détecteur jusqu'au premier aiguillage +// efface le trajet du tco du numéro du train depuis le détecteur jusqu'au premier aiguillage procedure efface_trajet(det,train : integer); var i,j,t,n,Bimage,x,y : integer; trouve : boolean; @@ -12189,7 +12190,7 @@ begin //if not(clicsouris) then affiche('non',clred); if clicsouris and SelecBouge then begin - //zizi + // x0:=(xMiniSel-1)*LargeurCell[indexTCO]; y0:=(yMiniSel-1)*hauteurCell[indexTCO]; larg:=((xMaxiSel-xMiniSel)+1)*LargeurCell[indexTCO]; @@ -12409,6 +12410,7 @@ procedure Maj_TCO(indexTCO,Adresse : integer); var x,y: integer; begin if PcanvasTCO[indexTCO]=nil then exit; + for y:=1 to NbreCellY[indexTCO] do for x:=1 to NbreCellX[indexTCO] do begin @@ -13652,10 +13654,10 @@ var cs : string; x,y,xmini,ymini,xmaxi,ymaxi : integer; modeselection : boolean; begin - xmini:=(XminiSel div LargeurCell[indexTCO]) +1; - ymini:=(YminiSel div hauteurCell[indexTCO]) +1; - xmaxi:=(XmaxiSel div LargeurCell[indexTCO]) +1; - ymaxi:=(YmaxiSel div hauteurCell[indexTCO]) +1; + xmini:=XminiSel; + ymini:=YminiSel; + xmaxi:=XmaxiSel; + ymaxi:=YmaxiSel; modeSelection:=xmini0 then case i of 12007 : Affiche('Erreur de résolution DNS',clred); - 12037 : Affiche('Erreur validité de certificat - Mettre windows à jour',clred); - 12157 : Affiche('Erreur canal sécurisé SSL 2.0 - Mettre windows à jour',clred); + 12037 : Affiche('Erreur validité de certificat - Mettre windows à jour ou version windows obsolète',clred); + 12157 : Affiche('Erreur canal sécurisé SSL 2.0 - Mettre windows à jour ou version windows obsolète',clred); else affiche('Erreur '+intToSTR(i),clred); end; if Assigned(hService) then @@ -122,95 +124,71 @@ begin end; end; +procedure log(s : string;couleur : Tcolor); +begin + Affiche(s,couleur); + writeln(f,s); +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 + if not(copyfile(pchar(fs),pchar(fd),false)) then // false force la copie si existant begin - fs:=' non copié'; // true évite de le recopier i:=getLastError; - Affiche('Erreur '+s,clred); - Affiche('non copié. Erreur '+intToSTR(i)+': '+SysErrorMessage(i),clred); + log('Fichier '+s+' 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); + log(s+' copié',clLime); end; // dézipe copie les fichiers et lance la nouvelle version -// s : chemin etfichier à déziper +// s : chemin et fichier à déziper 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 + // Vérifier si répertoire dest existe + chemin_Dest:=CheminProgrammes+'\Signaux_complexes'; + if not(directoryExists(chemin_Dest)) then mkDir(chemin_dest); + + i:=pos('.zip',s); + if i=0 then begin - Affiche('Erreur à la décompression du zip',clred); + log('nom du zip invalide',clred); exit; end; chemin_src:=s; - i:=pos('.zip',chemin_src); - if i=0 then - begin - affiche('nom du zip invalide',clred); - exit; - end; delete(chemin_src,i,4); // transforme en chemin - // 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+'\'; + AssignFile(f,chemin_dest+'log-install.txt'); + Rewrite(f); + + log('Mise à jour de signaux complexes V'+version+' le '+DateToStr(date)+' à '+TimeToStr(Time)+' ',clYellow); + log('Téléchargement réussi, décompression',clyellow); + formVersion.close; + + log('Décompression du zip '+s,clLime); + if not(unzip(s)) then + begin + log('Erreur à la décompression du zip',clred); + close(f); + exit; + end; + // remplit dirlist avec les noms de fichiers du chemin dest nombre:=0; DirList:=TStringList.Create; @@ -227,7 +205,7 @@ begin FindClose(SR); end; - // supprimer les fichiers *.Exe et versions.txt et pdf + // supprimer les fichiers versions.txt copie_sc.exe et pdf nomPdf:=''; for i:=0 to nombre-1 do begin @@ -238,24 +216,23 @@ begin //Affiche(s,clyellow); // fichiers à supprimer dans répertoire destination - if (pos('.exe',s)<>0) or (s='versions.txt') or pdf then + if (s='versions.txt') or pdf then begin fichier:=chemin_dest+s; - if sysutils.FileExists((fichier)) then + if sysutils.FileExists(fichier) then begin - Affiche('Suppression de '+fichier,clorange); + log('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); + if not(OK) then log('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 dans le chemin source @@ -278,36 +255,30 @@ begin 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:=''; + // lancer copie_sc.exe qui copie les exe et crée les raccourcis et lance SC + chdir(chemin_src); + s:='"'+chemin_dest+'" "'+chemin_src+'"'; + log('exécution de copie_sc.exe '+s,clyellow); + close(f); Affiche('Lancement de la nouvelle version',clyellow); - Application.processMessages; - Sleep(3000); + Sleep(2000); i:=ShellExecute(Formprinc.Handle,'open', - Pchar('signaux_complexes_gl_d11.exe'), + Pchar('copie_sc.exe'), Pchar(s), // paramètre - PChar(chemin_dest) // répertoire + PChar('') // répertoire ,SW_SHOWNORMAL); if i>32 then begin - Affiche('lancement ok',cllime); Application.Terminate; end else begin - Affiche('Erreur '+intToSTR(i),clred); - exit; + Affiche('Erreur '+intToSTR(i)+' au lancement de copie_sc.exe ',clred); end; end; -// renvoie le numéro de version depuis le site github -// si 0 +// renvoie le numéro de version depuis le site github, et télécharge... etc function verifie_version : real; var description,s,s2,s3,Version_p,Url,LocalFile,nomfichier,date_creation_ang : string; trouve_version,trouve_zip,zone_comm,LocZip : boolean; @@ -321,7 +292,7 @@ var description,s,s2,s3,Version_p,Url,LocalFile,nomfichier,date_creation_ang : s function supprime_anti(s : string) : string; var i : integer; begin - // supprimer tous les \ dans la chaine + // supprimer tous les \ dans la chaine i:=0; repeat i:=posEx('\',s,i+1); @@ -367,183 +338,171 @@ var description,s,s2,s3,Version_p,Url,LocalFile,nomfichier,date_creation_ang : s end; begin - //Affiche('vérifie version',clLime); - Url:='https://api.github.com/repos/f1iwq2/signaux_complexes_gl/releases/latest'; - LocalFile:='page.txt'; - trouve_version:=false; - trouve_zip:=false; - zone_comm:=false; - Ncomm:=0; - if DownloadURL_NOCache(Url,localFile,taille) then + //Affiche('vérifie version',clLime); + Url:='https://api.github.com/repos/f1iwq2/signaux_complexes_gl/releases/latest'; + LocalFile:='page.txt'; + trouve_version:=false; + trouve_zip:=false; + zone_comm:=false; + Ncomm:=0; + if DownloadURL_NOCache(Url,localFile,taille) then + begin + AssignFile(fichier,LocalFile); + reset(fichier); + while not(eof(fichier)) and (not(trouve_version) or not(trouve_zip)) do begin - AssignFile(fichier,LocalFile); - reset(fichier); + readln(fichier,s); + s:=utf8Decode(s); + //Affiche(s,clyellow); + // adresse de téléchargement + s3:=extrait_champ('browser_download_url'); + if s3<>'' then trouve_zip:=true; - while not(eof(fichier)) and (not(trouve_version) or not(trouve_zip)) do + // nombre de téléchargements + nombre_tel:=extrait_champ_simple('download_count'); + + // date de création + date_creation_ang:=extrait_champ('published_at'); + if date_creation_ang<>'' then begin - readln(fichier,s); - s:=utf8Decode(s); - //Affiche(s,clyellow); - - // adresse de téléchargement - s3:=extrait_champ('browser_download_url'); - if s3<>'' then trouve_zip:=true; - - // nombre de téléchargements - nombre_tel:=extrait_champ_simple('download_count'); - - // date de création - date_creation_ang:=extrait_champ('published_at'); - if date_creation_ang<>'' then - begin - //Affiche(date_creation_ang,clyellow); - i:=pos('-',date_creation_ang); - j:=posex('-',date_creation_ang,i+1); - i2:=pos('T',date_creation_ang); - date_creation:=copy(date_creation_ang,j+1,i2-j-1); - date_creation:=date_creation+'/'+copy(date_creation_ang,i+1,j-i-1); - date_creation:=date_creation+'/'+copy(date_creation_ang,1,i-1); - date_creation:=date_creation+' '+copy(date_creation_ang,i2+1,length(date_creation_ang)-i2-1); - //Affiche(date_creation,clyellow); - end; - - // version publiée - version_p:=extrait_champ('tag_name'); - if version_p<>'' then - begin - trouve_version:=true; - if not(version_p[1] in ['0'..'9']) then delete(version_p,1,1); - end; - - description:=extrait_champ('body'); - if description<>'' then - begin - //description:=utf8Decode(description); - i:=1 ; j:=1; - // couper en chaînes - repeat - j:=pos('\r',description); - if j<>0 then - begin - comm[i]:=copy(description,1,j-1); - - inc(i); - delete(description,1,j+1); - end; - - j:=pos('\n',description); - if j<>0 then - begin - delete(description,j,2); - end; - - until j=0; - // - ncomm:=i; - comm[i]:=supprime_anti(description); - - end; - + //Affiche(date_creation_ang,clyellow); + i:=pos('-',date_creation_ang); + j:=posex('-',date_creation_ang,i+1); + i2:=pos('T',date_creation_ang); + date_creation:=copy(date_creation_ang,j+1,i2-j-1); + date_creation:=date_creation+'/'+copy(date_creation_ang,i+1,j-i-1); + date_creation:=date_creation+'/'+copy(date_creation_ang,1,i-1); + date_creation:=date_creation+' '+copy(date_creation_ang,i2+1,length(date_creation_ang)-i2-1); + //Affiche(date_creation,clyellow); end; - closefile(fichier); - - if trouve_version and trouve_zip then + // version publiée + version_p:=extrait_champ('tag_name'); + if version_p<>'' then begin - //---------------------------------------------------- - //isoler le nom du fichier - i:=length(s3); + trouve_version:=true; + if not(version_p[1] in ['0'..'9']) then delete(version_p,1,1); + end; + + description:=extrait_champ('body'); + if description<>'' then + begin + //description:=utf8Decode(description); + i:=1 ; j:=1; + // couper en chaînes repeat - dec(i); - locZip:=s3[i]='/'; - until (i=1) or LocZip; - nomfichier:=copy(s3,i+1,length(s3)-i); - - //affiche(nombre_tel,cllime); - - //Affiche(s3,clLime); - //Affiche(nomfichier,clred); - - // changer le . en , - s:=Version_p; - // i:=pos('.',s);if i<>0 then s[i]:=','; - s2:=version; - // i:=pos('.',s2);if i<>0 then s2[i]:=','; - - s:=AnsiUppercase(s); - l:=length(s); - SV_publie:=s[l]; - if Sv_publie in ['0'..'9'] then Sv_Publie:=' ' else begin s:=copy(s,1,l-1);Version_P:=s;end; - - val(s,V_publie,erreur); - if erreur<>0 then exit; - val(s2,V_utile,erreur); - if erreur<>0 then exit; - if (V_utile0 then + j:=pos('\r',description); + if j<>0 then begin - FormVersion.Memo1.lines.Clear; - Aff('Nouveautés de la V'+version_p+SV_publie+' de Signaux_Complexes_GL du '+date_creation); - aff(' '); - for i:=1 to ncomm do aff(comm[i]); + comm[i]:=copy(description,1,j-1); + inc(i); + delete(description,1,j+1); end; - if MessageDlg(s+#13+'Voulez-vous la télécharger, l''installer et l''exécuter?',mtConfirmation,[mbYes,mbNo],0)=mrYes then + + j:=pos('\n',description); + if j<>0 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 - dezipe_copie(s); - end - else Aff('Echec 2 de téléchargement - taille invalide'); - end - else Aff('Echec 1 de téléchargement'); - end - else formVersion.close; - end; - result:=V_publie; - end - else - begin - result:=-1; - affiche('Le dépôt ',clOrange); - - formprinc.FenRich.SelStart:=length(formprinc.FenRich.Text); - formprinc.FenRich.SelAttributes.Style:=[fsUnderline]; - Affiche('https://github.com/f1iwq2/Signaux_complexes_GL/releases',clAqua); - - Affiche('ne comprend aucune version diffusée.',clOrange); + delete(description,j,2); + end; + until j=0; + // + ncomm:=i; + comm[i]:=supprime_anti(description); end; + end; + closefile(fichier); + + if trouve_version and trouve_zip then + begin + //---------------------------------------------------- + //isoler le nom du fichier + i:=length(s3); + repeat + dec(i); + locZip:=s3[i]='/'; + until (i=1) or LocZip; + nomfichier:=copy(s3,i+1,length(s3)-i); + //affiche(nombre_tel,cllime); + //Affiche(s3,clLime); + //Affiche(nomfichier,clred); + // changer le . en , + s:=Version_p; + // i:=pos('.',s);if i<>0 then s[i]:=','; + s2:=version; + // i:=pos('.',s2);if i<>0 then s2[i]:=','; + + s:=AnsiUppercase(s); + l:=length(s); + SV_publie:=s[l]; + if Sv_publie in ['0'..'9'] then Sv_Publie:=' ' else begin s:=copy(s,1,l-1);Version_P:=s;end; + val(s,V_publie,erreur); + if erreur<>0 then exit; + val(s2,V_utile,erreur); + if erreur<>0 then exit; + if (V_utile0 then + begin + FormVersion.Memo1.lines.Clear; + Aff('Nouveautés de la V'+version_p+SV_publie+' de Signaux_Complexes_GL du '+date_creation); + Aff(' '); + for i:=1 to ncomm do aff(comm[i]); + end; + 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; + + // s3=url complete avecnom de fichier ex : 'https://github.com/f1iwq2/Signaux_complexes_GL/releases/download/V8.51/signaux_complexes_V8.51.zip' + // s=répertoire+fichier de téléchargement ex : 'C:\Users\moi\Downloads\signaux_complexes_V8.51.zip' + 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; + + // télécharge l'url (s3) dans le fichier s + if DownloadURL_NOCache(s3,s,taille) then + begin + if taille>700000 then + begin + dezipe_copie(s); // dézipe et lance et termine le programme. + end + else Aff('Echec 2 de téléchargement - taille invalide'); + end + else Aff('Echec 1 de téléchargement'); + end + else formVersion.close; + end; + result:=V_publie; end else begin - result:=0; - Affiche('Pas d''accès au site github.com ou échec téléchargement',clorange); + result:=-1; + affiche('Le dépôt ',clOrange); + formprinc.FenRich.SelStart:=length(formprinc.FenRich.Text); + formprinc.FenRich.SelAttributes.Style:=[fsUnderline]; + Affiche('https://github.com/f1iwq2/Signaux_complexes_GL/releases',clAqua); + Affiche('ne comprend aucune version diffusée.',clOrange); end; + end + else + begin + result:=0; + Affiche('Pas d''accès au site github.com ou échec téléchargement',clorange); + end; end; @@ -579,6 +538,7 @@ begin end; +// ne parche pas pour les répertoires non vides procedure DeleteDirectory(const DirName: string); var FileFolderOperation: TSHFileOpStruct; @@ -590,6 +550,19 @@ begin SHFileOperation(FileFolderOperation); end; +function DelDir(Dir: String): Boolean; +var fos: TSHFileOpStruct; +begin + ZeroMemory(@fos,SizeOf(fos)); + with fos do + begin + wFunc:=FO_DELETE; + fFlags:=FOF_SILENT or FOF_NOCONFIRMATION; + pFrom:=PChar(Dir + #0); + end; + Result:=(0=ShFileOperation(fos)); +end; + function Unzip(zipfile : oleVariant): boolean; var shellobj,srcfldr, destfldr, shellfldritems,repertoire: Olevariant; @@ -604,27 +577,28 @@ begin filtre:=zipfile; delete(filtre,i,4); - if directoryExists(filtre) then DeleteDirectory(filtre); - - {$I-} - MkDir(filtre); - erreur:=IoResult; - {$I+} - if erreur<>0 then + // créer le répertoire destination du zip (obligatoire car la commande de dézippe ne le créée pas) + if not(directoryExists(filtre)) then begin - Affiche('Impossible de créer répertoire',clred); - exit; + {$I-} + MkDir(filtre); + erreur:=IoResult; + {$I+} + if erreur<>0 then + begin + log('Impossible de créer répertoire '+filtre+' erreur '+intToSTR(erreur),clred); + exit; + end; 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 + if not((VarType(srcfldr)=varDispatch) and Assigned(TVarData(srcfldr).VDispatch)) then begin - Affiche(zipfile+ ' invalide ou absent',clred); + log('Fichier '+zipfile+ ' invalide ou absent',clred); result:=false; exit; end; @@ -632,7 +606,7 @@ begin destfldr:=ShellObj.NameSpace(repertoire); if not ((VarType(destfldr)=varDispatch) and Assigned(TVarData(destfldr).VDispatch)) then begin - Affiche(' répertoire destination invalide : '+ repertoire,clred); + log('Répertoire destination invalide : '+ repertoire,clred); result:=false; exit; end; diff --git a/versions.txt b/versions.txt index 0bc6724..6bf2596 100644 --- a/versions.txt +++ b/versions.txt @@ -241,6 +241,12 @@ version 8.5 : Gestion de la centrale Z21 en mode autonome en Xpressnet. version 8.51 : Améliorations sur l'affichage des fenêtres aux démarrage. Création commandes des lignes DTR et RTS sur les périphériques COM/USB. Gestion des déconnexions matérielles des ports COM/USB. +version 8.52 : Amélioration de l'installeur automatique. +version 8.53 : Prise en compte des actionneurs dans le simulateur. + Correction d'un bug sur l'affichage des TCO en mode exploitation. + + +