This commit is contained in:
f1iwq2
2024-03-11 18:11:21 +01:00
parent 81d5c007d4
commit 4a82a86965
13 changed files with 569 additions and 507 deletions
BIN
View File
Binary file not shown.
+125 -126
View File
@@ -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
+22 -9
View File
@@ -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
+20 -1
View File
@@ -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;
+37 -37
View File
@@ -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
+2 -2
View File
@@ -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
+7 -6
View File
@@ -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
+47 -26
View File
@@ -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
+39 -12
View File
@@ -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
+29 -27
View File
@@ -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:=xmini<xmaxi;
if modeSelection then
+235 -261
View File
@@ -1,11 +1,12 @@
unit verif_version;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls , ComCtrls ,WinInet, ExtCtrls , StrUtils, unitPrinc,
ShellAPI , comObj , ShlObj , ActiveX ;
ShellAPI , comObj , ShlObj , ActiveX ;
type
TFormVersion = class(TForm)
@@ -24,8 +25,9 @@ var
Lance_verif : integer;
verifVersion,notificationVersion,essai : boolean;
chemin_Dest,chemin_src,date_creation,nombre_tel : string;
f : text;
Const Version='8.51'; // sert à la comparaison de la version publiée
Const Version='8.53'; // sert à la comparaison de la version publiée
SousVersion=' '; // A B C ... en cas d'absence de sous version mettre un espace
// pour unzip
SHCONTCH_NOPROGRESSBOX = 4;
@@ -93,8 +95,8 @@ begin
if i<>0 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_utile<V_publie) or
((V_utile=V_publie) and (SousVersion<SV_publie)) then
begin
FormVersion.Top:=10;
FormVersion.Left:=10;
FormVersion.show;
s:='Vous utilisez la version '+version+SousVersion+' mais il existe la version '+Version_p+SV_publie;
if nComm>0 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_utile<V_publie) or ((V_utile=V_publie) and (SousVersion<SV_publie)) then
begin
FormVersion.Top:=10;
FormVersion.Left:=10;
FormVersion.show;
s:='Vous utilisez la version '+version+SousVersion+' mais il existe la version '+Version_p+SV_publie;
if nComm>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]);
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;
+6
View File
@@ -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.