From ea72da0689ed35825a497ba0adfa343ea54900e8 Mon Sep 17 00:00:00 2001 From: developer1 Date: Fri, 28 Aug 2015 09:26:07 +0000 Subject: [PATCH] - restructure folders and names of files - unnecessary examples removed to 'old..' folder git-svn-id: svn://192.168.1.162/sw_open/ufr/delphi/examples/trunk@42 0be1b11f-4c31-1448-99a1-201ed2388f88 --- uFCoderAdvance/BlockInSector.dcu | Bin 23835 -> 0 bytes uFCoderAdvance/BlockInSector.ddp | Bin 51 -> 0 bytes uFCoderAdvance/BlockInSector.dfm | 1021 ------------- uFCoderAdvance/BlockInSector.pas | 624 -------- uFCoderAdvance/BlockInSector.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/BlockInSector.~dfm | 1021 ------------- uFCoderAdvance/BlockInSector.~pas | 624 -------- uFCoderAdvance/BlockReadWrite.dcu | Bin 22935 -> 0 bytes uFCoderAdvance/BlockReadWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance/BlockReadWrite.dfm | 893 ------------ uFCoderAdvance/BlockReadWrite.pas | 675 --------- uFCoderAdvance/BlockReadWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/BlockReadWrite.~dfm | 893 ------------ uFCoderAdvance/BlockReadWrite.~pas | 675 --------- uFCoderAdvance/Global.dcu | Bin 9723 -> 0 bytes uFCoderAdvance/Global.pas | 263 ---- uFCoderAdvance/Global.~pas | 263 ---- uFCoderAdvance/LinearFormatsCard.dcu | Bin 17694 -> 0 bytes uFCoderAdvance/LinearFormatsCard.ddp | Bin 51 -> 0 bytes uFCoderAdvance/LinearFormatsCard.dfm | 780 ---------- uFCoderAdvance/LinearFormatsCard.pas | 436 ------ uFCoderAdvance/LinearFormatsCard.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/LinearFormatsCard.~dfm | 780 ---------- uFCoderAdvance/LinearFormatsCard.~pas | 436 ------ uFCoderAdvance/LinearReadWrite.dcu | Bin 27315 -> 0 bytes uFCoderAdvance/LinearReadWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance/LinearReadWrite.dfm | 1089 -------------- uFCoderAdvance/LinearReadWrite.pas | 689 --------- uFCoderAdvance/LinearReadWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/LinearReadWrite.~dfm | 1089 -------------- uFCoderAdvance/LinearReadWrite.~pas | 689 --------- uFCoderAdvance/SectorTrailerWrite.dcu | Bin 10541 -> 0 bytes uFCoderAdvance/SectorTrailerWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance/SectorTrailerWrite.dfm | 1117 --------------- uFCoderAdvance/SectorTrailerWrite.pas | 244 ---- uFCoderAdvance/SectorTrailersWrite.dcu | Bin 20117 -> 0 bytes uFCoderAdvance/SectorTrailersWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance/SectorTrailersWrite.dfm | 1100 -------------- uFCoderAdvance/SectorTrailersWrite.pas | 520 ------- uFCoderAdvance/SectorTrailersWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/SectorTrailersWrite.~dfm | 1100 -------------- uFCoderAdvance/SectorTrailersWrite.~pas | 520 ------- uFCoderAdvance/ValueBlock.dcu | Bin 22405 -> 0 bytes uFCoderAdvance/ValueBlock.ddp | Bin 51 -> 0 bytes uFCoderAdvance/ValueBlock.dfm | 1093 -------------- uFCoderAdvance/ValueBlock.pas | 599 -------- uFCoderAdvance/ValueBlock.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/ValueBlock.~dfm | 1093 -------------- uFCoderAdvance/ValueBlock.~pas | 598 -------- uFCoderAdvance/ValueBlockInSector.dcu | Bin 26323 -> 0 bytes uFCoderAdvance/ValueBlockInSector.ddp | Bin 51 -> 0 bytes uFCoderAdvance/ValueBlockInSector.dfm | 1265 ----------------- uFCoderAdvance/ValueBlockInSector.pas | 670 --------- uFCoderAdvance/ValueBlockInSector.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/ValueBlockInSector.~dfm | 1265 ----------------- uFCoderAdvance/ValueBlockInSector.~pas | 670 --------- uFCoderAdvance/ValueBlockInSectorIncrDecr.dcu | Bin 25077 -> 0 bytes uFCoderAdvance/ValueBlockInSectorIncrDecr.ddp | Bin 51 -> 0 bytes uFCoderAdvance/ValueBlockInSectorIncrDecr.dfm | 1067 -------------- uFCoderAdvance/ValueBlockInSectorIncrDecr.pas | 623 -------- .../ValueBlockInSectorIncrDecr.~ddp | Bin 51 -> 0 bytes .../ValueBlockInSectorIncrDecr.~dfm | 1067 -------------- .../ValueBlockInSectorIncrDecr.~pas | 623 -------- uFCoderAdvance/ValueBlockIncDec.dcu | Bin 21006 -> 0 bytes uFCoderAdvance/ValueBlockIncDec.ddp | Bin 51 -> 0 bytes uFCoderAdvance/ValueBlockIncDec.dfm | 881 ------------ uFCoderAdvance/ValueBlockIncDec.pas | 542 ------- uFCoderAdvance/ValueBlockIncDec.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/ValueBlockIncDec.~dfm | 881 ------------ uFCoderAdvance/ValueBlockIncDec.~pas | 542 ------- uFCoderAdvance/ViewAll.dcu | Bin 10086 -> 0 bytes uFCoderAdvance/ViewAll.ddp | Bin 51 -> 0 bytes uFCoderAdvance/ViewAll.dfm | 198 --- uFCoderAdvance/ViewAll.pas | 273 ---- uFCoderAdvance/ViewAll.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/ViewAll.~dfm | 198 --- uFCoderAdvance/ViewAll.~pas | 273 ---- uFCoderAdvance/ftd2xx.dll | Bin 206144 -> 0 bytes uFCoderAdvance/uFAdvanced.dcu | Bin 18761 -> 0 bytes uFCoderAdvance/uFAdvanced.ddp | Bin 51 -> 0 bytes uFCoderAdvance/uFAdvanced.dfm | 523 ------- uFCoderAdvance/uFAdvanced.pas | 476 ------- uFCoderAdvance/uFAdvanced.~ddp | Bin 51 -> 0 bytes uFCoderAdvance/uFAdvanced.~dfm | 523 ------- uFCoderAdvance/uFAdvanced.~pas | 476 ------- uFCoderAdvance/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderAdvance/uFCoder.dcu | Bin 14346 -> 0 bytes uFCoderAdvance/uFCoder.pas | 640 --------- uFCoderAdvance/uFCoder1x.dll | Bin 89172 -> 0 bytes uFCoderAdvance/uFCoder1x.pas | 640 --------- uFCoderAdvance/uFrAdvanced.cfg | 38 - uFCoderAdvance/uFrAdvanced.ddp | Bin 51 -> 0 bytes uFCoderAdvance/uFrAdvanced.dfm | 501 ------- uFCoderAdvance/uFrAdvanced.dof | 136 -- uFCoderAdvance/uFrAdvanced.dpr | 36 - uFCoderAdvance/uFrAdvanced.exe | Bin 794112 -> 0 bytes uFCoderAdvance/uFrAdvanced.pas | 330 ----- uFCoderAdvance/uFrAdvanced.res | Bin 1608 -> 0 bytes uFCoderAdvance/uFrAdvanced.~dpr | 36 - uFCoderAdvance/ufCoder1x.dcu | Bin 16201 -> 0 bytes uFCoderAdvance_D7/BlockInSector.dcu | Bin 23835 -> 0 bytes uFCoderAdvance_D7/BlockInSector.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/BlockInSector.dfm | 1021 ------------- uFCoderAdvance_D7/BlockInSector.pas | 624 -------- uFCoderAdvance_D7/BlockInSector.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/BlockInSector.~dfm | 1021 ------------- uFCoderAdvance_D7/BlockInSector.~pas | 624 -------- uFCoderAdvance_D7/BlockReadWrite.dcu | Bin 22935 -> 0 bytes uFCoderAdvance_D7/BlockReadWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/BlockReadWrite.dfm | 893 ------------ uFCoderAdvance_D7/BlockReadWrite.pas | 675 --------- uFCoderAdvance_D7/BlockReadWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/BlockReadWrite.~dfm | 893 ------------ uFCoderAdvance_D7/BlockReadWrite.~pas | 675 --------- uFCoderAdvance_D7/Global.dcu | Bin 9723 -> 0 bytes uFCoderAdvance_D7/Global.pas | 263 ---- uFCoderAdvance_D7/Global.~pas | 263 ---- uFCoderAdvance_D7/LinearFormatsCard.dcu | Bin 17694 -> 0 bytes uFCoderAdvance_D7/LinearFormatsCard.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/LinearFormatsCard.dfm | 780 ---------- uFCoderAdvance_D7/LinearFormatsCard.pas | 436 ------ uFCoderAdvance_D7/LinearFormatsCard.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/LinearFormatsCard.~dfm | 780 ---------- uFCoderAdvance_D7/LinearFormatsCard.~pas | 436 ------ uFCoderAdvance_D7/LinearReadWrite.dcu | Bin 27315 -> 0 bytes uFCoderAdvance_D7/LinearReadWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/LinearReadWrite.dfm | 1089 -------------- uFCoderAdvance_D7/LinearReadWrite.pas | 689 --------- uFCoderAdvance_D7/LinearReadWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/LinearReadWrite.~dfm | 1089 -------------- uFCoderAdvance_D7/LinearReadWrite.~pas | 689 --------- uFCoderAdvance_D7/SectorTrailerWrite.dcu | Bin 10541 -> 0 bytes uFCoderAdvance_D7/SectorTrailerWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/SectorTrailerWrite.dfm | 1117 --------------- uFCoderAdvance_D7/SectorTrailerWrite.pas | 244 ---- uFCoderAdvance_D7/SectorTrailersWrite.dcu | Bin 20117 -> 0 bytes uFCoderAdvance_D7/SectorTrailersWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/SectorTrailersWrite.dfm | 1100 -------------- uFCoderAdvance_D7/SectorTrailersWrite.pas | 520 ------- uFCoderAdvance_D7/SectorTrailersWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/SectorTrailersWrite.~dfm | 1100 -------------- uFCoderAdvance_D7/SectorTrailersWrite.~pas | 520 ------- uFCoderAdvance_D7/ValueBlock.dcu | Bin 22405 -> 0 bytes uFCoderAdvance_D7/ValueBlock.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ValueBlock.dfm | 1093 -------------- uFCoderAdvance_D7/ValueBlock.pas | 599 -------- uFCoderAdvance_D7/ValueBlock.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ValueBlock.~dfm | 1093 -------------- uFCoderAdvance_D7/ValueBlock.~pas | 598 -------- uFCoderAdvance_D7/ValueBlockInSector.dcu | Bin 26323 -> 0 bytes uFCoderAdvance_D7/ValueBlockInSector.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ValueBlockInSector.dfm | 1265 ----------------- uFCoderAdvance_D7/ValueBlockInSector.pas | 670 --------- uFCoderAdvance_D7/ValueBlockInSector.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ValueBlockInSector.~dfm | 1265 ----------------- uFCoderAdvance_D7/ValueBlockInSector.~pas | 670 --------- .../ValueBlockInSectorIncrDecr.dcu | Bin 25077 -> 0 bytes .../ValueBlockInSectorIncrDecr.ddp | Bin 51 -> 0 bytes .../ValueBlockInSectorIncrDecr.dfm | 1067 -------------- .../ValueBlockInSectorIncrDecr.pas | 623 -------- .../ValueBlockInSectorIncrDecr.~ddp | Bin 51 -> 0 bytes .../ValueBlockInSectorIncrDecr.~dfm | 1067 -------------- .../ValueBlockInSectorIncrDecr.~pas | 623 -------- uFCoderAdvance_D7/ValueBlockIncDec.dcu | Bin 21006 -> 0 bytes uFCoderAdvance_D7/ValueBlockIncDec.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ValueBlockIncDec.dfm | 881 ------------ uFCoderAdvance_D7/ValueBlockIncDec.pas | 542 ------- uFCoderAdvance_D7/ValueBlockIncDec.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ValueBlockIncDec.~dfm | 881 ------------ uFCoderAdvance_D7/ValueBlockIncDec.~pas | 542 ------- uFCoderAdvance_D7/ViewAll.dcu | Bin 10086 -> 0 bytes uFCoderAdvance_D7/ViewAll.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ViewAll.dfm | 198 --- uFCoderAdvance_D7/ViewAll.pas | 273 ---- uFCoderAdvance_D7/ViewAll.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/ViewAll.~dfm | 198 --- uFCoderAdvance_D7/ViewAll.~pas | 273 ---- uFCoderAdvance_D7/uFAdvanced.dcu | Bin 18761 -> 0 bytes uFCoderAdvance_D7/uFAdvanced.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/uFAdvanced.dfm | 523 ------- uFCoderAdvance_D7/uFAdvanced.pas | 476 ------- uFCoderAdvance_D7/uFAdvanced.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/uFAdvanced.~dfm | 523 ------- uFCoderAdvance_D7/uFAdvanced.~pas | 476 ------- uFCoderAdvance_D7/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderAdvance_D7/uFCoder.dcu | Bin 14346 -> 0 bytes uFCoderAdvance_D7/uFCoder.pas | 640 --------- uFCoderAdvance_D7/uFCoder_coff.lib | Bin 244806 -> 0 bytes uFCoderAdvance_D7/uFCoder_omf.lib | Bin 48640 -> 0 bytes uFCoderAdvance_D7/uFrAdvanced.cfg | 38 - uFCoderAdvance_D7/uFrAdvanced.ddp | Bin 51 -> 0 bytes uFCoderAdvance_D7/uFrAdvanced.dfm | 501 ------- uFCoderAdvance_D7/uFrAdvanced.dof | 136 -- uFCoderAdvance_D7/uFrAdvanced.dpr | 36 - uFCoderAdvance_D7/uFrAdvanced.exe | Bin 794112 -> 0 bytes uFCoderAdvance_D7/uFrAdvanced.pas | 330 ----- uFCoderAdvance_D7/uFrAdvanced.res | Bin 1608 -> 0 bytes uFCoderAdvance_D7/uFrAdvanced.~dpr | 36 - uFCoderAdvance_XE/BlockInSector.dcu | Bin 31966 -> 0 bytes uFCoderAdvance_XE/BlockInSector.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/BlockInSector.dfm | 1021 ------------- uFCoderAdvance_XE/BlockInSector.pas | 624 -------- uFCoderAdvance_XE/BlockInSector.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/BlockInSector.~dfm | 1021 ------------- uFCoderAdvance_XE/BlockInSector.~pas | 624 -------- uFCoderAdvance_XE/BlockReadWrite.dcu | Bin 31138 -> 0 bytes uFCoderAdvance_XE/BlockReadWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/BlockReadWrite.dfm | 893 ------------ uFCoderAdvance_XE/BlockReadWrite.pas | 675 --------- uFCoderAdvance_XE/BlockReadWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/BlockReadWrite.~dfm | 893 ------------ uFCoderAdvance_XE/BlockReadWrite.~pas | 675 --------- uFCoderAdvance_XE/Global.dcu | Bin 12312 -> 0 bytes uFCoderAdvance_XE/Global.pas | 263 ---- uFCoderAdvance_XE/Global.~pas | 263 ---- uFCoderAdvance_XE/LinearFormatsCard.dcu | Bin 24044 -> 0 bytes uFCoderAdvance_XE/LinearFormatsCard.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/LinearFormatsCard.dfm | 780 ---------- uFCoderAdvance_XE/LinearFormatsCard.pas | 436 ------ uFCoderAdvance_XE/LinearFormatsCard.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/LinearFormatsCard.~dfm | 780 ---------- uFCoderAdvance_XE/LinearFormatsCard.~pas | 436 ------ uFCoderAdvance_XE/LinearReadWrite.dcu | Bin 37008 -> 0 bytes uFCoderAdvance_XE/LinearReadWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/LinearReadWrite.dfm | 1089 -------------- uFCoderAdvance_XE/LinearReadWrite.pas | 689 --------- uFCoderAdvance_XE/LinearReadWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/LinearReadWrite.~dfm | 1089 -------------- uFCoderAdvance_XE/LinearReadWrite.~pas | 689 --------- uFCoderAdvance_XE/SectorTrailerWrite.dcu | Bin 10541 -> 0 bytes uFCoderAdvance_XE/SectorTrailerWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/SectorTrailerWrite.dfm | 1117 --------------- uFCoderAdvance_XE/SectorTrailerWrite.pas | 244 ---- uFCoderAdvance_XE/SectorTrailersWrite.dcu | Bin 27753 -> 0 bytes uFCoderAdvance_XE/SectorTrailersWrite.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/SectorTrailersWrite.dfm | 1100 -------------- uFCoderAdvance_XE/SectorTrailersWrite.pas | 520 ------- uFCoderAdvance_XE/SectorTrailersWrite.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/SectorTrailersWrite.~dfm | 1100 -------------- uFCoderAdvance_XE/SectorTrailersWrite.~pas | 520 ------- uFCoderAdvance_XE/ValueBlock.dcu | Bin 30248 -> 0 bytes uFCoderAdvance_XE/ValueBlock.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ValueBlock.dfm | 1093 -------------- uFCoderAdvance_XE/ValueBlock.pas | 599 -------- uFCoderAdvance_XE/ValueBlock.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ValueBlock.~dfm | 1093 -------------- uFCoderAdvance_XE/ValueBlock.~pas | 598 -------- uFCoderAdvance_XE/ValueBlockInSector.dcu | Bin 35845 -> 0 bytes uFCoderAdvance_XE/ValueBlockInSector.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ValueBlockInSector.dfm | 1265 ----------------- uFCoderAdvance_XE/ValueBlockInSector.pas | 670 --------- uFCoderAdvance_XE/ValueBlockInSector.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ValueBlockInSector.~dfm | 1265 ----------------- uFCoderAdvance_XE/ValueBlockInSector.~pas | 670 --------- .../ValueBlockInSectorIncrDecr.dcu | Bin 33734 -> 0 bytes .../ValueBlockInSectorIncrDecr.ddp | Bin 51 -> 0 bytes .../ValueBlockInSectorIncrDecr.dfm | 1067 -------------- .../ValueBlockInSectorIncrDecr.pas | 623 -------- .../ValueBlockInSectorIncrDecr.~ddp | Bin 51 -> 0 bytes .../ValueBlockInSectorIncrDecr.~dfm | 1067 -------------- .../ValueBlockInSectorIncrDecr.~pas | 623 -------- uFCoderAdvance_XE/ValueBlockIncDec.dcu | Bin 28356 -> 0 bytes uFCoderAdvance_XE/ValueBlockIncDec.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ValueBlockIncDec.dfm | 881 ------------ uFCoderAdvance_XE/ValueBlockIncDec.pas | 542 ------- uFCoderAdvance_XE/ValueBlockIncDec.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ValueBlockIncDec.~dfm | 881 ------------ uFCoderAdvance_XE/ValueBlockIncDec.~pas | 542 ------- uFCoderAdvance_XE/ViewAll.dcu | Bin 12611 -> 0 bytes uFCoderAdvance_XE/ViewAll.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ViewAll.dfm | 198 --- uFCoderAdvance_XE/ViewAll.pas | 273 ---- uFCoderAdvance_XE/ViewAll.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/ViewAll.~dfm | 198 --- uFCoderAdvance_XE/ViewAll.~pas | 273 ---- uFCoderAdvance_XE/uFAdvanced.dcu | Bin 26937 -> 0 bytes uFCoderAdvance_XE/uFAdvanced.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/uFAdvanced.dfm | 523 ------- uFCoderAdvance_XE/uFAdvanced.pas | 476 ------- uFCoderAdvance_XE/uFAdvanced.~ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/uFAdvanced.~dfm | 523 ------- uFCoderAdvance_XE/uFAdvanced.~pas | 476 ------- uFCoderAdvance_XE/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderAdvance_XE/uFCoder-x86_64.dll | Bin 193536 -> 0 bytes uFCoderAdvance_XE/uFCoder.dcu | Bin 16187 -> 0 bytes uFCoderAdvance_XE/uFCoder.pas | 640 --------- uFCoderAdvance_XE/uFCoder1x.~pas | 640 --------- uFCoderAdvance_XE/uFCoder_coff-x86_64.lib | Bin 241948 -> 0 bytes uFCoderAdvance_XE/uFCoder_coff.lib | Bin 244806 -> 0 bytes uFCoderAdvance_XE/uFCoder_omf.lib | Bin 48640 -> 0 bytes uFCoderAdvance_XE/uFrAdvanced.cfg | 38 - uFCoderAdvance_XE/uFrAdvanced.ddp | Bin 51 -> 0 bytes uFCoderAdvance_XE/uFrAdvanced.dfm | 501 ------- uFCoderAdvance_XE/uFrAdvanced.dof | 136 -- uFCoderAdvance_XE/uFrAdvanced.dpr | 36 - uFCoderAdvance_XE/uFrAdvanced.dproj | 144 -- uFCoderAdvance_XE/uFrAdvanced.dproj.local | 2 - uFCoderAdvance_XE/uFrAdvanced.exe | Bin 2770432 -> 0 bytes uFCoderAdvance_XE/uFrAdvanced.identcache | Bin 725 -> 0 bytes uFCoderAdvance_XE/uFrAdvanced.pas | 330 ----- uFCoderAdvance_XE/uFrAdvanced.res | Bin 2040 -> 0 bytes uFCoderAdvance_XE/uFrAdvanced.~dpr | 36 - uFCoderAdvance_XE/uFrAdvanced_Icon.ico | Bin 766 -> 0 bytes uFCoderSimple/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderSimple/uFCoder.dcu | Bin 3075 -> 0 bytes uFCoderSimple/uFCoder.pas | 101 -- uFCoderSimple/uFCoder.~pas | 101 -- uFCoderSimple/uFCoder1x.dll | Bin 89172 -> 0 bytes uFCoderSimple/uFCoder1x.pas | 129 -- uFCoderSimple/uFRSimple.cfg | 38 - uFCoderSimple/uFRSimple.dof | 136 -- uFCoderSimple/uFRSimple.dpr | 16 - uFCoderSimple/uFRSimple.exe | Bin 503296 -> 0 bytes uFCoderSimple/uFRSimple.identcache | Bin 141 -> 0 bytes uFCoderSimple/uFRSimple.res | Bin 1664 -> 0 bytes uFCoderSimple/uFRSimple.~dpr | 16 - uFCoderSimple/uFRSimpleImplementation.dcu | Bin 26489 -> 0 bytes uFCoderSimple/uFRSimpleImplementation.ddp | Bin 51 -> 0 bytes uFCoderSimple/uFRSimpleImplementation.dfm | 707 --------- uFCoderSimple/uFRSimpleImplementation.pas | 673 --------- uFCoderSimple/uFRSimple_Icon.ico | Bin 766 -> 0 bytes uFCoderSimple/uFSimple.dcu | Bin 26286 -> 0 bytes uFCoderSimple/uFSimple.ddp | Bin 51 -> 0 bytes uFCoderSimple/uFSimple.dfm | 755 ---------- uFCoderSimple/uFSimple.pas | 718 ---------- uFCoderSimple/uFSimple.~ddp | Bin 51 -> 0 bytes uFCoderSimple/uFSimple.~dfm | 755 ---------- uFCoderSimple/uFSimple.~pas | 718 ---------- uFCoderSimple/ufCoder1x.dcu | Bin 3569 -> 0 bytes uFCoderSimple_D7/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderSimple_D7/uFCoder.dcu | Bin 3075 -> 0 bytes uFCoderSimple_D7/uFCoder.pas | 101 -- uFCoderSimple_D7/uFCoder.~pas | 101 -- uFCoderSimple_D7/uFCoder_coff.lib | Bin 244806 -> 0 bytes uFCoderSimple_D7/uFCoder_omf.lib | Bin 48640 -> 0 bytes uFCoderSimple_D7/uFRSimple.cfg | 38 - uFCoderSimple_D7/uFRSimple.dof | 136 -- uFCoderSimple_D7/uFRSimple.dpr | 16 - uFCoderSimple_D7/uFRSimple.exe | Bin 503296 -> 0 bytes uFCoderSimple_D7/uFRSimple.identcache | Bin 141 -> 0 bytes uFCoderSimple_D7/uFRSimple.res | Bin 1664 -> 0 bytes uFCoderSimple_D7/uFRSimple.~dpr | 16 - uFCoderSimple_D7/uFRSimple_Icon.ico | Bin 766 -> 0 bytes uFCoderSimple_D7/uFSimple.dcu | Bin 26286 -> 0 bytes uFCoderSimple_D7/uFSimple.ddp | Bin 51 -> 0 bytes uFCoderSimple_D7/uFSimple.dfm | 755 ---------- uFCoderSimple_D7/uFSimple.pas | 718 ---------- uFCoderSimple_D7/uFSimple.~ddp | Bin 51 -> 0 bytes uFCoderSimple_D7/uFSimple.~dfm | 755 ---------- uFCoderSimple_D7/uFSimple.~pas | 718 ---------- uFCoderSimple_XE/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderSimple_XE/uFCoder-x86_64.dll | Bin 193536 -> 0 bytes uFCoderSimple_XE/uFCoder.dcu | Bin 3555 -> 0 bytes uFCoderSimple_XE/uFCoder.pas | 129 -- uFCoderSimple_XE/uFCoder_coff-x86_64.lib | Bin 241948 -> 0 bytes uFCoderSimple_XE/uFCoder_coff.lib | Bin 244806 -> 0 bytes uFCoderSimple_XE/uFCoder_omf.lib | Bin 48640 -> 0 bytes uFCoderSimple_XE/uFRSimple.cfg | 38 - uFCoderSimple_XE/uFRSimple.dof | 136 -- uFCoderSimple_XE/uFRSimple.dpr | 16 - uFCoderSimple_XE/uFRSimple.dproj | 113 -- uFCoderSimple_XE/uFRSimple.dproj.local | 2 - uFCoderSimple_XE/uFRSimple.exe | Bin 2388992 -> 0 bytes uFCoderSimple_XE/uFRSimple.identcache | Bin 139 -> 0 bytes uFCoderSimple_XE/uFRSimple.res | Bin 2040 -> 0 bytes uFCoderSimple_XE/uFRSimple.~dpr | 16 - uFCoderSimple_XE/uFRSimple_Icon.ico | Bin 766 -> 0 bytes uFCoderSimple_XE/uFRSimple_Icon1.ico | Bin 766 -> 0 bytes uFCoderSimple_XE/uFSimple.dcu | Bin 35770 -> 0 bytes uFCoderSimple_XE/uFSimple.ddp | Bin 51 -> 0 bytes uFCoderSimple_XE/uFSimple.dfm | 755 ---------- uFCoderSimple_XE/uFSimple.pas | 723 ---------- uFCoderSimple_XE/uFSimple.~ddp | Bin 51 -> 0 bytes uFCoderSimple_XE/uFSimple.~dfm | 755 ---------- uFCoderSimple_XE/uFSimple.~pas | 718 ---------- uFCoderSimplest/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderSimplest/uFCoder1x.dll | Bin 89172 -> 0 bytes uFCoderSimplest/uFCoder1x.pas | 101 -- uFCoderSimplest/uFSimplest.dcu | Bin 15842 -> 0 bytes uFCoderSimplest/uFSimplest.ddp | Bin 51 -> 0 bytes uFCoderSimplest/uFSimplest.dfm | 291 ---- uFCoderSimplest/uFSimplest.pas | 463 ------ uFCoderSimplest/uFSimplest.~ddp | Bin 51 -> 0 bytes uFCoderSimplest/uFSimplest.~dfm | 291 ---- uFCoderSimplest/uFSimplest.~pas | 463 ------ uFCoderSimplest/uFrSimplest.cfg | 38 - uFCoderSimplest/uFrSimplest.dof | 136 -- uFCoderSimplest/uFrSimplest.dpr | 14 - uFCoderSimplest/uFrSimplest.exe | Bin 433664 -> 0 bytes uFCoderSimplest/uFrSimplest.res | Bin 1672 -> 0 bytes uFCoderSimplest/uFrSimplest.~dpr | 14 - uFCoderSimplest/ufCoder1x.dcu | Bin 3083 -> 0 bytes uFCoderSimplest_D7/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderSimplest_D7/uFCoder_coff.lib | Bin 244806 -> 0 bytes uFCoderSimplest_D7/uFCoder_omf.lib | Bin 48640 -> 0 bytes uFCoderSimplest_D7/uFSimplest.dcu | Bin 15842 -> 0 bytes uFCoderSimplest_D7/uFSimplest.ddp | Bin 51 -> 0 bytes uFCoderSimplest_D7/uFSimplest.dfm | 291 ---- uFCoderSimplest_D7/uFSimplest.pas | 463 ------ uFCoderSimplest_D7/uFSimplest.~ddp | Bin 51 -> 0 bytes uFCoderSimplest_D7/uFSimplest.~dfm | 291 ---- uFCoderSimplest_D7/uFSimplest.~pas | 463 ------ uFCoderSimplest_D7/uFrSimplest.cfg | 38 - uFCoderSimplest_D7/uFrSimplest.dof | 136 -- uFCoderSimplest_D7/uFrSimplest.dpr | 14 - uFCoderSimplest_D7/uFrSimplest.exe | Bin 433664 -> 0 bytes uFCoderSimplest_D7/uFrSimplest.res | Bin 1672 -> 0 bytes uFCoderSimplest_D7/uFrSimplest.~dpr | 14 - uFCoderSimplest_XE/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFCoderSimplest_XE/uFCoder-x86_64.dll | Bin 193536 -> 0 bytes uFCoderSimplest_XE/uFCoder.dcu | Bin 3075 -> 0 bytes uFCoderSimplest_XE/uFCoder.pas | 101 -- uFCoderSimplest_XE/uFCoder_coff-x86_64.lib | Bin 241948 -> 0 bytes uFCoderSimplest_XE/uFCoder_coff.lib | Bin 244806 -> 0 bytes uFCoderSimplest_XE/uFCoder_omf.lib | Bin 48640 -> 0 bytes uFCoderSimplest_XE/uFSimplest.dcu | Bin 21528 -> 0 bytes uFCoderSimplest_XE/uFSimplest.ddp | Bin 51 -> 0 bytes uFCoderSimplest_XE/uFSimplest.dfm | 291 ---- uFCoderSimplest_XE/uFSimplest.pas | 466 ------ uFCoderSimplest_XE/uFSimplest.~ddp | Bin 51 -> 0 bytes uFCoderSimplest_XE/uFSimplest.~dfm | 291 ---- uFCoderSimplest_XE/uFSimplest.~pas | 463 ------ uFCoderSimplest_XE/uFrSimplest.cfg | 38 - uFCoderSimplest_XE/uFrSimplest.dof | 136 -- uFCoderSimplest_XE/uFrSimplest.dpr | 14 - uFCoderSimplest_XE/uFrSimplest.dproj | 452 ------ uFCoderSimplest_XE/uFrSimplest.dproj.local | 7 - uFCoderSimplest_XE/uFrSimplest.exe | Bin 2271744 -> 0 bytes uFCoderSimplest_XE/uFrSimplest.identcache | Bin 149 -> 0 bytes uFCoderSimplest_XE/uFrSimplest.res | Bin 2040 -> 0 bytes uFCoderSimplest_XE/uFrSimplest.~dpr | 14 - uFCoderSimplest_XE/uFrSimplest_Icon.ico | Bin 766 -> 0 bytes uFr Simplest_2.1_DelphiXE/----uFCoder1x.dcu | Bin 2919 -> 0 bytes uFr Simplest_2.1_DelphiXE/----uFCoder1x.dll | Bin 128347 -> 0 bytes uFr Simplest_2.1_DelphiXE/----uFCoder1x.~pas | 109 -- uFr Simplest_2.1_DelphiXE/uFCoder-x86.dll | Bin 226304 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFCoder-x86_64.dll | Bin 193536 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFCoder.dcu | Bin 3132 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFCoder.pas | 109 -- .../uFCoder_coff-x86_64.lib | Bin 241948 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFCoder_coff.lib | Bin 244806 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFCoder_omf.lib | Bin 48640 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFSimplest.dcu | Bin 21229 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFSimplest.ddp | Bin 51 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFSimplest.dfm | 319 ----- uFr Simplest_2.1_DelphiXE/uFSimplest.pas | 500 ------- uFr Simplest_2.1_DelphiXE/uFSimplest.~ddp | Bin 51 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFSimplest.~dfm | 317 ----- uFr Simplest_2.1_DelphiXE/uFSimplest.~pas | 488 ------- uFr Simplest_2.1_DelphiXE/uFrSimplest.cfg | 38 - uFr Simplest_2.1_DelphiXE/uFrSimplest.dof | 136 -- uFr Simplest_2.1_DelphiXE/uFrSimplest.dpr | 14 - uFr Simplest_2.1_DelphiXE/uFrSimplest.dproj | 139 -- .../uFrSimplest.dproj.local | 8 - uFr Simplest_2.1_DelphiXE/uFrSimplest.exe | Bin 2288640 -> 0 bytes .../uFrSimplest.identcache | Bin 323 -> 0 bytes uFr Simplest_2.1_DelphiXE/uFrSimplest.res | Bin 3512 -> 0 bytes .../uFrSimplest_Icon.ico | Bin 2238 -> 0 bytes 458 files changed, 128046 deletions(-) delete mode 100644 uFCoderAdvance/BlockInSector.dcu delete mode 100644 uFCoderAdvance/BlockInSector.ddp delete mode 100644 uFCoderAdvance/BlockInSector.dfm delete mode 100644 uFCoderAdvance/BlockInSector.pas delete mode 100644 uFCoderAdvance/BlockInSector.~ddp delete mode 100644 uFCoderAdvance/BlockInSector.~dfm delete mode 100644 uFCoderAdvance/BlockInSector.~pas delete mode 100644 uFCoderAdvance/BlockReadWrite.dcu delete mode 100644 uFCoderAdvance/BlockReadWrite.ddp delete mode 100644 uFCoderAdvance/BlockReadWrite.dfm delete mode 100644 uFCoderAdvance/BlockReadWrite.pas delete mode 100644 uFCoderAdvance/BlockReadWrite.~ddp delete mode 100644 uFCoderAdvance/BlockReadWrite.~dfm delete mode 100644 uFCoderAdvance/BlockReadWrite.~pas delete mode 100644 uFCoderAdvance/Global.dcu delete mode 100644 uFCoderAdvance/Global.pas delete mode 100644 uFCoderAdvance/Global.~pas delete mode 100644 uFCoderAdvance/LinearFormatsCard.dcu delete mode 100644 uFCoderAdvance/LinearFormatsCard.ddp delete mode 100644 uFCoderAdvance/LinearFormatsCard.dfm delete mode 100644 uFCoderAdvance/LinearFormatsCard.pas delete mode 100644 uFCoderAdvance/LinearFormatsCard.~ddp delete mode 100644 uFCoderAdvance/LinearFormatsCard.~dfm delete mode 100644 uFCoderAdvance/LinearFormatsCard.~pas delete mode 100644 uFCoderAdvance/LinearReadWrite.dcu delete mode 100644 uFCoderAdvance/LinearReadWrite.ddp delete mode 100644 uFCoderAdvance/LinearReadWrite.dfm delete mode 100644 uFCoderAdvance/LinearReadWrite.pas delete mode 100644 uFCoderAdvance/LinearReadWrite.~ddp delete mode 100644 uFCoderAdvance/LinearReadWrite.~dfm delete mode 100644 uFCoderAdvance/LinearReadWrite.~pas delete mode 100644 uFCoderAdvance/SectorTrailerWrite.dcu delete mode 100644 uFCoderAdvance/SectorTrailerWrite.ddp delete mode 100644 uFCoderAdvance/SectorTrailerWrite.dfm delete mode 100644 uFCoderAdvance/SectorTrailerWrite.pas delete mode 100644 uFCoderAdvance/SectorTrailersWrite.dcu delete mode 100644 uFCoderAdvance/SectorTrailersWrite.ddp delete mode 100644 uFCoderAdvance/SectorTrailersWrite.dfm delete mode 100644 uFCoderAdvance/SectorTrailersWrite.pas delete mode 100644 uFCoderAdvance/SectorTrailersWrite.~ddp delete mode 100644 uFCoderAdvance/SectorTrailersWrite.~dfm delete mode 100644 uFCoderAdvance/SectorTrailersWrite.~pas delete mode 100644 uFCoderAdvance/ValueBlock.dcu delete mode 100644 uFCoderAdvance/ValueBlock.ddp delete mode 100644 uFCoderAdvance/ValueBlock.dfm delete mode 100644 uFCoderAdvance/ValueBlock.pas delete mode 100644 uFCoderAdvance/ValueBlock.~ddp delete mode 100644 uFCoderAdvance/ValueBlock.~dfm delete mode 100644 uFCoderAdvance/ValueBlock.~pas delete mode 100644 uFCoderAdvance/ValueBlockInSector.dcu delete mode 100644 uFCoderAdvance/ValueBlockInSector.ddp delete mode 100644 uFCoderAdvance/ValueBlockInSector.dfm delete mode 100644 uFCoderAdvance/ValueBlockInSector.pas delete mode 100644 uFCoderAdvance/ValueBlockInSector.~ddp delete mode 100644 uFCoderAdvance/ValueBlockInSector.~dfm delete mode 100644 uFCoderAdvance/ValueBlockInSector.~pas delete mode 100644 uFCoderAdvance/ValueBlockInSectorIncrDecr.dcu delete mode 100644 uFCoderAdvance/ValueBlockInSectorIncrDecr.ddp delete mode 100644 uFCoderAdvance/ValueBlockInSectorIncrDecr.dfm delete mode 100644 uFCoderAdvance/ValueBlockInSectorIncrDecr.pas delete mode 100644 uFCoderAdvance/ValueBlockInSectorIncrDecr.~ddp delete mode 100644 uFCoderAdvance/ValueBlockInSectorIncrDecr.~dfm delete mode 100644 uFCoderAdvance/ValueBlockInSectorIncrDecr.~pas delete mode 100644 uFCoderAdvance/ValueBlockIncDec.dcu delete mode 100644 uFCoderAdvance/ValueBlockIncDec.ddp delete mode 100644 uFCoderAdvance/ValueBlockIncDec.dfm delete mode 100644 uFCoderAdvance/ValueBlockIncDec.pas delete mode 100644 uFCoderAdvance/ValueBlockIncDec.~ddp delete mode 100644 uFCoderAdvance/ValueBlockIncDec.~dfm delete mode 100644 uFCoderAdvance/ValueBlockIncDec.~pas delete mode 100644 uFCoderAdvance/ViewAll.dcu delete mode 100644 uFCoderAdvance/ViewAll.ddp delete mode 100644 uFCoderAdvance/ViewAll.dfm delete mode 100644 uFCoderAdvance/ViewAll.pas delete mode 100644 uFCoderAdvance/ViewAll.~ddp delete mode 100644 uFCoderAdvance/ViewAll.~dfm delete mode 100644 uFCoderAdvance/ViewAll.~pas delete mode 100644 uFCoderAdvance/ftd2xx.dll delete mode 100644 uFCoderAdvance/uFAdvanced.dcu delete mode 100644 uFCoderAdvance/uFAdvanced.ddp delete mode 100644 uFCoderAdvance/uFAdvanced.dfm delete mode 100644 uFCoderAdvance/uFAdvanced.pas delete mode 100644 uFCoderAdvance/uFAdvanced.~ddp delete mode 100644 uFCoderAdvance/uFAdvanced.~dfm delete mode 100644 uFCoderAdvance/uFAdvanced.~pas delete mode 100644 uFCoderAdvance/uFCoder-x86.dll delete mode 100644 uFCoderAdvance/uFCoder.dcu delete mode 100644 uFCoderAdvance/uFCoder.pas delete mode 100644 uFCoderAdvance/uFCoder1x.dll delete mode 100644 uFCoderAdvance/uFCoder1x.pas delete mode 100644 uFCoderAdvance/uFrAdvanced.cfg delete mode 100644 uFCoderAdvance/uFrAdvanced.ddp delete mode 100644 uFCoderAdvance/uFrAdvanced.dfm delete mode 100644 uFCoderAdvance/uFrAdvanced.dof delete mode 100644 uFCoderAdvance/uFrAdvanced.dpr delete mode 100644 uFCoderAdvance/uFrAdvanced.exe delete mode 100644 uFCoderAdvance/uFrAdvanced.pas delete mode 100644 uFCoderAdvance/uFrAdvanced.res delete mode 100644 uFCoderAdvance/uFrAdvanced.~dpr delete mode 100644 uFCoderAdvance/ufCoder1x.dcu delete mode 100644 uFCoderAdvance_D7/BlockInSector.dcu delete mode 100644 uFCoderAdvance_D7/BlockInSector.ddp delete mode 100644 uFCoderAdvance_D7/BlockInSector.dfm delete mode 100644 uFCoderAdvance_D7/BlockInSector.pas delete mode 100644 uFCoderAdvance_D7/BlockInSector.~ddp delete mode 100644 uFCoderAdvance_D7/BlockInSector.~dfm delete mode 100644 uFCoderAdvance_D7/BlockInSector.~pas delete mode 100644 uFCoderAdvance_D7/BlockReadWrite.dcu delete mode 100644 uFCoderAdvance_D7/BlockReadWrite.ddp delete mode 100644 uFCoderAdvance_D7/BlockReadWrite.dfm delete mode 100644 uFCoderAdvance_D7/BlockReadWrite.pas delete mode 100644 uFCoderAdvance_D7/BlockReadWrite.~ddp delete mode 100644 uFCoderAdvance_D7/BlockReadWrite.~dfm delete mode 100644 uFCoderAdvance_D7/BlockReadWrite.~pas delete mode 100644 uFCoderAdvance_D7/Global.dcu delete mode 100644 uFCoderAdvance_D7/Global.pas delete mode 100644 uFCoderAdvance_D7/Global.~pas delete mode 100644 uFCoderAdvance_D7/LinearFormatsCard.dcu delete mode 100644 uFCoderAdvance_D7/LinearFormatsCard.ddp delete mode 100644 uFCoderAdvance_D7/LinearFormatsCard.dfm delete mode 100644 uFCoderAdvance_D7/LinearFormatsCard.pas delete mode 100644 uFCoderAdvance_D7/LinearFormatsCard.~ddp delete mode 100644 uFCoderAdvance_D7/LinearFormatsCard.~dfm delete mode 100644 uFCoderAdvance_D7/LinearFormatsCard.~pas delete mode 100644 uFCoderAdvance_D7/LinearReadWrite.dcu delete mode 100644 uFCoderAdvance_D7/LinearReadWrite.ddp delete mode 100644 uFCoderAdvance_D7/LinearReadWrite.dfm delete mode 100644 uFCoderAdvance_D7/LinearReadWrite.pas delete mode 100644 uFCoderAdvance_D7/LinearReadWrite.~ddp delete mode 100644 uFCoderAdvance_D7/LinearReadWrite.~dfm delete mode 100644 uFCoderAdvance_D7/LinearReadWrite.~pas delete mode 100644 uFCoderAdvance_D7/SectorTrailerWrite.dcu delete mode 100644 uFCoderAdvance_D7/SectorTrailerWrite.ddp delete mode 100644 uFCoderAdvance_D7/SectorTrailerWrite.dfm delete mode 100644 uFCoderAdvance_D7/SectorTrailerWrite.pas delete mode 100644 uFCoderAdvance_D7/SectorTrailersWrite.dcu delete mode 100644 uFCoderAdvance_D7/SectorTrailersWrite.ddp delete mode 100644 uFCoderAdvance_D7/SectorTrailersWrite.dfm delete mode 100644 uFCoderAdvance_D7/SectorTrailersWrite.pas delete mode 100644 uFCoderAdvance_D7/SectorTrailersWrite.~ddp delete mode 100644 uFCoderAdvance_D7/SectorTrailersWrite.~dfm delete mode 100644 uFCoderAdvance_D7/SectorTrailersWrite.~pas delete mode 100644 uFCoderAdvance_D7/ValueBlock.dcu delete mode 100644 uFCoderAdvance_D7/ValueBlock.ddp delete mode 100644 uFCoderAdvance_D7/ValueBlock.dfm delete mode 100644 uFCoderAdvance_D7/ValueBlock.pas delete mode 100644 uFCoderAdvance_D7/ValueBlock.~ddp delete mode 100644 uFCoderAdvance_D7/ValueBlock.~dfm delete mode 100644 uFCoderAdvance_D7/ValueBlock.~pas delete mode 100644 uFCoderAdvance_D7/ValueBlockInSector.dcu delete mode 100644 uFCoderAdvance_D7/ValueBlockInSector.ddp delete mode 100644 uFCoderAdvance_D7/ValueBlockInSector.dfm delete mode 100644 uFCoderAdvance_D7/ValueBlockInSector.pas delete mode 100644 uFCoderAdvance_D7/ValueBlockInSector.~ddp delete mode 100644 uFCoderAdvance_D7/ValueBlockInSector.~dfm delete mode 100644 uFCoderAdvance_D7/ValueBlockInSector.~pas delete mode 100644 uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.dcu delete mode 100644 uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.ddp delete mode 100644 uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.dfm delete mode 100644 uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.pas delete mode 100644 uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~ddp delete mode 100644 uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~dfm delete mode 100644 uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~pas delete mode 100644 uFCoderAdvance_D7/ValueBlockIncDec.dcu delete mode 100644 uFCoderAdvance_D7/ValueBlockIncDec.ddp delete mode 100644 uFCoderAdvance_D7/ValueBlockIncDec.dfm delete mode 100644 uFCoderAdvance_D7/ValueBlockIncDec.pas delete mode 100644 uFCoderAdvance_D7/ValueBlockIncDec.~ddp delete mode 100644 uFCoderAdvance_D7/ValueBlockIncDec.~dfm delete mode 100644 uFCoderAdvance_D7/ValueBlockIncDec.~pas delete mode 100644 uFCoderAdvance_D7/ViewAll.dcu delete mode 100644 uFCoderAdvance_D7/ViewAll.ddp delete mode 100644 uFCoderAdvance_D7/ViewAll.dfm delete mode 100644 uFCoderAdvance_D7/ViewAll.pas delete mode 100644 uFCoderAdvance_D7/ViewAll.~ddp delete mode 100644 uFCoderAdvance_D7/ViewAll.~dfm delete mode 100644 uFCoderAdvance_D7/ViewAll.~pas delete mode 100644 uFCoderAdvance_D7/uFAdvanced.dcu delete mode 100644 uFCoderAdvance_D7/uFAdvanced.ddp delete mode 100644 uFCoderAdvance_D7/uFAdvanced.dfm delete mode 100644 uFCoderAdvance_D7/uFAdvanced.pas delete mode 100644 uFCoderAdvance_D7/uFAdvanced.~ddp delete mode 100644 uFCoderAdvance_D7/uFAdvanced.~dfm delete mode 100644 uFCoderAdvance_D7/uFAdvanced.~pas delete mode 100644 uFCoderAdvance_D7/uFCoder-x86.dll delete mode 100644 uFCoderAdvance_D7/uFCoder.dcu delete mode 100644 uFCoderAdvance_D7/uFCoder.pas delete mode 100644 uFCoderAdvance_D7/uFCoder_coff.lib delete mode 100644 uFCoderAdvance_D7/uFCoder_omf.lib delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.cfg delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.ddp delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.dfm delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.dof delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.dpr delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.exe delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.pas delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.res delete mode 100644 uFCoderAdvance_D7/uFrAdvanced.~dpr delete mode 100644 uFCoderAdvance_XE/BlockInSector.dcu delete mode 100644 uFCoderAdvance_XE/BlockInSector.ddp delete mode 100644 uFCoderAdvance_XE/BlockInSector.dfm delete mode 100644 uFCoderAdvance_XE/BlockInSector.pas delete mode 100644 uFCoderAdvance_XE/BlockInSector.~ddp delete mode 100644 uFCoderAdvance_XE/BlockInSector.~dfm delete mode 100644 uFCoderAdvance_XE/BlockInSector.~pas delete mode 100644 uFCoderAdvance_XE/BlockReadWrite.dcu delete mode 100644 uFCoderAdvance_XE/BlockReadWrite.ddp delete mode 100644 uFCoderAdvance_XE/BlockReadWrite.dfm delete mode 100644 uFCoderAdvance_XE/BlockReadWrite.pas delete mode 100644 uFCoderAdvance_XE/BlockReadWrite.~ddp delete mode 100644 uFCoderAdvance_XE/BlockReadWrite.~dfm delete mode 100644 uFCoderAdvance_XE/BlockReadWrite.~pas delete mode 100644 uFCoderAdvance_XE/Global.dcu delete mode 100644 uFCoderAdvance_XE/Global.pas delete mode 100644 uFCoderAdvance_XE/Global.~pas delete mode 100644 uFCoderAdvance_XE/LinearFormatsCard.dcu delete mode 100644 uFCoderAdvance_XE/LinearFormatsCard.ddp delete mode 100644 uFCoderAdvance_XE/LinearFormatsCard.dfm delete mode 100644 uFCoderAdvance_XE/LinearFormatsCard.pas delete mode 100644 uFCoderAdvance_XE/LinearFormatsCard.~ddp delete mode 100644 uFCoderAdvance_XE/LinearFormatsCard.~dfm delete mode 100644 uFCoderAdvance_XE/LinearFormatsCard.~pas delete mode 100644 uFCoderAdvance_XE/LinearReadWrite.dcu delete mode 100644 uFCoderAdvance_XE/LinearReadWrite.ddp delete mode 100644 uFCoderAdvance_XE/LinearReadWrite.dfm delete mode 100644 uFCoderAdvance_XE/LinearReadWrite.pas delete mode 100644 uFCoderAdvance_XE/LinearReadWrite.~ddp delete mode 100644 uFCoderAdvance_XE/LinearReadWrite.~dfm delete mode 100644 uFCoderAdvance_XE/LinearReadWrite.~pas delete mode 100644 uFCoderAdvance_XE/SectorTrailerWrite.dcu delete mode 100644 uFCoderAdvance_XE/SectorTrailerWrite.ddp delete mode 100644 uFCoderAdvance_XE/SectorTrailerWrite.dfm delete mode 100644 uFCoderAdvance_XE/SectorTrailerWrite.pas delete mode 100644 uFCoderAdvance_XE/SectorTrailersWrite.dcu delete mode 100644 uFCoderAdvance_XE/SectorTrailersWrite.ddp delete mode 100644 uFCoderAdvance_XE/SectorTrailersWrite.dfm delete mode 100644 uFCoderAdvance_XE/SectorTrailersWrite.pas delete mode 100644 uFCoderAdvance_XE/SectorTrailersWrite.~ddp delete mode 100644 uFCoderAdvance_XE/SectorTrailersWrite.~dfm delete mode 100644 uFCoderAdvance_XE/SectorTrailersWrite.~pas delete mode 100644 uFCoderAdvance_XE/ValueBlock.dcu delete mode 100644 uFCoderAdvance_XE/ValueBlock.ddp delete mode 100644 uFCoderAdvance_XE/ValueBlock.dfm delete mode 100644 uFCoderAdvance_XE/ValueBlock.pas delete mode 100644 uFCoderAdvance_XE/ValueBlock.~ddp delete mode 100644 uFCoderAdvance_XE/ValueBlock.~dfm delete mode 100644 uFCoderAdvance_XE/ValueBlock.~pas delete mode 100644 uFCoderAdvance_XE/ValueBlockInSector.dcu delete mode 100644 uFCoderAdvance_XE/ValueBlockInSector.ddp delete mode 100644 uFCoderAdvance_XE/ValueBlockInSector.dfm delete mode 100644 uFCoderAdvance_XE/ValueBlockInSector.pas delete mode 100644 uFCoderAdvance_XE/ValueBlockInSector.~ddp delete mode 100644 uFCoderAdvance_XE/ValueBlockInSector.~dfm delete mode 100644 uFCoderAdvance_XE/ValueBlockInSector.~pas delete mode 100644 uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.dcu delete mode 100644 uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.ddp delete mode 100644 uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.dfm delete mode 100644 uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.pas delete mode 100644 uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~ddp delete mode 100644 uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~dfm delete mode 100644 uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~pas delete mode 100644 uFCoderAdvance_XE/ValueBlockIncDec.dcu delete mode 100644 uFCoderAdvance_XE/ValueBlockIncDec.ddp delete mode 100644 uFCoderAdvance_XE/ValueBlockIncDec.dfm delete mode 100644 uFCoderAdvance_XE/ValueBlockIncDec.pas delete mode 100644 uFCoderAdvance_XE/ValueBlockIncDec.~ddp delete mode 100644 uFCoderAdvance_XE/ValueBlockIncDec.~dfm delete mode 100644 uFCoderAdvance_XE/ValueBlockIncDec.~pas delete mode 100644 uFCoderAdvance_XE/ViewAll.dcu delete mode 100644 uFCoderAdvance_XE/ViewAll.ddp delete mode 100644 uFCoderAdvance_XE/ViewAll.dfm delete mode 100644 uFCoderAdvance_XE/ViewAll.pas delete mode 100644 uFCoderAdvance_XE/ViewAll.~ddp delete mode 100644 uFCoderAdvance_XE/ViewAll.~dfm delete mode 100644 uFCoderAdvance_XE/ViewAll.~pas delete mode 100644 uFCoderAdvance_XE/uFAdvanced.dcu delete mode 100644 uFCoderAdvance_XE/uFAdvanced.ddp delete mode 100644 uFCoderAdvance_XE/uFAdvanced.dfm delete mode 100644 uFCoderAdvance_XE/uFAdvanced.pas delete mode 100644 uFCoderAdvance_XE/uFAdvanced.~ddp delete mode 100644 uFCoderAdvance_XE/uFAdvanced.~dfm delete mode 100644 uFCoderAdvance_XE/uFAdvanced.~pas delete mode 100644 uFCoderAdvance_XE/uFCoder-x86.dll delete mode 100644 uFCoderAdvance_XE/uFCoder-x86_64.dll delete mode 100644 uFCoderAdvance_XE/uFCoder.dcu delete mode 100644 uFCoderAdvance_XE/uFCoder.pas delete mode 100644 uFCoderAdvance_XE/uFCoder1x.~pas delete mode 100644 uFCoderAdvance_XE/uFCoder_coff-x86_64.lib delete mode 100644 uFCoderAdvance_XE/uFCoder_coff.lib delete mode 100644 uFCoderAdvance_XE/uFCoder_omf.lib delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.cfg delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.ddp delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.dfm delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.dof delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.dpr delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.dproj delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.dproj.local delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.exe delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.identcache delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.pas delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.res delete mode 100644 uFCoderAdvance_XE/uFrAdvanced.~dpr delete mode 100644 uFCoderAdvance_XE/uFrAdvanced_Icon.ico delete mode 100644 uFCoderSimple/uFCoder-x86.dll delete mode 100644 uFCoderSimple/uFCoder.dcu delete mode 100644 uFCoderSimple/uFCoder.pas delete mode 100644 uFCoderSimple/uFCoder.~pas delete mode 100644 uFCoderSimple/uFCoder1x.dll delete mode 100644 uFCoderSimple/uFCoder1x.pas delete mode 100644 uFCoderSimple/uFRSimple.cfg delete mode 100644 uFCoderSimple/uFRSimple.dof delete mode 100644 uFCoderSimple/uFRSimple.dpr delete mode 100644 uFCoderSimple/uFRSimple.exe delete mode 100644 uFCoderSimple/uFRSimple.identcache delete mode 100644 uFCoderSimple/uFRSimple.res delete mode 100644 uFCoderSimple/uFRSimple.~dpr delete mode 100644 uFCoderSimple/uFRSimpleImplementation.dcu delete mode 100644 uFCoderSimple/uFRSimpleImplementation.ddp delete mode 100644 uFCoderSimple/uFRSimpleImplementation.dfm delete mode 100644 uFCoderSimple/uFRSimpleImplementation.pas delete mode 100644 uFCoderSimple/uFRSimple_Icon.ico delete mode 100644 uFCoderSimple/uFSimple.dcu delete mode 100644 uFCoderSimple/uFSimple.ddp delete mode 100644 uFCoderSimple/uFSimple.dfm delete mode 100644 uFCoderSimple/uFSimple.pas delete mode 100644 uFCoderSimple/uFSimple.~ddp delete mode 100644 uFCoderSimple/uFSimple.~dfm delete mode 100644 uFCoderSimple/uFSimple.~pas delete mode 100644 uFCoderSimple/ufCoder1x.dcu delete mode 100644 uFCoderSimple_D7/uFCoder-x86.dll delete mode 100644 uFCoderSimple_D7/uFCoder.dcu delete mode 100644 uFCoderSimple_D7/uFCoder.pas delete mode 100644 uFCoderSimple_D7/uFCoder.~pas delete mode 100644 uFCoderSimple_D7/uFCoder_coff.lib delete mode 100644 uFCoderSimple_D7/uFCoder_omf.lib delete mode 100644 uFCoderSimple_D7/uFRSimple.cfg delete mode 100644 uFCoderSimple_D7/uFRSimple.dof delete mode 100644 uFCoderSimple_D7/uFRSimple.dpr delete mode 100644 uFCoderSimple_D7/uFRSimple.exe delete mode 100644 uFCoderSimple_D7/uFRSimple.identcache delete mode 100644 uFCoderSimple_D7/uFRSimple.res delete mode 100644 uFCoderSimple_D7/uFRSimple.~dpr delete mode 100644 uFCoderSimple_D7/uFRSimple_Icon.ico delete mode 100644 uFCoderSimple_D7/uFSimple.dcu delete mode 100644 uFCoderSimple_D7/uFSimple.ddp delete mode 100644 uFCoderSimple_D7/uFSimple.dfm delete mode 100644 uFCoderSimple_D7/uFSimple.pas delete mode 100644 uFCoderSimple_D7/uFSimple.~ddp delete mode 100644 uFCoderSimple_D7/uFSimple.~dfm delete mode 100644 uFCoderSimple_D7/uFSimple.~pas delete mode 100644 uFCoderSimple_XE/uFCoder-x86.dll delete mode 100644 uFCoderSimple_XE/uFCoder-x86_64.dll delete mode 100644 uFCoderSimple_XE/uFCoder.dcu delete mode 100644 uFCoderSimple_XE/uFCoder.pas delete mode 100644 uFCoderSimple_XE/uFCoder_coff-x86_64.lib delete mode 100644 uFCoderSimple_XE/uFCoder_coff.lib delete mode 100644 uFCoderSimple_XE/uFCoder_omf.lib delete mode 100644 uFCoderSimple_XE/uFRSimple.cfg delete mode 100644 uFCoderSimple_XE/uFRSimple.dof delete mode 100644 uFCoderSimple_XE/uFRSimple.dpr delete mode 100644 uFCoderSimple_XE/uFRSimple.dproj delete mode 100644 uFCoderSimple_XE/uFRSimple.dproj.local delete mode 100644 uFCoderSimple_XE/uFRSimple.exe delete mode 100644 uFCoderSimple_XE/uFRSimple.identcache delete mode 100644 uFCoderSimple_XE/uFRSimple.res delete mode 100644 uFCoderSimple_XE/uFRSimple.~dpr delete mode 100644 uFCoderSimple_XE/uFRSimple_Icon.ico delete mode 100644 uFCoderSimple_XE/uFRSimple_Icon1.ico delete mode 100644 uFCoderSimple_XE/uFSimple.dcu delete mode 100644 uFCoderSimple_XE/uFSimple.ddp delete mode 100644 uFCoderSimple_XE/uFSimple.dfm delete mode 100644 uFCoderSimple_XE/uFSimple.pas delete mode 100644 uFCoderSimple_XE/uFSimple.~ddp delete mode 100644 uFCoderSimple_XE/uFSimple.~dfm delete mode 100644 uFCoderSimple_XE/uFSimple.~pas delete mode 100644 uFCoderSimplest/uFCoder-x86.dll delete mode 100644 uFCoderSimplest/uFCoder1x.dll delete mode 100644 uFCoderSimplest/uFCoder1x.pas delete mode 100644 uFCoderSimplest/uFSimplest.dcu delete mode 100644 uFCoderSimplest/uFSimplest.ddp delete mode 100644 uFCoderSimplest/uFSimplest.dfm delete mode 100644 uFCoderSimplest/uFSimplest.pas delete mode 100644 uFCoderSimplest/uFSimplest.~ddp delete mode 100644 uFCoderSimplest/uFSimplest.~dfm delete mode 100644 uFCoderSimplest/uFSimplest.~pas delete mode 100644 uFCoderSimplest/uFrSimplest.cfg delete mode 100644 uFCoderSimplest/uFrSimplest.dof delete mode 100644 uFCoderSimplest/uFrSimplest.dpr delete mode 100644 uFCoderSimplest/uFrSimplest.exe delete mode 100644 uFCoderSimplest/uFrSimplest.res delete mode 100644 uFCoderSimplest/uFrSimplest.~dpr delete mode 100644 uFCoderSimplest/ufCoder1x.dcu delete mode 100644 uFCoderSimplest_D7/uFCoder-x86.dll delete mode 100644 uFCoderSimplest_D7/uFCoder_coff.lib delete mode 100644 uFCoderSimplest_D7/uFCoder_omf.lib delete mode 100644 uFCoderSimplest_D7/uFSimplest.dcu delete mode 100644 uFCoderSimplest_D7/uFSimplest.ddp delete mode 100644 uFCoderSimplest_D7/uFSimplest.dfm delete mode 100644 uFCoderSimplest_D7/uFSimplest.pas delete mode 100644 uFCoderSimplest_D7/uFSimplest.~ddp delete mode 100644 uFCoderSimplest_D7/uFSimplest.~dfm delete mode 100644 uFCoderSimplest_D7/uFSimplest.~pas delete mode 100644 uFCoderSimplest_D7/uFrSimplest.cfg delete mode 100644 uFCoderSimplest_D7/uFrSimplest.dof delete mode 100644 uFCoderSimplest_D7/uFrSimplest.dpr delete mode 100644 uFCoderSimplest_D7/uFrSimplest.exe delete mode 100644 uFCoderSimplest_D7/uFrSimplest.res delete mode 100644 uFCoderSimplest_D7/uFrSimplest.~dpr delete mode 100644 uFCoderSimplest_XE/uFCoder-x86.dll delete mode 100644 uFCoderSimplest_XE/uFCoder-x86_64.dll delete mode 100644 uFCoderSimplest_XE/uFCoder.dcu delete mode 100644 uFCoderSimplest_XE/uFCoder.pas delete mode 100644 uFCoderSimplest_XE/uFCoder_coff-x86_64.lib delete mode 100644 uFCoderSimplest_XE/uFCoder_coff.lib delete mode 100644 uFCoderSimplest_XE/uFCoder_omf.lib delete mode 100644 uFCoderSimplest_XE/uFSimplest.dcu delete mode 100644 uFCoderSimplest_XE/uFSimplest.ddp delete mode 100644 uFCoderSimplest_XE/uFSimplest.dfm delete mode 100644 uFCoderSimplest_XE/uFSimplest.pas delete mode 100644 uFCoderSimplest_XE/uFSimplest.~ddp delete mode 100644 uFCoderSimplest_XE/uFSimplest.~dfm delete mode 100644 uFCoderSimplest_XE/uFSimplest.~pas delete mode 100644 uFCoderSimplest_XE/uFrSimplest.cfg delete mode 100644 uFCoderSimplest_XE/uFrSimplest.dof delete mode 100644 uFCoderSimplest_XE/uFrSimplest.dpr delete mode 100644 uFCoderSimplest_XE/uFrSimplest.dproj delete mode 100644 uFCoderSimplest_XE/uFrSimplest.dproj.local delete mode 100644 uFCoderSimplest_XE/uFrSimplest.exe delete mode 100644 uFCoderSimplest_XE/uFrSimplest.identcache delete mode 100644 uFCoderSimplest_XE/uFrSimplest.res delete mode 100644 uFCoderSimplest_XE/uFrSimplest.~dpr delete mode 100644 uFCoderSimplest_XE/uFrSimplest_Icon.ico delete mode 100644 uFr Simplest_2.1_DelphiXE/----uFCoder1x.dcu delete mode 100644 uFr Simplest_2.1_DelphiXE/----uFCoder1x.dll delete mode 100644 uFr Simplest_2.1_DelphiXE/----uFCoder1x.~pas delete mode 100644 uFr Simplest_2.1_DelphiXE/uFCoder-x86.dll delete mode 100644 uFr Simplest_2.1_DelphiXE/uFCoder-x86_64.dll delete mode 100644 uFr Simplest_2.1_DelphiXE/uFCoder.dcu delete mode 100644 uFr Simplest_2.1_DelphiXE/uFCoder.pas delete mode 100644 uFr Simplest_2.1_DelphiXE/uFCoder_coff-x86_64.lib delete mode 100644 uFr Simplest_2.1_DelphiXE/uFCoder_coff.lib delete mode 100644 uFr Simplest_2.1_DelphiXE/uFCoder_omf.lib delete mode 100644 uFr Simplest_2.1_DelphiXE/uFSimplest.dcu delete mode 100644 uFr Simplest_2.1_DelphiXE/uFSimplest.ddp delete mode 100644 uFr Simplest_2.1_DelphiXE/uFSimplest.dfm delete mode 100644 uFr Simplest_2.1_DelphiXE/uFSimplest.pas delete mode 100644 uFr Simplest_2.1_DelphiXE/uFSimplest.~ddp delete mode 100644 uFr Simplest_2.1_DelphiXE/uFSimplest.~dfm delete mode 100644 uFr Simplest_2.1_DelphiXE/uFSimplest.~pas delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.cfg delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.dof delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.dpr delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.dproj delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.dproj.local delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.exe delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.identcache delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest.res delete mode 100644 uFr Simplest_2.1_DelphiXE/uFrSimplest_Icon.ico diff --git a/uFCoderAdvance/BlockInSector.dcu b/uFCoderAdvance/BlockInSector.dcu deleted file mode 100644 index 03959705ecc62aad890463b347c4ffa637b72c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23835 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 Cp4LhL diff --git a/uFCoderAdvance/BlockInSector.ddp b/uFCoderAdvance/BlockInSector.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/BlockInSector.dfm b/uFCoderAdvance/BlockInSector.dfm deleted file mode 100644 index 2f80812..0000000 --- a/uFCoderAdvance/BlockInSector.dfm +++ /dev/null @@ -1,1021 +0,0 @@ -object frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite - Left = 516 - Top = 235 - Width = 529 - Height = 427 - Caption = 'BlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object stbBlockInSectorReadWrite: TStatusBar - Left = 0 - Top = 369 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockInSectorReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 312 - ActivePage = tabBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabBlockInSectorRead: TTabSheet - Caption = 'BlockInSector Read' - object pnlBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadData: TLabel - Left = 9 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBlockInSectorRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadData: TEdit - Left = 8 - Top = 108 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadClick - end - object txtBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM1: TLabel - Left = 10 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM1: TEdit - Left = 9 - Top = 109 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM1Click - end - object txtBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM2: TLabel - Left = 9 - Top = 96 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM2: TEdit - Left = 8 - Top = 114 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM2Click - end - object txtBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataPK: TLabel - Left = 10 - Top = 97 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataPK: TEdit - Left = 9 - Top = 115 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadPKClick - end - object txtBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabBlockInSectorWrite: TTabSheet - Caption = 'BlockInSector Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISWWriteData: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddress: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddress: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 148 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteData: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddress: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object brnBlockInSectorWrite: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = brnBlockInSectorWriteClick - end - object txtBISWBlockAddress: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISWWriteDataAKM1: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label5: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 193 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM1: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM1: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM1: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM1Click - end - object txtBISWBlockAddressAKM1: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISWWriteDataAKM2: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectoAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 193 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM2: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM2: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM2: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM2Click - end - object txtBISWBlockAddressAKM2: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddressPK: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressPK: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataPK: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressPK: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWritePK: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWritePKClick - end - object txtBISWBlockAddressPK: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance/BlockInSector.pas b/uFCoderAdvance/BlockInSector.pas deleted file mode 100644 index e489ba3..0000000 --- a/uFCoderAdvance/BlockInSector.pas +++ /dev/null @@ -1,624 +0,0 @@ -unit BlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder, StdCtrls, ExtCtrls, ComCtrls; - -type - TfrmBlockInSectorReadWrite = class(TForm) - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - lblHeader: TStaticText; - stbBlockInSectorReadWrite: TStatusBar; - pgBlockInSectorReadWrite: TPageControl; - tabBlockInSectorRead: TTabSheet; - pnlBlockInSectorRead: TPanel; - lblBISRSectorAddress: TLabel; - lblBISRReadData: TLabel; - lblBlockInSectorRead: TStaticText; - txtBISRSectorAddress: TEdit; - txtBISRReadData: TEdit; - btnBlockInSectorRead: TButton; - pnlBlockInSectorReadAKM1: TPanel; - lblBISRSectorAddressAKM1: TLabel; - lblBISRReadDataAKM1: TLabel; - lblBISRAKM1: TStaticText; - txtBISRSectorAddressAKM1: TEdit; - txtBISRReadDataAKM1: TEdit; - btnBlockInSectorReadAKM1: TButton; - pnlBlockInSectorReadAKM2: TPanel; - lblBISRSectorAddressAKM2: TLabel; - lblBISRReadDataAKM2: TLabel; - lblBRAKM2: TStaticText; - txtBISRSectorAddressAKM2: TEdit; - txtBISRReadDataAKM2: TEdit; - btnBlockInSectorReadAKM2: TButton; - pnlBlockReadPK: TPanel; - lblBISRSectorAddressPK: TLabel; - lblBISRReadDataPK: TLabel; - lblBRPK: TStaticText; - txtBISRSectorAddressPK: TEdit; - txtBISRReadDataPK: TEdit; - btnBlockInSectorReadPK: TButton; - tabBlockInSectorWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblBISWBlockWrite: TStaticText; - pnlBlockWriteAKM1: TPanel; - lblBISWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBISWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBISRBlockAddress: TLabel; - txtBISRBlockAddress: TEdit; - lblBISRBlockAddressAKM1: TLabel; - txtBISRBlockAddressAKM1: TEdit; - lblBISRBlockAddressAKM2: TLabel; - txtBISRBlockAddressAKM2: TEdit; - lblBISRBlockAddressPK: TLabel; - txtBISRBlockAddressPK: TEdit; - lblBISWWriteData: TLabel; - txtBISWWriteData: TEdit; - lblBISWSectorAddress: TLabel; - txtBISWSectorAddress: TEdit; - brnBlockInSectorWrite: TButton; - lblBISWBlockAddress: TLabel; - txtBISWBlockAddress: TEdit; - lblBISWWriteDataAKM1: TLabel; - txtBISWWriteDataAKM1: TEdit; - Label5: TLabel; - txtBISWSectorAddressAKM1: TEdit; - btnBlockInSectorWriteAKM1: TButton; - lblBISWBlockAddressAKM1: TLabel; - txtBISWBlockAddressAKM1: TEdit; - lblBISWWriteDataAKM2: TLabel; - txtBISWWriteDataAKM2: TEdit; - lblBISWSectoAddressAKM2: TLabel; - txtBISWSectorAddressAKM2: TEdit; - btnBlockInSectorWriteAKM2: TButton; - lblBISWBlockAddressAKM2: TLabel; - txtBISWBlockAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - txtBISWWriteDataPK: TEdit; - lblBISWSectorAddressPK: TLabel; - txtBISWSectorAddressPK: TEdit; - btnBlockInSectorWritePK: TButton; - lblBISWBlockAddressPK: TLabel; - txtBISWBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnBlockInSectorReadClick(Sender: TObject); - procedure btnBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnBlockInSectorReadPKClick(Sender: TObject); - procedure brnBlockInSectorWriteClick(Sender: TObject); - procedure btnBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnBlockInSectorWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmBlockInSectorReadWrite } - -procedure TfrmBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadClick(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddress.Text); - - iFResult:=BlockInSectorRead(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBISRReadData.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM1Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM1.Text); - - iFResult:=BlockInSectorRead_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM1.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM2Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM2.Text); - - iFResult:=BlockInSectorRead_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM2.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadPKClick(Sender: TObject); -var - pData, - pPKKEY :PByte; - baPKKey :array[0..5] of Byte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressPK.Text); - - iFResult:=BlockInSectorRead_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtBISRReadDataPK.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.brnBlockInSectorWriteClick(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddress.Text); - pData :=PByte(txtBISWWriteData.Text); - - iFResult:=BlockInSectorWrite(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM1.Text); - pData :=PByte(txtBISWWriteDataAKM1.Text); - - iFResult:=BlockInSectorWrite_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM2.Text); - pData :=PByte(txtBISWWriteDataAKM2.Text); - - iFResult:=BlockInSectorWrite_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - baPKKey :array[0..5] of Byte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bSectorAddress :=StrToInt(txtBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressPK.Text); - pData :=PByte(txtBISWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockInSectorWrite_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance/BlockInSector.~ddp b/uFCoderAdvance/BlockInSector.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/BlockInSector.~dfm b/uFCoderAdvance/BlockInSector.~dfm deleted file mode 100644 index 4e44f9b..0000000 --- a/uFCoderAdvance/BlockInSector.~dfm +++ /dev/null @@ -1,1021 +0,0 @@ -object frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite - Left = 516 - Top = 235 - Width = 529 - Height = 427 - Caption = 'BlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object stbBlockInSectorReadWrite: TStatusBar - Left = 0 - Top = 370 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockInSectorReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 313 - ActivePage = tabBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabBlockInSectorRead: TTabSheet - Caption = 'BlockInSector Read' - object pnlBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadData: TLabel - Left = 9 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBlockInSectorRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadData: TEdit - Left = 8 - Top = 108 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadClick - end - object txtBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM1: TLabel - Left = 10 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM1: TEdit - Left = 9 - Top = 109 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM1Click - end - object txtBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM2: TLabel - Left = 9 - Top = 96 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM2: TEdit - Left = 8 - Top = 114 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM2Click - end - object txtBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataPK: TLabel - Left = 10 - Top = 97 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataPK: TEdit - Left = 9 - Top = 115 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadPKClick - end - object txtBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabBlockInSectorWrite: TTabSheet - Caption = 'BlockInSector Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISWWriteData: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddress: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddress: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteData: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddress: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object brnBlockInSectorWrite: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = brnBlockInSectorWriteClick - end - object txtBISWBlockAddress: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISWWriteDataAKM1: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label5: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM1: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM1: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM1: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM1Click - end - object txtBISWBlockAddressAKM1: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISWWriteDataAKM2: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectoAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM2: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM2: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM2: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM2Click - end - object txtBISWBlockAddressAKM2: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddressPK: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressPK: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataPK: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressPK: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWritePK: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWritePKClick - end - object txtBISWBlockAddressPK: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance/BlockInSector.~pas b/uFCoderAdvance/BlockInSector.~pas deleted file mode 100644 index 4c1b046..0000000 --- a/uFCoderAdvance/BlockInSector.~pas +++ /dev/null @@ -1,624 +0,0 @@ -unit BlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder1x, StdCtrls, ExtCtrls, ComCtrls; - -type - TfrmBlockInSectorReadWrite = class(TForm) - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - lblHeader: TStaticText; - stbBlockInSectorReadWrite: TStatusBar; - pgBlockInSectorReadWrite: TPageControl; - tabBlockInSectorRead: TTabSheet; - pnlBlockInSectorRead: TPanel; - lblBISRSectorAddress: TLabel; - lblBISRReadData: TLabel; - lblBlockInSectorRead: TStaticText; - txtBISRSectorAddress: TEdit; - txtBISRReadData: TEdit; - btnBlockInSectorRead: TButton; - pnlBlockInSectorReadAKM1: TPanel; - lblBISRSectorAddressAKM1: TLabel; - lblBISRReadDataAKM1: TLabel; - lblBISRAKM1: TStaticText; - txtBISRSectorAddressAKM1: TEdit; - txtBISRReadDataAKM1: TEdit; - btnBlockInSectorReadAKM1: TButton; - pnlBlockInSectorReadAKM2: TPanel; - lblBISRSectorAddressAKM2: TLabel; - lblBISRReadDataAKM2: TLabel; - lblBRAKM2: TStaticText; - txtBISRSectorAddressAKM2: TEdit; - txtBISRReadDataAKM2: TEdit; - btnBlockInSectorReadAKM2: TButton; - pnlBlockReadPK: TPanel; - lblBISRSectorAddressPK: TLabel; - lblBISRReadDataPK: TLabel; - lblBRPK: TStaticText; - txtBISRSectorAddressPK: TEdit; - txtBISRReadDataPK: TEdit; - btnBlockInSectorReadPK: TButton; - tabBlockInSectorWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblBISWBlockWrite: TStaticText; - pnlBlockWriteAKM1: TPanel; - lblBISWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBISWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBISRBlockAddress: TLabel; - txtBISRBlockAddress: TEdit; - lblBISRBlockAddressAKM1: TLabel; - txtBISRBlockAddressAKM1: TEdit; - lblBISRBlockAddressAKM2: TLabel; - txtBISRBlockAddressAKM2: TEdit; - lblBISRBlockAddressPK: TLabel; - txtBISRBlockAddressPK: TEdit; - lblBISWWriteData: TLabel; - txtBISWWriteData: TEdit; - lblBISWSectorAddress: TLabel; - txtBISWSectorAddress: TEdit; - brnBlockInSectorWrite: TButton; - lblBISWBlockAddress: TLabel; - txtBISWBlockAddress: TEdit; - lblBISWWriteDataAKM1: TLabel; - txtBISWWriteDataAKM1: TEdit; - Label5: TLabel; - txtBISWSectorAddressAKM1: TEdit; - btnBlockInSectorWriteAKM1: TButton; - lblBISWBlockAddressAKM1: TLabel; - txtBISWBlockAddressAKM1: TEdit; - lblBISWWriteDataAKM2: TLabel; - txtBISWWriteDataAKM2: TEdit; - lblBISWSectoAddressAKM2: TLabel; - txtBISWSectorAddressAKM2: TEdit; - btnBlockInSectorWriteAKM2: TButton; - lblBISWBlockAddressAKM2: TLabel; - txtBISWBlockAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - txtBISWWriteDataPK: TEdit; - lblBISWSectorAddressPK: TLabel; - txtBISWSectorAddressPK: TEdit; - btnBlockInSectorWritePK: TButton; - lblBISWBlockAddressPK: TLabel; - txtBISWBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnBlockInSectorReadClick(Sender: TObject); - procedure btnBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnBlockInSectorReadPKClick(Sender: TObject); - procedure brnBlockInSectorWriteClick(Sender: TObject); - procedure btnBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnBlockInSectorWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmBlockInSectorReadWrite } - -procedure TfrmBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadClick(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddress.Text); - - iFResult:=BlockInSectorRead(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBISRReadData.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM1Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM1.Text); - - iFResult:=BlockInSectorRead_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM1.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM2Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM2.Text); - - iFResult:=BlockInSectorRead_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM2.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadPKClick(Sender: TObject); -var - pData, - pPKKEY :PByte; - baPKKey :array[0..5] of Byte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressPK.Text); - - iFResult:=BlockInSectorRead_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtBISRReadDataPK.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.brnBlockInSectorWriteClick(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddress.Text); - pData :=PByte(txtBISWWriteData.Text); - - iFResult:=BlockInSectorWrite(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM1.Text); - pData :=PByte(txtBISWWriteDataAKM1.Text); - - iFResult:=BlockInSectorWrite_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM2.Text); - pData :=PByte(txtBISWWriteDataAKM2.Text); - - iFResult:=BlockInSectorWrite_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - baPKKey :array[0..5] of Byte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bSectorAddress :=StrToInt(txtBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressPK.Text); - pData :=PByte(txtBISWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockInSectorWrite_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance/BlockReadWrite.dcu b/uFCoderAdvance/BlockReadWrite.dcu deleted file mode 100644 index b5dc7286ddd0877401d61d8ebc2dec11f6858fd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22935 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 diff --git a/uFCoderAdvance/BlockReadWrite.ddp b/uFCoderAdvance/BlockReadWrite.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/BlockReadWrite.dfm b/uFCoderAdvance/BlockReadWrite.dfm deleted file mode 100644 index 949b5d6..0000000 --- a/uFCoderAdvance/BlockReadWrite.dfm +++ /dev/null @@ -1,893 +0,0 @@ -object frmBlockReadWrite: TfrmBlockReadWrite - Left = 310 - Top = 193 - Width = 540 - Height = 420 - Caption = 'BlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 524 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Block Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 524 - Height = 30 - Align = alTop - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbBlockReadWrite: TStatusBar - Left = 0 - Top = 362 - Width = 524 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 524 - Height = 305 - ActivePage = tabBlockRead - Align = alClient - TabOrder = 3 - object tabBlockRead: TTabSheet - Caption = 'BlockRead' - object pnlBlockRead: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBRBlockAddress: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblReadData: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadData: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockRead: TButton - Left = 152 - Top = 30 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadClick - end - object chkBRHex: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexClick - end - end - object pnlBlockReadAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBRBlockAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM1: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM1: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM1: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM1Click - end - object chkBRHexAKM1: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM1Click - end - end - object pnlBlockReadAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBRBlockAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM2: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM2: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM2: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM2Click - end - object chkBRHexAKM2: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM2Click - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBRBlockAddressPK: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataPK: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataPK: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadPK: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadPKClick - end - object chkBRHexPK: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexPKClick - end - end - end - object tabBlockWrite: TTabSheet - Caption = 'BlockWrite' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBWBlockAddress: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteData: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 82 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddress: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWrite: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteClick - end - object txtBWWriteData: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHex: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBWBlockAddressAKM1: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM1: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWiteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM1: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWriteAKM1: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteAKM1Click - end - object txtBWWriteDataAKM1: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM1: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBWBlockAddressAKM2: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM2: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM2: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBWBlockWriteAKM2: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBWBlockWriteAKM2Click - end - object txtBWWriteDataAKM2: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM2: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBWBlockAddressPK: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataPK: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressPK: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWritePK: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWritePKClick - end - object txtBWWriteDataPK: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexPK: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - end - end -end diff --git a/uFCoderAdvance/BlockReadWrite.pas b/uFCoderAdvance/BlockReadWrite.pas deleted file mode 100644 index cf13a1f..0000000 --- a/uFCoderAdvance/BlockReadWrite.pas +++ /dev/null @@ -1,675 +0,0 @@ -unit BlockReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder, StdCtrls, ExtCtrls, ComCtrls; - - const - ARRAY_LENGTH=16; -type - TbaReadData=array[0..ARRAY_LENGTH] of byte; - PbaReadData=^TbaReadData; -type - TfrmBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbBlockReadWrite: TStatusBar; - pgBlockReadWrite: TPageControl; - tabBlockRead: TTabSheet; - tabBlockWrite: TTabSheet; - pnlBlockRead: TPanel; - pnlBlockReadAKM1: TPanel; - pnlBlockReadAKM2: TPanel; - pnlBlockReadPK: TPanel; - lblBlockRead: TStaticText; - lblBRAKM1: TStaticText; - lblBRAKM2: TStaticText; - lblBRPK: TStaticText; - lblBRBlockAddress: TLabel; - txtBRBlockAddress: TEdit; - txtBRReadData: TEdit; - lblReadData: TLabel; - btnBlockRead: TButton; - lblBRBlockAddressAKM1: TLabel; - txtBRBlockAddressAKM1: TEdit; - txtBRReadDataAKM1: TEdit; - lblBRReadDataAKM1: TLabel; - btnBlockReadAKM1: TButton; - lblBRBlockAddressAKM2: TLabel; - txtBRBlockAddressAKM2: TEdit; - txtBRReadDataAKM2: TEdit; - lblBRReadDataAKM2: TLabel; - btnBlockReadAKM2: TButton; - lblBRBlockAddressPK: TLabel; - txtBRBlockAddressPK: TEdit; - txtBRReadDataPK: TEdit; - lblBRReadDataPK: TLabel; - btnBlockReadPK: TButton; - pnlBlockWrite: TPanel; - lblBWBlockAddress: TLabel; - lblBWBlockRead: TStaticText; - txtBWBlockAddress: TEdit; - btnBlockWrite: TButton; - pnlBlockWriteAKM1: TPanel; - lblBWBlockWiteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBWWriteData: TLabel; - txtBWWriteData: TEdit; - lblBWBlockAddressAKM1: TLabel; - txtBWBlockAddressAKM1: TEdit; - btnBlockWriteAKM1: TButton; - lblBWWriteDataAKM1: TLabel; - txtBWWriteDataAKM1: TEdit; - lblBWBlockAddressAKM2: TLabel; - txtBWBlockAddressAKM2: TEdit; - btnBWBlockWriteAKM2: TButton; - lblBWWriteDataAKM2: TLabel; - txtBWWriteDataAKM2: TEdit; - lblBWBlockAddressPK: TLabel; - txtBWBlockAddressPK: TEdit; - btnBlockWritePK: TButton; - lblBWWriteDataPK: TLabel; - txtBWWriteDataPK: TEdit; - chkBRHex: TCheckBox; - chkBRHexAKM1: TCheckBox; - chkBRHexAKM2: TCheckBox; - chkBRHexPK: TCheckBox; - chkBWHex: TCheckBox; - chkBWHexAKM1: TCheckBox; - chkBWHexAKM2: TCheckBox; - chkBWHexPK: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure btnBlockReadClick(Sender: TObject); - procedure btnBlockReadAKM1Click(Sender: TObject); - procedure btnBlockReadAKM2Click(Sender: TObject); - procedure btnBlockReadPKClick(Sender: TObject); - procedure btnBlockWriteClick(Sender: TObject); - procedure btnBlockWriteAKM1Click(Sender: TObject); - procedure btnBWBlockWriteAKM2Click(Sender: TObject); - procedure btnBlockWritePKClick(Sender: TObject); - - procedure chkBRHexClick(Sender: TObject); - procedure chkBRHexAKM1Click(Sender: TObject); - procedure chkBRHexAKM2Click(Sender: TObject); - procedure chkBRHexPKClick(Sender: TObject); - private - PBufferData:PByte; - caReadData :array[0..ARRAY_LENGTH] of char; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - function HexConvert(sTextBoxValue:String):TbaReadData; - function ConvertToHex(chkBox: Boolean): string; - public - { Public declarations } - end; - -var - frmBlockReadWrite: TfrmBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmBlockReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockReadWrite.btnBlockReadClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBRBlockAddress.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtBRReadData.Text:=ConvertToHex(chkBRHex.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM1.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM1(pData,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBRReadDataAKM1.Text:=ConvertToHex(chkBRHexAKM1.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM2.SetFocus(); - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM2.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM2(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtBRReadDataAKM2.Text:=ConvertToHex(chkBRHexAKM2.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockReadPKClick(Sender: TObject); -var - pPKKey :PByte; - pData :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; -begin - try - if Trim(txtBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bBlockAddress :=StrToInt(txtBRBlockAddressPK.Text); - pData :=PByte(@caReadData); - pPKKey :=@baPKKey; - - iFResult:=BlockRead_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtBRReadDataPK.Text:=ConvertToHex(chkBRHexPK.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress, - bKeyIndex :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBWBlockAddress.Text); - - if chkBWHex.Checked then - begin - baBufferData :=HexConvert(txtBWWriteData.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM1.Text); - - if chkBWHexAKM1.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM1.Text); - pData :=PByte(@baBufferData); - end - else - pData:=PByte(txtBWWriteDataAKM1.Text); - - iFResult:=BlockWrite_AKM1(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBWBlockWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM2.Text); - - if chkBWHexAKM2.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM2.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite_AKM2(PData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - if chkBWHexPK.Checked then - begin - baBufferData:=HexConvert(txtBWWriteDataPK.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockWrite_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -function TfrmBlockReadWrite.HexConvert(sTextBoxValue: String):TbaReadData; -var - bCount:byte; - bLength:byte; - bHexCounter:byte; - sTextBuffer:String; - bArrayHex:array[0..ARRAY_LENGTH] of byte; - -begin - bCount:=1; - bHexCounter:=0; - bLength:= Length(sTextBoxValue); - try - while bCount;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/BlockReadWrite.~dfm b/uFCoderAdvance/BlockReadWrite.~dfm deleted file mode 100644 index e351235..0000000 --- a/uFCoderAdvance/BlockReadWrite.~dfm +++ /dev/null @@ -1,893 +0,0 @@ -object frmBlockReadWrite: TfrmBlockReadWrite - Left = 310 - Top = 193 - Width = 540 - Height = 420 - Caption = 'BlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 524 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Block Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 524 - Height = 30 - Align = alTop - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbBlockReadWrite: TStatusBar - Left = 0 - Top = 363 - Width = 524 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 524 - Height = 306 - ActivePage = tabBlockRead - Align = alClient - TabOrder = 3 - object tabBlockRead: TTabSheet - Caption = 'BlockRead' - object pnlBlockRead: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBRBlockAddress: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblReadData: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadData: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockRead: TButton - Left = 152 - Top = 30 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadClick - end - object chkBRHex: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexClick - end - end - object pnlBlockReadAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBRBlockAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM1: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM1: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM1: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM1Click - end - object chkBRHexAKM1: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM1Click - end - end - object pnlBlockReadAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBRBlockAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM2: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM2: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM2: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM2Click - end - object chkBRHexAKM2: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM2Click - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBRBlockAddressPK: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataPK: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataPK: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadPK: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadPKClick - end - object chkBRHexPK: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexPKClick - end - end - end - object tabBlockWrite: TTabSheet - Caption = 'BlockWrite' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBWBlockAddress: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteData: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 82 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddress: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWrite: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteClick - end - object txtBWWriteData: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHex: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBWBlockAddressAKM1: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM1: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWiteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM1: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWriteAKM1: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteAKM1Click - end - object txtBWWriteDataAKM1: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM1: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBWBlockAddressAKM2: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM2: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM2: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBWBlockWriteAKM2: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBWBlockWriteAKM2Click - end - object txtBWWriteDataAKM2: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM2: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBWBlockAddressPK: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataPK: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressPK: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWritePK: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWritePKClick - end - object txtBWWriteDataPK: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexPK: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - end - end -end diff --git a/uFCoderAdvance/BlockReadWrite.~pas b/uFCoderAdvance/BlockReadWrite.~pas deleted file mode 100644 index 3efeba8..0000000 --- a/uFCoderAdvance/BlockReadWrite.~pas +++ /dev/null @@ -1,675 +0,0 @@ -unit BlockReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, StdCtrls, ExtCtrls, ComCtrls; - - const - ARRAY_LENGTH=16; -type - TbaReadData=array[0..ARRAY_LENGTH] of byte; - PbaReadData=^TbaReadData; -type - TfrmBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbBlockReadWrite: TStatusBar; - pgBlockReadWrite: TPageControl; - tabBlockRead: TTabSheet; - tabBlockWrite: TTabSheet; - pnlBlockRead: TPanel; - pnlBlockReadAKM1: TPanel; - pnlBlockReadAKM2: TPanel; - pnlBlockReadPK: TPanel; - lblBlockRead: TStaticText; - lblBRAKM1: TStaticText; - lblBRAKM2: TStaticText; - lblBRPK: TStaticText; - lblBRBlockAddress: TLabel; - txtBRBlockAddress: TEdit; - txtBRReadData: TEdit; - lblReadData: TLabel; - btnBlockRead: TButton; - lblBRBlockAddressAKM1: TLabel; - txtBRBlockAddressAKM1: TEdit; - txtBRReadDataAKM1: TEdit; - lblBRReadDataAKM1: TLabel; - btnBlockReadAKM1: TButton; - lblBRBlockAddressAKM2: TLabel; - txtBRBlockAddressAKM2: TEdit; - txtBRReadDataAKM2: TEdit; - lblBRReadDataAKM2: TLabel; - btnBlockReadAKM2: TButton; - lblBRBlockAddressPK: TLabel; - txtBRBlockAddressPK: TEdit; - txtBRReadDataPK: TEdit; - lblBRReadDataPK: TLabel; - btnBlockReadPK: TButton; - pnlBlockWrite: TPanel; - lblBWBlockAddress: TLabel; - lblBWBlockRead: TStaticText; - txtBWBlockAddress: TEdit; - btnBlockWrite: TButton; - pnlBlockWriteAKM1: TPanel; - lblBWBlockWiteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBWWriteData: TLabel; - txtBWWriteData: TEdit; - lblBWBlockAddressAKM1: TLabel; - txtBWBlockAddressAKM1: TEdit; - btnBlockWriteAKM1: TButton; - lblBWWriteDataAKM1: TLabel; - txtBWWriteDataAKM1: TEdit; - lblBWBlockAddressAKM2: TLabel; - txtBWBlockAddressAKM2: TEdit; - btnBWBlockWriteAKM2: TButton; - lblBWWriteDataAKM2: TLabel; - txtBWWriteDataAKM2: TEdit; - lblBWBlockAddressPK: TLabel; - txtBWBlockAddressPK: TEdit; - btnBlockWritePK: TButton; - lblBWWriteDataPK: TLabel; - txtBWWriteDataPK: TEdit; - chkBRHex: TCheckBox; - chkBRHexAKM1: TCheckBox; - chkBRHexAKM2: TCheckBox; - chkBRHexPK: TCheckBox; - chkBWHex: TCheckBox; - chkBWHexAKM1: TCheckBox; - chkBWHexAKM2: TCheckBox; - chkBWHexPK: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure btnBlockReadClick(Sender: TObject); - procedure btnBlockReadAKM1Click(Sender: TObject); - procedure btnBlockReadAKM2Click(Sender: TObject); - procedure btnBlockReadPKClick(Sender: TObject); - procedure btnBlockWriteClick(Sender: TObject); - procedure btnBlockWriteAKM1Click(Sender: TObject); - procedure btnBWBlockWriteAKM2Click(Sender: TObject); - procedure btnBlockWritePKClick(Sender: TObject); - - procedure chkBRHexClick(Sender: TObject); - procedure chkBRHexAKM1Click(Sender: TObject); - procedure chkBRHexAKM2Click(Sender: TObject); - procedure chkBRHexPKClick(Sender: TObject); - private - PBufferData:PByte; - caReadData :array[0..ARRAY_LENGTH] of char; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - function HexConvert(sTextBoxValue:String):TbaReadData; - function ConvertToHex(chkBox: Boolean): string; - public - { Public declarations } - end; - -var - frmBlockReadWrite: TfrmBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmBlockReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockReadWrite.btnBlockReadClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBRBlockAddress.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtBRReadData.Text:=ConvertToHex(chkBRHex.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM1.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM1(pData,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBRReadDataAKM1.Text:=ConvertToHex(chkBRHexAKM1.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM2.SetFocus(); - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM2.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM2(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtBRReadDataAKM2.Text:=ConvertToHex(chkBRHexAKM2.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockReadPKClick(Sender: TObject); -var - pPKKey :PByte; - pData :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; -begin - try - if Trim(txtBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bBlockAddress :=StrToInt(txtBRBlockAddressPK.Text); - pData :=PByte(@caReadData); - pPKKey :=@baPKKey; - - iFResult:=BlockRead_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtBRReadDataPK.Text:=ConvertToHex(chkBRHexPK.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress, - bKeyIndex :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBWBlockAddress.Text); - - if chkBWHex.Checked then - begin - baBufferData :=HexConvert(txtBWWriteData.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM1.Text); - - if chkBWHexAKM1.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM1.Text); - pData :=PByte(@baBufferData); - end - else - pData:=PByte(txtBWWriteDataAKM1.Text); - - iFResult:=BlockWrite_AKM1(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBWBlockWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM2.Text); - - if chkBWHexAKM2.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM2.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite_AKM2(PData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - if chkBWHexPK.Checked then - begin - baBufferData:=HexConvert(txtBWWriteDataPK.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockWrite_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -function TfrmBlockReadWrite.HexConvert(sTextBoxValue: String):TbaReadData; -var - bCount:byte; - bLength:byte; - bHexCounter:byte; - sTextBuffer:String; - bArrayHex:array[0..ARRAY_LENGTH] of byte; - -begin - bCount:=1; - bHexCounter:=0; - bLength:= Length(sTextBoxValue); - try - while bCount&6ZEHvFEOVE; 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 X+om}}j!hpYzngv&bHwPRmht=#xLaxY diff --git a/uFCoderAdvance/Global.pas b/uFCoderAdvance/Global.pas deleted file mode 100644 index a5cefc1..0000000 --- a/uFCoderAdvance/Global.pas +++ /dev/null @@ -1,263 +0,0 @@ -unit Global; -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus, ComCtrls, StdCtrls, ExtCtrls,uFCoder; - - - procedure Errors_Code; - procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); - procedure ShowForm(the_form:TForm;pnlContainer:TPanel); - procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; - key_parent: TPanel;key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent; - OnKey_Exit:TNotifyEvent); - - procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); - procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); - procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); - procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); - procedure OnPK_KEY_Exit(Sender:TObject); - function AuthMode(RadioButton:TRadioButton):Byte; - function MaxBlocks(): Integer; - - const - FERROR_LIGHT = 2; - FERROR_SOUND = 0; //2 - FRES_OK_LIGHT = 4; - FRES_OK_SOUND = 0; //4 - KEY_INDEX = 0; - MAX_KEY_INDEX = 5; - - CONVERT_ERROR ='You must enter a number between 0 and 255 or 0 and FF hexadecimal !'; - APPROPRIATE_FORMAT ='You must enter a number between 0 and 255 !'; - MEMORY_FILL =0; - - // sectors and blocks - MAX_SECTORS_1k = 16; - MAX_SECTORS_4k = 40; - - // max page for NTAG and MIFARE ULTRALIGHT - MAX_PAGE_NTAG203 = 39; - MAX_PAGE_ULTRALIGHT = 15; - MAX_PAGE_ULTRALIGHT_C = 39; - -var - ERROR_CODE:array[0..200] of string; - - - -implementation -uses - uFAdvanced; - - - -function AuthMode(RadioButton:TRadioButton):Byte; -begin - if RadioButton.Checked then - Result:=MIFARE_AUTHENT1A - else - Result:=MIFARE_AUTHENT1B; -end; - - -procedure ShowForm(the_form:TForm;pnlContainer:TPanel); -begin - with the_form do begin - the_form.BorderStyle:=bsNone; - the_form.Align :=alClient; - the_form.Parent :=pnlContainer; - the_form.Show; - end; -end; -procedure Errors_Code; -begin - ERROR_CODE[$00]:='DL_OK '; - ERROR_CODE[$01]:='COMMUNICATION_ERROR '; - ERROR_CODE[$02]:='CHKSUM_ERROR '; - ERROR_CODE[$03]:='READING_ERROR '; - ERROR_CODE[$04]:='WRITING_ERROR '; - ERROR_CODE[$05]:='BUFFER_OVERFLOW '; - ERROR_CODE[$06]:='MAX_ADDRESS_EXCEEDED '; - ERROR_CODE[$07]:='MAX_KEY_INDEX_EXCEEDED '; - ERROR_CODE[$08]:='NO_CARD '; - ERROR_CODE[$09]:='COMMAND_NOT_SUPPORTED '; - ERROR_CODE[$0A]:='FORBIDEN_DIRECT_WRITE_IN_SECTOR_TRAILER '; - ERROR_CODE[$0B]:='ADDRESSED_BLOCK_IS_NOT_SECTOR_TRAILER '; - ERROR_CODE[$0C]:='WRONG_ADDRESS_MODE '; - ERROR_CODE[$0D]:='WRONG_ACCESS_BITS_VALUES '; - ERROR_CODE[$0E]:='AUTH_ERROR '; - ERROR_CODE[$0F]:='PARAMETERS_ERROR '; - ERROR_CODE[$10]:='MAX_SIZE_EXCEEDED '; - ERROR_CODE[$11]:='UNSUPPORTED_CARD_TYPE '; - - ERROR_CODE[$50]:='COMMUNICATION_BREAK '; - ERROR_CODE[$51]:='NO_MEMORY_ERROR '; - ERROR_CODE[$52]:='CAN_NOT_OPEN_READER '; - ERROR_CODE[$53]:='READER_NOT_SUPPORTED '; - ERROR_CODE[$54]:='READER_OPENING_ERROR '; - ERROR_CODE[$55]:='READER_PORT_NOT_OPENED '; - ERROR_CODE[$56]:='CANT_CLOSE_READER_PORT '; - - ERROR_CODE[$70]:='WRITE_VERIFICATION_ERROR '; - ERROR_CODE[$71]:='BUFFER_SIZE_EXCEEDED '; - ERROR_CODE[$72]:='VALUE_BLOCK_INVALID '; - ERROR_CODE[$73]:='VALUE_BLOCK_ADDR_INVALID '; - ERROR_CODE[$74]:='VALUE_BLOCK_MANIPULATION_ERROR '; - ERROR_CODE[$75]:='WRONG_UI_MODE'; - ERROR_CODE[$76]:='KEYS_LOCKED'; - ERROR_CODE[$77]:='KEYS_UNLOCKED'; - ERROR_CODE[$78]:='WRONG_PASSWORD'; - ERROR_CODE[$79]:='CAN_NOT_LOCK_DEVICE'; - ERROR_CODE[$7A]:='CAN_NOT_UNLOCK_DEVICE'; - ERROR_CODE[$7B]:='DEVICE_EEPROM_BUSY'; - ERROR_CODE[$7C]:='RTC_SET_ERROR'; - - ERROR_CODE[$A0]:='FT_STATUS_ERROR_1'; - ERROR_CODE[$A1]:='FT_STATUS_ERROR_2'; - ERROR_CODE[$A2]:='FT_STATUS_ERROR_3'; - ERROR_CODE[$A3]:='FT_STATUS_ERROR_4'; - ERROR_CODE[$A4]:='FT_STATUS_ERROR_5'; - ERROR_CODE[$A5]:='FT_STATUS_ERROR_6'; - ERROR_CODE[$A6]:='FT_STATUS_ERROR_7'; - ERROR_CODE[$A7]:='FT_STATUS_ERROR_8'; - ERROR_CODE[$A8]:='FT_STATUS_ERROR_9'; -end; - -procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); -begin - StatusBar.Panels[1].Text:=HexDisplayPrefix+IntToHex(Result,2); - StatusBar.Panels[2].Text:=ERROR_CODE[Result]; -end; - -function MaxBlocks(): Integer; -var - bTypeOfCard:Byte; -begin - bTypeOfCard:=frmuFrAdvanced.bDLCardType; - - case bTypeOfCard of - DL_NTAG_203 : Result:= MAX_PAGE_NTAG203; - DL_MIFARE_ULTRALIGHT : Result:= MAX_PAGE_ULTRALIGHT; - DL_MIFARE_ULTRALIGHT_C : Result:= MAX_PAGE_ULTRALIGHT_C; - DL_MIFARE_CLASSIC_1k : Result:=(MAX_SECTORS_1k *4); - DL_MIFARE_CLASSIC_4k, - DL_MIFARE_PLUS_S_4K : Result:=((MAX_SECTORS_1k*2)*4)+((MAX_SECTORS_1k-8)*16) ; - end; -end; - - - - -procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; key_parent: TPanel; - key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent;OnKey_Exit:TNotifyEvent); -var - br:Byte; - edit_key:array[0..5] of TEdit; - -begin - for br:=0 to 5 do - begin - edit_key[br] :=TEdit.Create(key_owner); - with edit_key[br] do begin - Height :=key_height; - Width :=key_width; - Top :=key_top; - Left :=key_left+(key_width*br+2); - Name :=key_name+IntToStr(br+1); - CharCase :=ecUpperCase; - Font.Name :='Verdana'; - Font.Style:=[fsBold]; - OnKeyPress:=OnKey_press; - OnExit :=OnKey_Exit; - Text :='255'; - MaxLength :=3; - ReadOnly :=key_read_only; - Parent :=key_parent; - end; - end; -end; -procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case Check_box.Checked of - true:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:= - IntToHex(StrToInt(TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text),2); - end; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:=IntToStr(StrToInt(HexDisplayPrefix+TEdit - (owner.FindComponent(edit_name+IntToStr(br+1))).Text)); - end; - end; - end; -end; -procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case def_check_box.Checked of - true:begin for br:=0 to number_edit do begin - - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:='255'; - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=true; - end; - hex_box.Checked:=false; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=false; - end; - end; - end; -end; -procedure OnPK_KEY_Exit(Sender:TObject); -begin - - if ((sender as TEdit).Text>IntToStr(255)) or ((Sender as TEdit).Text=EmptyStr) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; -end; -procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); -begin - if (Sender as TEdit).Text=EmptyStr then begin - with (Sender as TEdit) do - begin - Undo(); - SetFocus(); - end; - end; - if check_hex_box.Checked then Exit; - if ((sender as TEdit).Text>IntToStr(255)) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; - -end; -procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); -begin - if (check_hex_box.Checked) then - begin - (Sender as TEdit).MaxLength:=2; - if (Key in['0'..'9']) or (Key in['a'..'f']) or (ord(Key)=8) then Exit else Key:=#0; - end - else begin - (Sender as TEdit).MaxLength:=3; - if (Key in['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; - end; -end; - - - - //-----End--- -end. diff --git a/uFCoderAdvance/Global.~pas b/uFCoderAdvance/Global.~pas deleted file mode 100644 index 86cd4ba..0000000 --- a/uFCoderAdvance/Global.~pas +++ /dev/null @@ -1,263 +0,0 @@ -unit Global; -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus, ComCtrls, StdCtrls, ExtCtrls,uFCoder1x; - - - procedure Errors_Code; - procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); - procedure ShowForm(the_form:TForm;pnlContainer:TPanel); - procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; - key_parent: TPanel;key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent; - OnKey_Exit:TNotifyEvent); - - procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); - procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); - procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); - procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); - procedure OnPK_KEY_Exit(Sender:TObject); - function AuthMode(RadioButton:TRadioButton):Byte; - function MaxBlocks(): Integer; - - const - FERROR_LIGHT = 2; - FERROR_SOUND = 0; //2 - FRES_OK_LIGHT = 4; - FRES_OK_SOUND = 0; //4 - KEY_INDEX = 0; - MAX_KEY_INDEX = 5; - - CONVERT_ERROR ='You must enter a number between 0 and 255 or 0 and FF hexadecimal !'; - APPROPRIATE_FORMAT ='You must enter a number between 0 and 255 !'; - MEMORY_FILL =0; - - // sectors and blocks - MAX_SECTORS_1k = 16; - MAX_SECTORS_4k = 40; - - // max page for NTAG and MIFARE ULTRALIGHT - MAX_PAGE_NTAG203 = 39; - MAX_PAGE_ULTRALIGHT = 15; - MAX_PAGE_ULTRALIGHT_C = 39; - -var - ERROR_CODE:array[0..200] of string; - - - -implementation -uses - uFAdvanced; - - - -function AuthMode(RadioButton:TRadioButton):Byte; -begin - if RadioButton.Checked then - Result:=MIFARE_AUTHENT1A - else - Result:=MIFARE_AUTHENT1B; -end; - - -procedure ShowForm(the_form:TForm;pnlContainer:TPanel); -begin - with the_form do begin - the_form.BorderStyle:=bsNone; - the_form.Align :=alClient; - the_form.Parent :=pnlContainer; - the_form.Show; - end; -end; -procedure Errors_Code; -begin - ERROR_CODE[$00]:='DL_OK '; - ERROR_CODE[$01]:='COMMUNICATION_ERROR '; - ERROR_CODE[$02]:='CHKSUM_ERROR '; - ERROR_CODE[$03]:='READING_ERROR '; - ERROR_CODE[$04]:='WRITING_ERROR '; - ERROR_CODE[$05]:='BUFFER_OVERFLOW '; - ERROR_CODE[$06]:='MAX_ADDRESS_EXCEEDED '; - ERROR_CODE[$07]:='MAX_KEY_INDEX_EXCEEDED '; - ERROR_CODE[$08]:='NO_CARD '; - ERROR_CODE[$09]:='COMMAND_NOT_SUPPORTED '; - ERROR_CODE[$0A]:='FORBIDEN_DIRECT_WRITE_IN_SECTOR_TRAILER '; - ERROR_CODE[$0B]:='ADDRESSED_BLOCK_IS_NOT_SECTOR_TRAILER '; - ERROR_CODE[$0C]:='WRONG_ADDRESS_MODE '; - ERROR_CODE[$0D]:='WRONG_ACCESS_BITS_VALUES '; - ERROR_CODE[$0E]:='AUTH_ERROR '; - ERROR_CODE[$0F]:='PARAMETERS_ERROR '; - ERROR_CODE[$10]:='MAX_SIZE_EXCEEDED '; - ERROR_CODE[$11]:='UNSUPPORTED_CARD_TYPE '; - - ERROR_CODE[$50]:='COMMUNICATION_BREAK '; - ERROR_CODE[$51]:='NO_MEMORY_ERROR '; - ERROR_CODE[$52]:='CAN_NOT_OPEN_READER '; - ERROR_CODE[$53]:='READER_NOT_SUPPORTED '; - ERROR_CODE[$54]:='READER_OPENING_ERROR '; - ERROR_CODE[$55]:='READER_PORT_NOT_OPENED '; - ERROR_CODE[$56]:='CANT_CLOSE_READER_PORT '; - - ERROR_CODE[$70]:='WRITE_VERIFICATION_ERROR '; - ERROR_CODE[$71]:='BUFFER_SIZE_EXCEEDED '; - ERROR_CODE[$72]:='VALUE_BLOCK_INVALID '; - ERROR_CODE[$73]:='VALUE_BLOCK_ADDR_INVALID '; - ERROR_CODE[$74]:='VALUE_BLOCK_MANIPULATION_ERROR '; - ERROR_CODE[$75]:='WRONG_UI_MODE'; - ERROR_CODE[$76]:='KEYS_LOCKED'; - ERROR_CODE[$77]:='KEYS_UNLOCKED'; - ERROR_CODE[$78]:='WRONG_PASSWORD'; - ERROR_CODE[$79]:='CAN_NOT_LOCK_DEVICE'; - ERROR_CODE[$7A]:='CAN_NOT_UNLOCK_DEVICE'; - ERROR_CODE[$7B]:='DEVICE_EEPROM_BUSY'; - ERROR_CODE[$7C]:='RTC_SET_ERROR'; - - ERROR_CODE[$A0]:='FT_STATUS_ERROR_1'; - ERROR_CODE[$A1]:='FT_STATUS_ERROR_2'; - ERROR_CODE[$A2]:='FT_STATUS_ERROR_3'; - ERROR_CODE[$A3]:='FT_STATUS_ERROR_4'; - ERROR_CODE[$A4]:='FT_STATUS_ERROR_5'; - ERROR_CODE[$A5]:='FT_STATUS_ERROR_6'; - ERROR_CODE[$A6]:='FT_STATUS_ERROR_7'; - ERROR_CODE[$A7]:='FT_STATUS_ERROR_8'; - ERROR_CODE[$A8]:='FT_STATUS_ERROR_9'; -end; - -procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); -begin - StatusBar.Panels[1].Text:=HexDisplayPrefix+IntToHex(Result,2); - StatusBar.Panels[2].Text:=ERROR_CODE[Result]; -end; - -function MaxBlocks(): Integer; -var - bTypeOfCard:Byte; -begin - bTypeOfCard:=frmuFrAdvanced.bDLCardType; - - case bTypeOfCard of - DL_NTAG_203 : Result:= MAX_PAGE_NTAG203; - DL_MIFARE_ULTRALIGHT : Result:= MAX_PAGE_ULTRALIGHT; - DL_MIFARE_ULTRALIGHT_C : Result:= MAX_PAGE_ULTRALIGHT_C; - DL_MIFARE_CLASSIC_1k : Result:=(MAX_SECTORS_1k *4); - DL_MIFARE_CLASSIC_4k, - DL_MIFARE_PLUS_S_4K : Result:=((MAX_SECTORS_1k*2)*4)+((MAX_SECTORS_1k-8)*16) ; - end; -end; - - - - -procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; key_parent: TPanel; - key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent;OnKey_Exit:TNotifyEvent); -var - br:Byte; - edit_key:array[0..5] of TEdit; - -begin - for br:=0 to 5 do - begin - edit_key[br] :=TEdit.Create(key_owner); - with edit_key[br] do begin - Height :=key_height; - Width :=key_width; - Top :=key_top; - Left :=key_left+(key_width*br+2); - Name :=key_name+IntToStr(br+1); - CharCase :=ecUpperCase; - Font.Name :='Verdana'; - Font.Style:=[fsBold]; - OnKeyPress:=OnKey_press; - OnExit :=OnKey_Exit; - Text :='255'; - MaxLength :=3; - ReadOnly :=key_read_only; - Parent :=key_parent; - end; - end; -end; -procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case Check_box.Checked of - true:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:= - IntToHex(StrToInt(TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text),2); - end; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:=IntToStr(StrToInt(HexDisplayPrefix+TEdit - (owner.FindComponent(edit_name+IntToStr(br+1))).Text)); - end; - end; - end; -end; -procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case def_check_box.Checked of - true:begin for br:=0 to number_edit do begin - - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:='255'; - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=true; - end; - hex_box.Checked:=false; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=false; - end; - end; - end; -end; -procedure OnPK_KEY_Exit(Sender:TObject); -begin - - if ((sender as TEdit).Text>IntToStr(255)) or ((Sender as TEdit).Text=EmptyStr) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; -end; -procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); -begin - if (Sender as TEdit).Text=EmptyStr then begin - with (Sender as TEdit) do - begin - Undo(); - SetFocus(); - end; - end; - if check_hex_box.Checked then Exit; - if ((sender as TEdit).Text>IntToStr(255)) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; - -end; -procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); -begin - if (check_hex_box.Checked) then - begin - (Sender as TEdit).MaxLength:=2; - if (Key in['0'..'9']) or (Key in['a'..'f']) or (ord(Key)=8) then Exit else Key:=#0; - end - else begin - (Sender as TEdit).MaxLength:=3; - if (Key in['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; - end; -end; - - - - //-----End--- -end. diff --git a/uFCoderAdvance/LinearFormatsCard.dcu b/uFCoderAdvance/LinearFormatsCard.dcu deleted file mode 100644 index 12eb1babd6c905b3f1ab4ceac93e23b1d4b16bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17694 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 diff --git a/uFCoderAdvance/LinearFormatsCard.ddp b/uFCoderAdvance/LinearFormatsCard.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/LinearFormatsCard.dfm b/uFCoderAdvance/LinearFormatsCard.dfm deleted file mode 100644 index 3c91461..0000000 --- a/uFCoderAdvance/LinearFormatsCard.dfm +++ /dev/null @@ -1,780 +0,0 @@ -object frmLinearFormatCard: TfrmLinearFormatCard - Left = 316 - Top = 154 - Width = 529 - Height = 460 - Caption = 'LinearFormatCard' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'LinearFormat Card(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbLinearFormatCard: TStatusBar - Left = 0 - Top = 402 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyConteiner: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 99 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 97 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 97 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object pgLinearFormatsCard: TPageControl - Left = 0 - Top = 155 - Width = 513 - Height = 247 - ActivePage = tabLinearFormat - Align = alClient - TabOrder = 4 - object tabLinearFormat: TTabSheet - Caption = 'LinearFormat ' - object lblBlockAccessBits: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBits: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormatted: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBits: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBits: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormat: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatClick - end - object txtSectorFormatted: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 26 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM1: TTabSheet - Caption = 'LinearFormat AKM1' - ImageIndex = 1 - object lblBlockAccessBitsAKM1: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM1: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM1: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM1: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM1: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM1: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM1: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM1: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM1Click - end - object txtSectorFormattedAKM1: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM2: TTabSheet - Caption = 'LinearFormat AKM2' - ImageIndex = 2 - object lblBlockAccessBitsAKM2: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM2: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM2: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM2: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM2: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM2: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM2: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM2: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM2Click - end - object txtSectorFormattedAKM2: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatPK: TTabSheet - Caption = 'LinearFormat PK' - ImageIndex = 3 - object lblBlockAccessBitsPK: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsPK: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9PK: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedPK: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsPK: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsPK: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9PK: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatPK: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatPKClick - end - object txtSectorFormattedPK: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - end -end diff --git a/uFCoderAdvance/LinearFormatsCard.pas b/uFCoderAdvance/LinearFormatsCard.pas deleted file mode 100644 index b8db279..0000000 --- a/uFCoderAdvance/LinearFormatsCard.pas +++ /dev/null @@ -1,436 +0,0 @@ -unit LinearFormatsCard; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder; - -type - TfrmLinearFormatCard = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbLinearFormatCard: TStatusBar; - pnlKeyConteiner: TPanel; - pnlKeyA: TPanel; - lblKeyA: TStaticText; - chkKeyAHex: TCheckBox; - pnlKeyB: TPanel; - lblKeyB: TStaticText; - chkKeyBHex: TCheckBox; - pgLinearFormatsCard: TPageControl; - tabLinearFormat: TTabSheet; - tabLinearFormatAKM1: TTabSheet; - tabLinearFormatAKM2: TTabSheet; - tabLinearFormatPK: TTabSheet; - lblBlockAccessBits: TLabel; - cboBlockAccessBits: TComboBox; - lblSectorTrailerAccessBits: TLabel; - cboSectorTrailerAccessBits: TComboBox; - lblSectorTrailerByte9: TLabel; - txtSectorTrailerByte9: TEdit; - btnLinearFormat: TButton; - lblSectorFormatted: TLabel; - txtSectorFormatted: TEdit; - lblBlockAccessBitsAKM1: TLabel; - cboBlockAccessBitsAKM1: TComboBox; - lblSectorTrailerAccessBitsAKM1: TLabel; - cboSectorTrailerAccessBitsAKM1: TComboBox; - lblSectorTrailerByte9AKM1: TLabel; - txtSectorTrailerByte9AKM1: TEdit; - btnLinearFormatAKM1: TButton; - lblSectorFormattedAKM1: TLabel; - txtSectorFormattedAKM1: TEdit; - lblBlockAccessBitsAKM2: TLabel; - cboBlockAccessBitsAKM2: TComboBox; - lblSectorTrailerAccessBitsAKM2: TLabel; - cboSectorTrailerAccessBitsAKM2: TComboBox; - lblSectorTrailerByte9AKM2: TLabel; - txtSectorTrailerByte9AKM2: TEdit; - btnLinearFormatAKM2: TButton; - lblSectorFormattedAKM2: TLabel; - txtSectorFormattedAKM2: TEdit; - lblBlockAccessBitsPK: TLabel; - cboBlockAccessBitsPK: TComboBox; - lblSectorTrailerAccessBitsPK: TLabel; - cboSectorTrailerAccessBitsPK: TComboBox; - lblSectorTrailerByte9PK: TLabel; - txtSectorTrailerByte9PK: TEdit; - btnLinearFormatPK: TButton; - lblSectorFormattedPK: TLabel; - txtSectorFormattedPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure btnLinearFormatClick(Sender: TObject); - procedure btnLinearFormatAKM1Click(Sender: TObject); - procedure btnLinearFormatAKM2Click(Sender: TObject); - procedure btnLinearFormatPKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - public - { Public declarations } - end; - -var - frmLinearFormatCard: TfrmLinearFormatCard; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmLinearFormatCard } - -procedure TfrmLinearFormatCard.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmLinearFormatCard.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearFormatCard.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; - -procedure TfrmLinearFormatCard.OnKeyAPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; -procedure TfrmLinearFormatCard.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmLinearFormatCard.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmLinearFormatCard.OnKeyBPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmLinearFormatCard.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyADefaultClick(Sender: TObject); -begin - //CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.chkKeyBDefaultClick(Sender: TObject); -begin - // CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; -end; - - - - -procedure TfrmLinearFormatCard.btnLinearFormatClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAccessBits :=cboBlockAccessBits.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9,pKeyB, - bSectorsFormatted,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM1.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM1.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard_AKM1(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM2.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM2.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - iFResult:=LinearFormatCard_AKM2(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9PK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsPK.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsPK.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9PK.Text); - WriteKeyAB; - PKeyA:=@baKeyA; - PKeyB:=@baKeyB; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - iFResult:=LinearFormatCard_PK(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode,pPKkey); - if iFResult=DL_OK then - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; -finally - pKeyA :=nil; - pKeyB :=nil; - pPKKey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - - - - - - - -end. diff --git a/uFCoderAdvance/LinearFormatsCard.~ddp b/uFCoderAdvance/LinearFormatsCard.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/LinearFormatsCard.~dfm b/uFCoderAdvance/LinearFormatsCard.~dfm deleted file mode 100644 index 1f05ce7..0000000 --- a/uFCoderAdvance/LinearFormatsCard.~dfm +++ /dev/null @@ -1,780 +0,0 @@ -object frmLinearFormatCard: TfrmLinearFormatCard - Left = 316 - Top = 154 - Width = 529 - Height = 460 - Caption = 'LinearFormatCard' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'LinearFormat Card(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbLinearFormatCard: TStatusBar - Left = 0 - Top = 403 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyConteiner: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 99 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 97 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 97 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object pgLinearFormatsCard: TPageControl - Left = 0 - Top = 155 - Width = 513 - Height = 248 - ActivePage = tabLinearFormat - Align = alClient - TabOrder = 4 - object tabLinearFormat: TTabSheet - Caption = 'LinearFormat ' - object lblBlockAccessBits: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBits: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormatted: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBits: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBits: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormat: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatClick - end - object txtSectorFormatted: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 26 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM1: TTabSheet - Caption = 'LinearFormat AKM1' - ImageIndex = 1 - object lblBlockAccessBitsAKM1: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM1: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM1: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM1: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM1: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM1: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM1: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM1: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM1Click - end - object txtSectorFormattedAKM1: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM2: TTabSheet - Caption = 'LinearFormat AKM2' - ImageIndex = 2 - object lblBlockAccessBitsAKM2: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM2: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM2: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM2: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM2: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM2: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM2: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM2: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM2Click - end - object txtSectorFormattedAKM2: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatPK: TTabSheet - Caption = 'LinearFormat PK' - ImageIndex = 3 - object lblBlockAccessBitsPK: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsPK: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9PK: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedPK: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsPK: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsPK: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9PK: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatPK: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatPKClick - end - object txtSectorFormattedPK: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - end -end diff --git a/uFCoderAdvance/LinearFormatsCard.~pas b/uFCoderAdvance/LinearFormatsCard.~pas deleted file mode 100644 index 9fa6408..0000000 --- a/uFCoderAdvance/LinearFormatsCard.~pas +++ /dev/null @@ -1,436 +0,0 @@ -unit LinearFormatsCard; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder1x; - -type - TfrmLinearFormatCard = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbLinearFormatCard: TStatusBar; - pnlKeyConteiner: TPanel; - pnlKeyA: TPanel; - lblKeyA: TStaticText; - chkKeyAHex: TCheckBox; - pnlKeyB: TPanel; - lblKeyB: TStaticText; - chkKeyBHex: TCheckBox; - pgLinearFormatsCard: TPageControl; - tabLinearFormat: TTabSheet; - tabLinearFormatAKM1: TTabSheet; - tabLinearFormatAKM2: TTabSheet; - tabLinearFormatPK: TTabSheet; - lblBlockAccessBits: TLabel; - cboBlockAccessBits: TComboBox; - lblSectorTrailerAccessBits: TLabel; - cboSectorTrailerAccessBits: TComboBox; - lblSectorTrailerByte9: TLabel; - txtSectorTrailerByte9: TEdit; - btnLinearFormat: TButton; - lblSectorFormatted: TLabel; - txtSectorFormatted: TEdit; - lblBlockAccessBitsAKM1: TLabel; - cboBlockAccessBitsAKM1: TComboBox; - lblSectorTrailerAccessBitsAKM1: TLabel; - cboSectorTrailerAccessBitsAKM1: TComboBox; - lblSectorTrailerByte9AKM1: TLabel; - txtSectorTrailerByte9AKM1: TEdit; - btnLinearFormatAKM1: TButton; - lblSectorFormattedAKM1: TLabel; - txtSectorFormattedAKM1: TEdit; - lblBlockAccessBitsAKM2: TLabel; - cboBlockAccessBitsAKM2: TComboBox; - lblSectorTrailerAccessBitsAKM2: TLabel; - cboSectorTrailerAccessBitsAKM2: TComboBox; - lblSectorTrailerByte9AKM2: TLabel; - txtSectorTrailerByte9AKM2: TEdit; - btnLinearFormatAKM2: TButton; - lblSectorFormattedAKM2: TLabel; - txtSectorFormattedAKM2: TEdit; - lblBlockAccessBitsPK: TLabel; - cboBlockAccessBitsPK: TComboBox; - lblSectorTrailerAccessBitsPK: TLabel; - cboSectorTrailerAccessBitsPK: TComboBox; - lblSectorTrailerByte9PK: TLabel; - txtSectorTrailerByte9PK: TEdit; - btnLinearFormatPK: TButton; - lblSectorFormattedPK: TLabel; - txtSectorFormattedPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure btnLinearFormatClick(Sender: TObject); - procedure btnLinearFormatAKM1Click(Sender: TObject); - procedure btnLinearFormatAKM2Click(Sender: TObject); - procedure btnLinearFormatPKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - public - { Public declarations } - end; - -var - frmLinearFormatCard: TfrmLinearFormatCard; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmLinearFormatCard } - -procedure TfrmLinearFormatCard.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmLinearFormatCard.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearFormatCard.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; - -procedure TfrmLinearFormatCard.OnKeyAPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; -procedure TfrmLinearFormatCard.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmLinearFormatCard.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmLinearFormatCard.OnKeyBPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmLinearFormatCard.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyADefaultClick(Sender: TObject); -begin - //CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.chkKeyBDefaultClick(Sender: TObject); -begin - // CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; -end; - - - - -procedure TfrmLinearFormatCard.btnLinearFormatClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAccessBits :=cboBlockAccessBits.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9,pKeyB, - bSectorsFormatted,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM1.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM1.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard_AKM1(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM2.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM2.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - iFResult:=LinearFormatCard_AKM2(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9PK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsPK.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsPK.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9PK.Text); - WriteKeyAB; - PKeyA:=@baKeyA; - PKeyB:=@baKeyB; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - iFResult:=LinearFormatCard_PK(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode,pPKkey); - if iFResult=DL_OK then - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; -finally - pKeyA :=nil; - pKeyB :=nil; - pPKKey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - - - - - - - -end. diff --git a/uFCoderAdvance/LinearReadWrite.dcu b/uFCoderAdvance/LinearReadWrite.dcu deleted file mode 100644 index 002c2bf5e0f2bbaaec666e31fb63bd17ad491e7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27315 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%0A! zj>jUE@78a$?=!92m$GhvX#dx56YW2O)9Uu@Ge`RYE@!t#SOubAn+scZdyZ-IZ;%Mq z8;RgQSRR-NuE~G;%LA70{r_b+v-Nv_xgI71zxP!jg*@PluYfSc^(kTc15+NjBThb0 z9?&)@jjw$Ky+XAHcAn z&w-UzFZc<6=U)42hKl*5?5ma7$e{)pwYkRe=ymH0=wsrigxh*(v zo}}~$-Cpr>MTNw6o_%73eqb*@1(T8Y3e-T=!TD~_C%hjyi(SD<-W8lTcLkg;-kRu% zq1(F~-uI%8?(**Dc)W7r`}LbOcA3`gN?A8RoiG%%#;)MJxivV?HyyZ7culVYn^yyy zZqF`r<*?U0*>9d4GEe#{BrH0J$MwPi%<>elmh7*qSrP!+|LGh39gZ8>r*!9=aK?j z4s%X3%5%SuP;=IM(#eJT?Vt)D?&rhdJ`DrqwK1eHn6O1tp z0$aS+<^WSV0&vnL1*S259i*{KT4&^uQD6qlM5namBkmJ4bN6*g@ei=5+q2u8Rrc+~ zIOD=zde3rRco<)$U0Q6`Qx3liz<9FJhri9_7Z6BuWh%|T$9s**;K}@_ zzZ_(`*AR6NPeLIudA#mf2#oY31Q(fbemVeaZ&?bWCkvL!N{*ZeQu# zI7=-8_-8Dl`svL@qK}M9W2xa6~RL9ru1Hd-_f| zMzS$qkwUV;yAC~RKsg4oP1ZfA-(-`Tq|EE|+6UN~l9Z8b27#f>WzSi&sryPcZLp}@ zlT_T8l1*RrO!5tBf5`^feIL07zgkMlUH>ocPp|#{@(g}CsKwks7pRtb2G^%VsX5PJ z-q$wxR(S^3r)*%(Gje=`ZInw_72{$BHpv2B-jwTOj{$TKF3Bqjy~6w7-zWpV+x`7| zm~=q^_NTwm?tHiVn{q(^`y0vno9~auKE^oqiwb;%xE1&L&4n=04(!5$SMDB%Na>Z9 zBZG)dVnmXdOH!B$BmQRb->53}s?w9H^ea{JP*r+Lm8xKv1;0uD>sM1HO zbW)W*QKbh}=>b(bqe{P2rL(H^t|}c?rT0|ns46|LN-rw7RB5{^J*G-4ROv2NdRUb z(oi-^@-Vm5$*z-n;P(idB<0E_Qk6VK>V)4Od9rj|o+O=?ua~}rUqxw<=BkoYl~h%_ zNtJF^rCU@fPnGgj=~h)*q)Nk7n*w%JfGOIrZM@A6Q#+e1)zAXlP;cY@-bmWmsgxZ<6lxB<3SyfayG&=^gvDX)Jl0NKz0ZaTJz zp3gVyoMeDb3j=g=1DKV!`kce}5C(al+BShfHfaXw0fY2_C-kHmqz4SrV`&fr6E{c? z7{mZu8>Gj=APJtZNi#&j0G`leVThhSJOOzcp70JR{*I>j5mo{LIUIgdJmCl^e#BC7 z0~1&L2qv{>i>C+5+ig@q9v?{J$`(yIq>4pd_$FiDP( zBZgh9BL(>j`&`9r*)semQ)H1Ma%DFptKsmQVxL?&6Tns};u0`%%jL>Bz(!+bZMj^z z-{b*S8V>?v_!QAX&1)=^N3NWjJaT0#lj!l2!x;zLJlkoYJZ(vN zI*Ia2p#0L3^2;PjMS+4~~U_^H?!4m!DL0i6W@E3u{1LRqEPL1C1mj)pPE zb{%!lVe-3qAvPeBnRF&Ck<;mDU@;08C$Jbw^8%JUWV0Y#42_3{7{ft~>HX;9=v@xS zISh{8MJLIi5uBFLDOn((0=it9ztuvheyvml0t+i8C}{g4?{f>``e226A|td_vZcPr zJN}(8vVAceBuY8@xJ0UMc`%!e8wAaUlF@WaC56$v)UlC)X6jngV6op+)$@K~=q@+}V;)P68*mz1RptqrOOjp<>N^VrxWJ+c#>^e$j zD{KlS)e5_wl3In8Qc|z5X_U-WSOq0FDXfx`n-w;ll3NsZBPF*gY$hd(6gHcZ28C5q z;#XKLB~1#er=(e7b17M@u$w3eE9_=UA_}{Ok~W3iN=Z~^4g7Qy6^d^D~9rPRacW zyMvOo3i}Bq4=8K}B@Zg>E=nF&*gcdyqOf}@`K7{EQ}UR??xW;!h5d|@4GO!Tk|z|l zmXaqG_5dZnQrLr(Y*yIAlsu)dM<{t(VZWs0S%p1D$rgn@PRVl$+d#?l3VVW*7Zmm+ zCEFGDD@t}MY%?Xh6!sJ)FDdM4N_H#kSxR13*cM9mD(pE*UQ^iflzwv*ru@8D0#06rym@hnx?RQlpO8E>9G%{stS99k`H=t z`p08sc7^Sy*jLt$@G^2gIS{piFRm>!_y#Fscd`O$iqzD>zTiUQM5PHu(i zAxch;K{3vr83!`IOYuKe0n^XUPKD`VO3p$*P08Of@Yy>8pJXIHN6@SIWE?)n(TRL= zEk38xsbZ+Y;fOj5hZ>(U{>`@#7Y&{Mkwh@OO_6!bmD?TU6+i;jF@4%r< zeh~+cya$IW`BfZd$*<#3Bfp7*S3ZctL-PAL(Bt?Vp?rwL80BLeu2N3pFits#L$UHX z4il9xaky6b8i%QhB*RdqC^&c&I}TM!1`cbKp*WBc_$;=K#Nk@o7#ybBuEL?rHVy}m ztr&+Y+e92@*{;Q*#x@lPudNJ+XKb@@0NLR=HO-5ICv83sRcQ-wn3d+kp(ZVWgEuXN z!~C=s92TT4#bI08oj8z{_?)V)!oj1i!J$g+#$lGa4u=}`AsoEwqd3f0*W<82-H5|B z^%)$?cgU@~thk*SZ976UZIJDT` z$Kh4`hd7Xr@!8=xhlBh%KG!(D<`_wV$$Ez!hg>-Whpmom9A0%icycH!#oM?Ma6dkR zE$SU3rsLq4#<9%aVlkb{h&+{z>h-VSeRi94%~&YV*RQw+0`8 zReM`lz|q^uHnaixLrA`gy=YU{FmIY;JsY9g*1)586+Rxq$9lHF(c2@qzl!AB*gBiK zgMDptyvbfov+aOK?>2nAijOy$;^;lXcCQBRcKLP1W|!Zz^-6L_n(Z7ro~C}zW~mNE zo@%#!&ZgRX&*4LYX|E#RIjA>R-mn4|7Rx>Qd19?DxCe7xRhpOs)d6nu2$?NR4`S9rV;v;~Mkla0}w^NWmgygG`d<~L6 zisWmMXcayl!pEaX-Xrhc0Nme^tI}-m$g|YmgYxI9ZIA4;tFOv$+8sw^X^`zzc=YbU z$3c7?k-tvwJua8#ldPN%;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/LinearReadWrite.dfm b/uFCoderAdvance/LinearReadWrite.dfm deleted file mode 100644 index 45dde04..0000000 --- a/uFCoderAdvance/LinearReadWrite.dfm +++ /dev/null @@ -1,1089 +0,0 @@ -object frmLinearReadWrite: TfrmLinearReadWrite - Left = 756 - Top = 224 - Width = 529 - Height = 428 - Caption = 'LinearRead/Write' - Color = clBtnFace - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Linear Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbLinearReadWrite: TStatusBar - Left = 0 - Top = 370 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - TabOrder = 2 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object pgLinearReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 313 - ActivePage = tabLinearRead - Align = alClient - TabOrder = 3 - object tabLinearRead: TTabSheet - Caption = 'LinearRead' - object lblLinearRead: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLReadLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesRead: TLabel - Left = 176 - Top = 244 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearRead: TButton - Left = 328 - Top = 228 - Width = 160 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadClick - end - object txtReadBytes: TEdit - Left = 261 - Top = 242 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearRead: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM12: TTabSheet - Caption = 'LinearRead_AKM1/AKM2' - ImageIndex = 1 - object pgLinearReadAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 285 - ActivePage = tabLinearReadAKM1 - Align = alClient - TabOrder = 0 - object tabLinearReadAKM1: TTabSheet - Caption = 'LinearRead_AKM1' - object lblLRAKM1LinearRead: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRAKM1LinearAddress: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRAKM1DataLength: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM1: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM1Click - end - object txtReadBytesAKM1: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM2: TTabSheet - Caption = 'LinearRead_AKM2' - ImageIndex = 1 - object Label4: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM2: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM2Click - end - object txtReadBytesAKM2: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - end - end - object tabLinearReadPK: TTabSheet - Caption = 'LinearRead_PK' - ImageIndex = 2 - object Label7: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesPK: TLabel - Left = 169 - Top = 250 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadPK: TButton - Left = 322 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadPKClick - end - object txtReadBytesPK: TEdit - Left = 250 - Top = 247 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadPK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearWrite: TTabSheet - Caption = 'LinearWrite' - ImageIndex = 3 - object lblLWLinearWrite: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWritten: TLabel - Left = 171 - Top = 244 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWrite: TButton - Left = 324 - Top = 228 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteClick - end - object txtBytesWritten: TEdit - Left = 256 - Top = 242 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWrite: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteChange - end - end - object tabLinearWriteAKM12: TTabSheet - Caption = 'LinearWrite_AKM1/AKM2' - ImageIndex = 4 - object pgLinearWriteAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 285 - ActivePage = tabLinearWriteAKM1 - Align = alClient - TabOrder = 0 - object tabLinearWriteAKM1: TTabSheet - Caption = 'LinearWrite_AKM1' - object lblLinearWriteAKM1: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM1: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM1: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM1: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM1Click - end - object txtBytesWrittenAKM1: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM1Change - end - end - object tabLinearWriteAKM2: TTabSheet - Caption = 'LinearWrite_AKM2' - ImageIndex = 1 - object lblLinearWriteAKM2: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM2: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM2Click - end - object txtBytesWrittenAKM2: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM2Change - end - end - end - end - object tabLinearWritePK: TTabSheet - Caption = 'LinearWrite_PK' - ImageIndex = 5 - object lblLinearWritePK: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenPK: TLabel - Left = 171 - Top = 249 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWritePK: TButton - Left = 323 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWritePKClick - end - object txtBytesWrittenPK: TEdit - Left = 256 - Top = 246 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWritePK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWritePKChange - end - end - end -end diff --git a/uFCoderAdvance/LinearReadWrite.pas b/uFCoderAdvance/LinearReadWrite.pas deleted file mode 100644 index 762b3d9..0000000 --- a/uFCoderAdvance/LinearReadWrite.pas +++ /dev/null @@ -1,689 +0,0 @@ -unit LinearReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, - Global,uFCoder, ComCtrls, ExtCtrls; - -type - TfrmLinearReadWrite = class(TForm) - lblHeader: TStaticText; - stbLinearReadWrite: TStatusBar; - pnlAuth: TPanel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - lblKeyIndex: TLabel; - cboKeyIndex: TComboBox; - lblPKKey: TLabel; - pgLinearReadWrite: TPageControl; - tabLinearRead: TTabSheet; - tabLinearReadAKM12: TTabSheet; - tabLinearReadPK: TTabSheet; - tabLinearWrite: TTabSheet; - tabLinearWriteAKM12: TTabSheet; - tabLinearWritePK: TTabSheet; - lblLinearRead: TLabel; - lblLReadLinearAddress: TLabel; - txtLRLinearAddress: TEdit; - lblLRDataLength: TLabel; - txtLRDataLength: TEdit; - btnLinearRead: TButton; - pgLinearReadAKM12: TPageControl; - tabLinearReadAKM1: TTabSheet; - tabLinearReadAKM2: TTabSheet; - lblLRAKM1LinearRead: TLabel; - lblLRAKM1LinearAddress: TLabel; - txtLRLinearAddressAKM1: TEdit; - lblLRAKM1DataLength: TLabel; - txtLRDataLengthAKM1: TEdit; - btnLinearReadAKM1: TButton; - Label4: TLabel; - lblLRLinearAddressAKM2: TLabel; - txtLRLinearAddressAKM2: TEdit; - txtLRDataLengthAKM2: TEdit; - btnLinearReadAKM2: TButton; - lblLRDataLengthAKM2: TLabel; - Label7: TLabel; - lblLRLinearAddressPK: TLabel; - txtLRLinearAddressPK: TEdit; - lblLRDataLengthPK: TLabel; - txtLRDataLengthPK: TEdit; - btnLinearReadPK: TButton; - lblLWLinearWrite: TLabel; - lblLWLinearAddress: TLabel; - txtLWLinearAddress: TEdit; - lblLWDataLength: TLabel; - txtLWDataLength: TEdit; - btnLinearWrite: TButton; - lblLinearWritePK: TLabel; - lblLWLinearAddressPK: TLabel; - txtLWLinearAddressPK: TEdit; - lblLWDataLengthPK: TLabel; - txtLWDataLengthPK: TEdit; - btnLinearWritePK: TButton; - pgLinearWriteAKM12: TPageControl; - tabLinearWriteAKM1: TTabSheet; - lblLinearWriteAKM1: TLabel; - lblLWLinearAddressAKM1: TLabel; - lblLWDataLengthAKM1: TLabel; - txtLWLinearAddressAKM1: TEdit; - txtLWDataLengthAKM1: TEdit; - btnLinearWriteAKM1: TButton; - tabLinearWriteAKM2: TTabSheet; - lblLinearWriteAKM2: TLabel; - lblLWLinearAddressAKM2: TLabel; - lblLWDataLengthAKM2: TLabel; - txtLWLinearAddressAKM2: TEdit; - txtLWDataLengthAKM2: TEdit; - btnLinearWriteAKM2: TButton; - lblBytesRead: TLabel; - txtReadBytes: TEdit; - lblReadBytesAKM1: TLabel; - txtReadBytesAKM1: TEdit; - lblReadBytesAKM2: TLabel; - txtReadBytesAKM2: TEdit; - lblReadBytesPK: TLabel; - txtReadBytesPK: TEdit; - lblBytesWritten: TLabel; - txtBytesWritten: TEdit; - lblBytesWrittenAKM1: TLabel; - txtBytesWrittenAKM1: TEdit; - lblBytesWrittenAKM2: TLabel; - txtBytesWrittenAKM2: TEdit; - lblBytesWrittenPK: TLabel; - txtBytesWrittenPK: TEdit; - txtLinearRead: TRichEdit; - txtLinearReadAKM1: TRichEdit; - txtLinearReadAKM2: TRichEdit; - txtLinearReadPK: TRichEdit; - txtLinearWrite: TRichEdit; - txtLinearWritePK: TRichEdit; - txtLinearWriteAKM1: TRichEdit; - txtLinearWriteAKM2: TRichEdit; - procedure FormCreate(Sender: TObject); - procedure btnLinearReadClick(Sender: TObject); - procedure btnLinearReadAKM1Click(Sender: TObject); - procedure btnLinearReadAKM2Click(Sender: TObject); - procedure btnLinearReadPKClick(Sender: TObject); - procedure btnLinearWriteClick(Sender: TObject); - procedure btnLinearWriteAKM1Click(Sender: TObject); - procedure btnLinearWriteAKM2Click(Sender: TObject); - procedure btnLinearWritePKClick(Sender: TObject); - procedure txtLinearWriteChange(Sender: TObject); - procedure txtLinearWriteAKM2Change(Sender: TObject); - procedure txtLinearWriteAKM1Change(Sender: TObject); - procedure txtLinearWritePKChange(Sender: TObject); - private - - procedure OnPKKeyExit(Sender:TObject); - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - public - { Public declarations } - end; - type - TByteArray=array of Byte; -var - frmLinearReadWrite: TfrmLinearReadWrite; - - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmLinearReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmLinearReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmLinearReadWrite.btnLinearReadClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLRDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLRLinearAddress.Text); - wDataLength :=StrToInt(txtLRDataLength.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - - iFResult:=LinearRead(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - txtLinearRead.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(Trim(txtLRLinearAddressAKM1.Text)); - wDataLength :=StrToInt(Trim(txtLRDataLengthAKM1.Text)); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM1(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtLinearReadAKM1.Text:=String(baReadData); - txtReadBytesAKM1.Text :=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM1.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLRDataLengthAKM2.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM2(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtReadBytesAKM2.Text :=IntToStr(wBytesRet); - txtLinearReadAKM2.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM2.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadPKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - bBr :Byte; -begin - try - if Trim(txtLRLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - New(pData); - New(pPKKey); - - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressPK.Text); - wDataLength :=StrToInt(txtLRDataLengthPK.Text); - - SetLength(baReadData,wDataLength); - pData :=PByte(@baReadData[0]); - pPKKEY:=@PKKey; - iFResult:=LinearRead_PK(pData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtLinearReadPK.Text:=String(baReadData); - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWrite.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWrite.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLWDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLWLinearAddress.Text); - wDataLength :=StrToInt(txtLWDataLength.Text); - pData :=PByte(txtLinearWrite.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM1.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM1.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM1.Text); - pData :=PByte(txtLinearWriteAKM1.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM1(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM2.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM2.Text); - pData :=PByte(txtLinearWriteAKM2.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM2(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWritePKClick(Sender: TObject); -var - pPKKEY, - pData :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLinearWritePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWritePK.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressPK.Text); - wDataLength :=StrToInt(txtLWDataLengthPK.Text); - pData :=PByte(txtLinearWritePK.Text); - pPKKEY :=@PKKey; - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_PK(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,pPKKEY); - if iFResult=DL_OK then - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKEY); - frmuFrAdvanced.FunctionStart:=false; - end; - end; - - - -procedure TfrmLinearReadWrite.txtLinearWriteChange(Sender: TObject); -begin - txtLWDataLength.Text:=IntToStr(Length(Trim(txtLinearWrite.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM2Change(Sender: TObject); -begin - txtLWDataLengthAKM2.Text:=IntToStr(Length(Trim(txtLinearWriteAKM2.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM1Change(Sender: TObject); -begin - txtLWDataLengthAKM1.Text:=IntToStr(Length(Trim(txtLinearWriteAKM1.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWritePKChange(Sender: TObject); -begin - txtLWDataLengthPK.Text:=IntToStr(Length(Trim(txtLinearWritePK.Text))); -end; - -end. diff --git a/uFCoderAdvance/LinearReadWrite.~ddp b/uFCoderAdvance/LinearReadWrite.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/LinearReadWrite.~dfm b/uFCoderAdvance/LinearReadWrite.~dfm deleted file mode 100644 index 8b9619c..0000000 --- a/uFCoderAdvance/LinearReadWrite.~dfm +++ /dev/null @@ -1,1089 +0,0 @@ -object frmLinearReadWrite: TfrmLinearReadWrite - Left = 403 - Top = 171 - Width = 529 - Height = 428 - Caption = 'LinearRead/Write' - Color = clBtnFace - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Linear Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbLinearReadWrite: TStatusBar - Left = 0 - Top = 371 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - TabOrder = 2 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object pgLinearReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 314 - ActivePage = tabLinearRead - Align = alClient - TabOrder = 3 - object tabLinearRead: TTabSheet - Caption = 'LinearRead' - object lblLinearRead: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLReadLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesRead: TLabel - Left = 176 - Top = 244 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearRead: TButton - Left = 328 - Top = 228 - Width = 160 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadClick - end - object txtReadBytes: TEdit - Left = 261 - Top = 242 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearRead: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM12: TTabSheet - Caption = 'LinearRead_AKM1/AKM2' - ImageIndex = 1 - object pgLinearReadAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 286 - ActivePage = tabLinearReadAKM1 - Align = alClient - TabOrder = 0 - object tabLinearReadAKM1: TTabSheet - Caption = 'LinearRead_AKM1' - object lblLRAKM1LinearRead: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRAKM1LinearAddress: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRAKM1DataLength: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM1: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM1Click - end - object txtReadBytesAKM1: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM2: TTabSheet - Caption = 'LinearRead_AKM2' - ImageIndex = 1 - object Label4: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM2: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM2Click - end - object txtReadBytesAKM2: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - end - end - object tabLinearReadPK: TTabSheet - Caption = 'LinearRead_PK' - ImageIndex = 2 - object Label7: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesPK: TLabel - Left = 169 - Top = 250 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadPK: TButton - Left = 322 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadPKClick - end - object txtReadBytesPK: TEdit - Left = 250 - Top = 247 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadPK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearWrite: TTabSheet - Caption = 'LinearWrite' - ImageIndex = 3 - object lblLWLinearWrite: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWritten: TLabel - Left = 171 - Top = 244 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWrite: TButton - Left = 324 - Top = 228 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteClick - end - object txtBytesWritten: TEdit - Left = 256 - Top = 242 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWrite: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteChange - end - end - object tabLinearWriteAKM12: TTabSheet - Caption = 'LinearWrite_AKM1/AKM2' - ImageIndex = 4 - object pgLinearWriteAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 286 - ActivePage = tabLinearWriteAKM1 - Align = alClient - TabOrder = 0 - object tabLinearWriteAKM1: TTabSheet - Caption = 'LinearWrite_AKM1' - object lblLinearWriteAKM1: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM1: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM1: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM1: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM1Click - end - object txtBytesWrittenAKM1: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM1Change - end - end - object tabLinearWriteAKM2: TTabSheet - Caption = 'LinearWrite_AKM2' - ImageIndex = 1 - object lblLinearWriteAKM2: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM2: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM2Click - end - object txtBytesWrittenAKM2: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM2Change - end - end - end - end - object tabLinearWritePK: TTabSheet - Caption = 'LinearWrite_PK' - ImageIndex = 5 - object lblLinearWritePK: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenPK: TLabel - Left = 171 - Top = 249 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWritePK: TButton - Left = 323 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWritePKClick - end - object txtBytesWrittenPK: TEdit - Left = 256 - Top = 246 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWritePK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWritePKChange - end - end - end -end diff --git a/uFCoderAdvance/LinearReadWrite.~pas b/uFCoderAdvance/LinearReadWrite.~pas deleted file mode 100644 index 1e5f30a..0000000 --- a/uFCoderAdvance/LinearReadWrite.~pas +++ /dev/null @@ -1,689 +0,0 @@ -unit LinearReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, - Global,uFCoder1x, ComCtrls, ExtCtrls; - -type - TfrmLinearReadWrite = class(TForm) - lblHeader: TStaticText; - stbLinearReadWrite: TStatusBar; - pnlAuth: TPanel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - lblKeyIndex: TLabel; - cboKeyIndex: TComboBox; - lblPKKey: TLabel; - pgLinearReadWrite: TPageControl; - tabLinearRead: TTabSheet; - tabLinearReadAKM12: TTabSheet; - tabLinearReadPK: TTabSheet; - tabLinearWrite: TTabSheet; - tabLinearWriteAKM12: TTabSheet; - tabLinearWritePK: TTabSheet; - lblLinearRead: TLabel; - lblLReadLinearAddress: TLabel; - txtLRLinearAddress: TEdit; - lblLRDataLength: TLabel; - txtLRDataLength: TEdit; - btnLinearRead: TButton; - pgLinearReadAKM12: TPageControl; - tabLinearReadAKM1: TTabSheet; - tabLinearReadAKM2: TTabSheet; - lblLRAKM1LinearRead: TLabel; - lblLRAKM1LinearAddress: TLabel; - txtLRLinearAddressAKM1: TEdit; - lblLRAKM1DataLength: TLabel; - txtLRDataLengthAKM1: TEdit; - btnLinearReadAKM1: TButton; - Label4: TLabel; - lblLRLinearAddressAKM2: TLabel; - txtLRLinearAddressAKM2: TEdit; - txtLRDataLengthAKM2: TEdit; - btnLinearReadAKM2: TButton; - lblLRDataLengthAKM2: TLabel; - Label7: TLabel; - lblLRLinearAddressPK: TLabel; - txtLRLinearAddressPK: TEdit; - lblLRDataLengthPK: TLabel; - txtLRDataLengthPK: TEdit; - btnLinearReadPK: TButton; - lblLWLinearWrite: TLabel; - lblLWLinearAddress: TLabel; - txtLWLinearAddress: TEdit; - lblLWDataLength: TLabel; - txtLWDataLength: TEdit; - btnLinearWrite: TButton; - lblLinearWritePK: TLabel; - lblLWLinearAddressPK: TLabel; - txtLWLinearAddressPK: TEdit; - lblLWDataLengthPK: TLabel; - txtLWDataLengthPK: TEdit; - btnLinearWritePK: TButton; - pgLinearWriteAKM12: TPageControl; - tabLinearWriteAKM1: TTabSheet; - lblLinearWriteAKM1: TLabel; - lblLWLinearAddressAKM1: TLabel; - lblLWDataLengthAKM1: TLabel; - txtLWLinearAddressAKM1: TEdit; - txtLWDataLengthAKM1: TEdit; - btnLinearWriteAKM1: TButton; - tabLinearWriteAKM2: TTabSheet; - lblLinearWriteAKM2: TLabel; - lblLWLinearAddressAKM2: TLabel; - lblLWDataLengthAKM2: TLabel; - txtLWLinearAddressAKM2: TEdit; - txtLWDataLengthAKM2: TEdit; - btnLinearWriteAKM2: TButton; - lblBytesRead: TLabel; - txtReadBytes: TEdit; - lblReadBytesAKM1: TLabel; - txtReadBytesAKM1: TEdit; - lblReadBytesAKM2: TLabel; - txtReadBytesAKM2: TEdit; - lblReadBytesPK: TLabel; - txtReadBytesPK: TEdit; - lblBytesWritten: TLabel; - txtBytesWritten: TEdit; - lblBytesWrittenAKM1: TLabel; - txtBytesWrittenAKM1: TEdit; - lblBytesWrittenAKM2: TLabel; - txtBytesWrittenAKM2: TEdit; - lblBytesWrittenPK: TLabel; - txtBytesWrittenPK: TEdit; - txtLinearRead: TRichEdit; - txtLinearReadAKM1: TRichEdit; - txtLinearReadAKM2: TRichEdit; - txtLinearReadPK: TRichEdit; - txtLinearWrite: TRichEdit; - txtLinearWritePK: TRichEdit; - txtLinearWriteAKM1: TRichEdit; - txtLinearWriteAKM2: TRichEdit; - procedure FormCreate(Sender: TObject); - procedure btnLinearReadClick(Sender: TObject); - procedure btnLinearReadAKM1Click(Sender: TObject); - procedure btnLinearReadAKM2Click(Sender: TObject); - procedure btnLinearReadPKClick(Sender: TObject); - procedure btnLinearWriteClick(Sender: TObject); - procedure btnLinearWriteAKM1Click(Sender: TObject); - procedure btnLinearWriteAKM2Click(Sender: TObject); - procedure btnLinearWritePKClick(Sender: TObject); - procedure txtLinearWriteChange(Sender: TObject); - procedure txtLinearWriteAKM2Change(Sender: TObject); - procedure txtLinearWriteAKM1Change(Sender: TObject); - procedure txtLinearWritePKChange(Sender: TObject); - private - - procedure OnPKKeyExit(Sender:TObject); - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - public - { Public declarations } - end; - type - TByteArray=array of Byte; -var - frmLinearReadWrite: TfrmLinearReadWrite; - - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmLinearReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmLinearReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmLinearReadWrite.btnLinearReadClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLRDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLRLinearAddress.Text); - wDataLength :=StrToInt(txtLRDataLength.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - - iFResult:=LinearRead(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - txtLinearRead.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(Trim(txtLRLinearAddressAKM1.Text)); - wDataLength :=StrToInt(Trim(txtLRDataLengthAKM1.Text)); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM1(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtLinearReadAKM1.Text:=String(baReadData); - txtReadBytesAKM1.Text :=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM1.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLRDataLengthAKM2.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM2(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtReadBytesAKM2.Text :=IntToStr(wBytesRet); - txtLinearReadAKM2.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM2.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadPKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - bBr :Byte; -begin - try - if Trim(txtLRLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - New(pData); - New(pPKKey); - - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressPK.Text); - wDataLength :=StrToInt(txtLRDataLengthPK.Text); - - SetLength(baReadData,wDataLength); - pData :=PByte(@baReadData[0]); - pPKKEY:=@PKKey; - iFResult:=LinearRead_PK(pData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtLinearReadPK.Text:=String(baReadData); - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWrite.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWrite.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLWDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLWLinearAddress.Text); - wDataLength :=StrToInt(txtLWDataLength.Text); - pData :=PByte(txtLinearWrite.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM1.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM1.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM1.Text); - pData :=PByte(txtLinearWriteAKM1.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM1(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM2.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM2.Text); - pData :=PByte(txtLinearWriteAKM2.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM2(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWritePKClick(Sender: TObject); -var - pPKKEY, - pData :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLinearWritePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWritePK.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressPK.Text); - wDataLength :=StrToInt(txtLWDataLengthPK.Text); - pData :=PByte(txtLinearWritePK.Text); - pPKKEY :=@PKKey; - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_PK(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,pPKKEY); - if iFResult=DL_OK then - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKEY); - frmuFrAdvanced.FunctionStart:=false; - end; - end; - - - -procedure TfrmLinearReadWrite.txtLinearWriteChange(Sender: TObject); -begin - txtLWDataLength.Text:=IntToStr(Length(Trim(txtLinearWrite.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM2Change(Sender: TObject); -begin - txtLWDataLengthAKM2.Text:=IntToStr(Length(Trim(txtLinearWriteAKM2.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM1Change(Sender: TObject); -begin - txtLWDataLengthAKM1.Text:=IntToStr(Length(Trim(txtLinearWriteAKM1.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWritePKChange(Sender: TObject); -begin - txtLWDataLengthPK.Text:=IntToStr(Length(Trim(txtLinearWritePK.Text))); -end; - -end. diff --git a/uFCoderAdvance/SectorTrailerWrite.dcu b/uFCoderAdvance/SectorTrailerWrite.dcu deleted file mode 100644 index f8be859138c5d1c14a4d7b807ec6ebd59194e551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10541 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance/SectorTrailerWrite.dfm b/uFCoderAdvance/SectorTrailerWrite.dfm deleted file mode 100644 index bb49d1c..0000000 --- a/uFCoderAdvance/SectorTrailerWrite.dfm +++ /dev/null @@ -1,1117 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 379 - Top = 147 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 521 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 521 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 414 - Width = 521 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 521 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - object chkKeyADefault: TCheckBox - Left = 170 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Default' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = chkKeyADefaultClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 260 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 258 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - object chkKeyBDefault: TCheckBox - Left = 170 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Default' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = chkKeyBDefaultClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 521 - Height = 261 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - end -end diff --git a/uFCoderAdvance/SectorTrailerWrite.pas b/uFCoderAdvance/SectorTrailerWrite.pas deleted file mode 100644 index 1780c30..0000000 --- a/uFCoderAdvance/SectorTrailerWrite.pas +++ /dev/null @@ -1,244 +0,0 @@ -unit SectorTrailerWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyADefault: TCheckBox; - chkKeyBHex: TCheckBox; - chkKeyBDefault: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - private - res:DL_STATUS; - KeyA:array[0..5] of Byte; - KeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - UFRCoder; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',true,OnKeyAPress); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',true,OnKeyBPress); -end; - -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin - CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin - CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - KeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - KeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else begin - for br:=0 to 5 do begin - KeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - KeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - key_index:Byte; - auth_mode:Byte; - addressing_mode:Byte; - block_or_sector_address:Byte; - access_bits0:Byte; - access_bits1:Byte; - access_bits2:Byte; - trailer_access_bits:Byte; - trailer_Byte_9:Byte; - PKeyA:PByte; - PKeyB:PByte; -begin - - PKeyA:=nil; - PKeyB:=nil; - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then begin - MessageDlg('You must enter BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then begin - MessageDlg('You must enter TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - key_index:=cboKeyIndex.ItemIndex; - if rbAUTH1A.Checked then auth_mode:=MIFARE_AUTHENT1A else auth_mode:=MIFARE_AUTHENT1B; - - addressing_mode:=cboAddressingMode.ItemIndex; - block_or_sector_address:=StrToInt(txtBlockSectorAddress.Text); - access_bits0:=cboAccessBits0.ItemIndex; - access_bits1:=cboAccessBits1.ItemIndex; - access_bits2:=cboAccessBits2.ItemIndex; - trailer_access_bits:=cboTrailerAccessBits.ItemIndex; - trailer_Byte_9:=StrToInt(txtTrailerByte9.text); - WriteKeyAB; - PKeyA:=@KeyA; - PKeyB:=@KeyB; - res:=SectorTrailerWrite(addressing_mode,block_or_sector_address,PKeyA,access_bits0,access_bits1, - access_bits2,trailer_access_bits,trailer_Byte_9,PKeyB,auth_mode,key_index); - - if res=DL_OK then begin - ReaderUISignal(RES_OK_LIGHT,RES_OK_SOUND); - Status_Bar_Error_Reporting(stbSectorTrailerWrite,res); - end - else - begin - ReaderUiSignal(ERROR_LIGHT,ERROR_SOUND); - Status_Bar_Error_Reporting(stbSectorTrailerWrite,res); - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; -end; - -end. diff --git a/uFCoderAdvance/SectorTrailersWrite.dcu b/uFCoderAdvance/SectorTrailersWrite.dcu deleted file mode 100644 index 6879d87f9a84097a5fda818c4ba3d850f4886297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20117 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance/SectorTrailersWrite.dfm b/uFCoderAdvance/SectorTrailersWrite.dfm deleted file mode 100644 index 26b053b..0000000 --- a/uFCoderAdvance/SectorTrailersWrite.dfm +++ /dev/null @@ -1,1100 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 389 - Top = 154 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 402 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 513 - Height = 249 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM1Click - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM2Click - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWritePKClick - end - end - end -end diff --git a/uFCoderAdvance/SectorTrailersWrite.pas b/uFCoderAdvance/SectorTrailersWrite.pas deleted file mode 100644 index 17e935f..0000000 --- a/uFCoderAdvance/SectorTrailersWrite.pas +++ /dev/null @@ -1,520 +0,0 @@ -unit SectorTrailersWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyBHex: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - procedure btnSectorTrailerWriteAKM1Click(Sender: TObject); - procedure btnSectorTrailerWriteAKM2Click(Sender: TObject); - procedure btnSectorTrailerWritePKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmSectorTrailerWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; -procedure TfrmSectorTrailerWrite.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmSectorTrailerWrite.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - - bAddressingMode :=cboAddressingMode.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddress.Text); - bAccessBits0 :=cboAccessBits0.ItemIndex; - bAccessBits1 :=cboAccessBits1.ItemIndex; - bAccessBits2 :=cboAccessBits2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9.text); - - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM1.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM1.Text); - bAccessBits0 :=cboAccessBits0AKM1.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM1.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM1.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM1.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM1(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM2(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9PK.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=SectorTrailerWrite_PK(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode, - pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA :=nil; - pKeyB :=nil; - pPKkey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - - - - -end. diff --git a/uFCoderAdvance/SectorTrailersWrite.~ddp b/uFCoderAdvance/SectorTrailersWrite.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/SectorTrailersWrite.~dfm b/uFCoderAdvance/SectorTrailersWrite.~dfm deleted file mode 100644 index 1503392..0000000 --- a/uFCoderAdvance/SectorTrailersWrite.~dfm +++ /dev/null @@ -1,1100 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 389 - Top = 154 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 403 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 513 - Height = 250 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM1Click - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM2Click - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWritePKClick - end - end - end -end diff --git a/uFCoderAdvance/SectorTrailersWrite.~pas b/uFCoderAdvance/SectorTrailersWrite.~pas deleted file mode 100644 index d5021db..0000000 --- a/uFCoderAdvance/SectorTrailersWrite.~pas +++ /dev/null @@ -1,520 +0,0 @@ -unit SectorTrailersWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyBHex: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - procedure btnSectorTrailerWriteAKM1Click(Sender: TObject); - procedure btnSectorTrailerWriteAKM2Click(Sender: TObject); - procedure btnSectorTrailerWritePKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmSectorTrailerWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; -procedure TfrmSectorTrailerWrite.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmSectorTrailerWrite.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - - bAddressingMode :=cboAddressingMode.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddress.Text); - bAccessBits0 :=cboAccessBits0.ItemIndex; - bAccessBits1 :=cboAccessBits1.ItemIndex; - bAccessBits2 :=cboAccessBits2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9.text); - - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM1.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM1.Text); - bAccessBits0 :=cboAccessBits0AKM1.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM1.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM1.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM1.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM1(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM2(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9PK.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=SectorTrailerWrite_PK(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode, - pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA :=nil; - pKeyB :=nil; - pPKkey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - - - - -end. diff --git a/uFCoderAdvance/ValueBlock.dcu b/uFCoderAdvance/ValueBlock.dcu deleted file mode 100644 index 3b197f6f921458d9bd4ff72a41f1ecd7149b064b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22405 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlock.dfm b/uFCoderAdvance/ValueBlock.dfm deleted file mode 100644 index 827585c..0000000 --- a/uFCoderAdvance/ValueBlock.dfm +++ /dev/null @@ -1,1093 +0,0 @@ -object frmValueBlockReadWrite: TfrmValueBlockReadWrite - Left = 531 - Top = 222 - Width = 529 - Height = 420 - Caption = 'ValueBlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockReadWrite: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 305 - ActivePage = tavValueBlockRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockRead: TTabSheet - Caption = 'ValueBlock Read' - object pnlValueBlockRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBRValueAddress: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadData: TLabel - Left = 9 - Top = 86 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddress: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBRValueAddress: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 0 - end - object txtVBRReadValue: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockValueRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockValueReadClick - end - object txtVBRBlockAddress: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBRValueAddressAKM1: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM1: TLabel - Left = 9 - Top = 86 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM1: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM1: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM1: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM1: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM1Click - end - object txtVBRBlockAddressAKM1: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBRValueAddressAKM2: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM2: TLabel - Left = 9 - Top = 90 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM2: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM2: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM2: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM2: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM2Click - end - object txtVBRBlockAddressAKM2: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBRValueAddressPK: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValuePK: TLabel - Left = 9 - Top = 90 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressPK: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressPK: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValuePK: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadPK: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadPKClick - end - object txtVBRBlockAddressPK: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - end - object tabValueBlockWrite: TTabSheet - Caption = 'ValueBlock Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBWWriteData: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddress: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddress: TLabel - Left = 9 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 127 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteData: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWrite: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteClick - end - object txtVBWBlockAddress: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddress: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBWWriteDataAKM1: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM1: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM1: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM1: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM1Click - end - object txtVBWBlockAddressAKM1: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM1: TEdit - Left = 114 - Top = 94 - Width = 37 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBWWriteDataAKM2: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWAKM2: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM2: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM2: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 55 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM2Click - end - object txtVBWBlockAddressAKM2: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM2: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label9: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressPK: TLabel - Left = 9 - Top = 100 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWPK: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataPK: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWritePK: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWritePKClick - end - object txtVBWBlockAddressPK: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressPK: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlock.pas b/uFCoderAdvance/ValueBlock.pas deleted file mode 100644 index a8e6919..0000000 --- a/uFCoderAdvance/ValueBlock.pas +++ /dev/null @@ -1,599 +0,0 @@ -unit ValueBlock; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, - Forms,Dialogs,Global,uFCoder, - ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockReadWrite: TStatusBar; - pgValueBlockReadWrite: TPageControl; - tavValueBlockRead: TTabSheet; - pnlValueBlockRead: TPanel; - lblVBRValueAddress: TLabel; - lblVBRReadData: TLabel; - lblVBRBlockAddress: TLabel; - lblVBRead: TStaticText; - txtVBRValueAddress: TEdit; - txtVBRReadValue: TEdit; - btnBlockValueRead: TButton; - txtVBRBlockAddress: TEdit; - pnlValueBlockReadAKM1: TPanel; - lblVBRAKM1: TStaticText; - pnlValueBlockReadAKM2: TPanel; - lblVBRAKM2: TStaticText; - pnlValueBlockReadPK: TPanel; - lblBRPK: TStaticText; - tabValueBlockWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblVBWWriteData: TLabel; - lblVBWBlockAddress: TLabel; - lblBISWBlockWrite: TStaticText; - txtVBWWriteData: TEdit; - btnValueBlockWrite: TButton; - txtVBWBlockAddress: TEdit; - pnlBlockWriteAKM1: TPanel; - lblVBWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblVBWAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblVBWPK: TStaticText; - lblVBRValueAddressAKM1: TLabel; - lblVBRReadValueAKM1: TLabel; - lblVBRBlockAddressAKM1: TLabel; - txtVBRValueAddressAKM1: TEdit; - txtVBRReadValueAKM1: TEdit; - btnValueBlockReadAKM1: TButton; - txtVBRBlockAddressAKM1: TEdit; - lblVBRValueAddressAKM2: TLabel; - lblVBRReadValueAKM2: TLabel; - lblVBRBlockAddressAKM2: TLabel; - txtVBRValueAddressAKM2: TEdit; - txtVBRReadValueAKM2: TEdit; - btnValueBlockReadAKM2: TButton; - txtVBRBlockAddressAKM2: TEdit; - lblVBRValueAddressPK: TLabel; - lblVBRReadValuePK: TLabel; - lblVBRBlockAddressPK: TLabel; - txtVBRValueAddressPK: TEdit; - txtVBRReadValuePK: TEdit; - btnValueBlockReadPK: TButton; - txtVBRBlockAddressPK: TEdit; - lblVBWValueAddress: TLabel; - txtVBWValueAddress: TEdit; - lblVBWWriteDataAKM1: TLabel; - lblVBWBlockAddressAKM1: TLabel; - txtVBWWriteDataAKM1: TEdit; - btnValueBlockWriteAKM1: TButton; - txtVBWBlockAddressAKM1: TEdit; - lblVBWValueAddressAKM1: TLabel; - txtVBWValueAddressAKM1: TEdit; - lblVBWWriteDataAKM2: TLabel; - lblVBWBlockAddressAKM2: TLabel; - txtVBWWriteDataAKM2: TEdit; - btnValueBlockWriteAKM2: TButton; - txtVBWBlockAddressAKM2: TEdit; - txtVBWValueAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - Label9: TLabel; - txtVBWWriteDataPK: TEdit; - btnValueBlockWritePK: TButton; - txtVBWBlockAddressPK: TEdit; - lblVBWValueAddressPK: TLabel; - txtVBWValueAddressPK: TEdit; - lblVBWValueAddressAKM2: TLabel; - procedure FormCreate(Sender: TObject); - procedure btnBlockValueReadClick(Sender: TObject); - procedure btnValueBlockReadAKM1Click(Sender: TObject); - procedure btnValueBlockReadAKM2Click(Sender: TObject); - procedure btnValueBlockReadPKClick(Sender: TObject); - procedure btnValueBlockWriteClick(Sender: TObject); - procedure btnValueBlockWriteAKM1Click(Sender: TObject); - procedure btnValueBlockWriteAKM2Click(Sender: TObject); - procedure btnValueBlockWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockReadWrite: TfrmValueBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockReadWrite } - -procedure TfrmValueBlockReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockReadWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockReadWrite.btnBlockValueReadClick(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead(pData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtVBRValueAddress.Text:=IntToStr(bValueAddress); - txtVBRReadValue.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM1Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressAKM1.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM1(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM1.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM1.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM2Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM2(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM2.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM2.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - pData :PLongint; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressPK.Text); - pData :=@iValueData; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - - iFResult:=ValueBlockRead_PK(pData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtVBRValueAddressPK.Text:=IntToStr(bValueAddress); - txtVBRReadValuePK.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteClick(Sender: TObject); -var - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddress.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBWWriteData.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBWValueAddress.Text); - - iFResult:=ValueBlockWrite(iValueData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM1Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM1.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM1.Text); - - iFResult:=ValueBlockWrite_AKM1(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM2Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM2.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM2.Text); - - iFResult:=ValueBlockWrite_AKM2(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressPK.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataPK.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBWValueAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockWrite_PK(iValueData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance/ValueBlock.~ddp b/uFCoderAdvance/ValueBlock.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlock.~dfm b/uFCoderAdvance/ValueBlock.~dfm deleted file mode 100644 index 0b87065..0000000 --- a/uFCoderAdvance/ValueBlock.~dfm +++ /dev/null @@ -1,1093 +0,0 @@ -object frmValueBlockReadWrite: TfrmValueBlockReadWrite - Left = 531 - Top = 222 - Width = 529 - Height = 420 - Caption = 'ValueBlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockReadWrite: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 306 - ActivePage = tavValueBlockRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockRead: TTabSheet - Caption = 'ValueBlock Read' - object pnlValueBlockRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBRValueAddress: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadData: TLabel - Left = 9 - Top = 86 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddress: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBRValueAddress: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 0 - end - object txtVBRReadValue: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockValueRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockValueReadClick - end - object txtVBRBlockAddress: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBRValueAddressAKM1: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM1: TLabel - Left = 9 - Top = 86 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM1: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM1: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM1: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM1: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM1Click - end - object txtVBRBlockAddressAKM1: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBRValueAddressAKM2: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM2: TLabel - Left = 9 - Top = 90 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM2: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM2: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM2: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM2: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM2Click - end - object txtVBRBlockAddressAKM2: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBRValueAddressPK: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValuePK: TLabel - Left = 9 - Top = 90 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressPK: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressPK: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValuePK: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadPK: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadPKClick - end - object txtVBRBlockAddressPK: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - end - object tabValueBlockWrite: TTabSheet - Caption = 'ValueBlock Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBWWriteData: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddress: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddress: TLabel - Left = 9 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 127 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteData: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWrite: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteClick - end - object txtVBWBlockAddress: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddress: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBWWriteDataAKM1: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM1: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM1: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM1: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM1Click - end - object txtVBWBlockAddressAKM1: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM1: TEdit - Left = 114 - Top = 94 - Width = 37 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBWWriteDataAKM2: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWAKM2: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM2: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM2: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 55 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM2Click - end - object txtVBWBlockAddressAKM2: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM2: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label9: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressPK: TLabel - Left = 9 - Top = 100 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWPK: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataPK: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWritePK: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWritePKClick - end - object txtVBWBlockAddressPK: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressPK: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlock.~pas b/uFCoderAdvance/ValueBlock.~pas deleted file mode 100644 index 68ef347..0000000 --- a/uFCoderAdvance/ValueBlock.~pas +++ /dev/null @@ -1,598 +0,0 @@ -unit ValueBlock; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,Global,uFCoder1x, - ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockReadWrite: TStatusBar; - pgValueBlockReadWrite: TPageControl; - tavValueBlockRead: TTabSheet; - pnlValueBlockRead: TPanel; - lblVBRValueAddress: TLabel; - lblVBRReadData: TLabel; - lblVBRBlockAddress: TLabel; - lblVBRead: TStaticText; - txtVBRValueAddress: TEdit; - txtVBRReadValue: TEdit; - btnBlockValueRead: TButton; - txtVBRBlockAddress: TEdit; - pnlValueBlockReadAKM1: TPanel; - lblVBRAKM1: TStaticText; - pnlValueBlockReadAKM2: TPanel; - lblVBRAKM2: TStaticText; - pnlValueBlockReadPK: TPanel; - lblBRPK: TStaticText; - tabValueBlockWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblVBWWriteData: TLabel; - lblVBWBlockAddress: TLabel; - lblBISWBlockWrite: TStaticText; - txtVBWWriteData: TEdit; - btnValueBlockWrite: TButton; - txtVBWBlockAddress: TEdit; - pnlBlockWriteAKM1: TPanel; - lblVBWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblVBWAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblVBWPK: TStaticText; - lblVBRValueAddressAKM1: TLabel; - lblVBRReadValueAKM1: TLabel; - lblVBRBlockAddressAKM1: TLabel; - txtVBRValueAddressAKM1: TEdit; - txtVBRReadValueAKM1: TEdit; - btnValueBlockReadAKM1: TButton; - txtVBRBlockAddressAKM1: TEdit; - lblVBRValueAddressAKM2: TLabel; - lblVBRReadValueAKM2: TLabel; - lblVBRBlockAddressAKM2: TLabel; - txtVBRValueAddressAKM2: TEdit; - txtVBRReadValueAKM2: TEdit; - btnValueBlockReadAKM2: TButton; - txtVBRBlockAddressAKM2: TEdit; - lblVBRValueAddressPK: TLabel; - lblVBRReadValuePK: TLabel; - lblVBRBlockAddressPK: TLabel; - txtVBRValueAddressPK: TEdit; - txtVBRReadValuePK: TEdit; - btnValueBlockReadPK: TButton; - txtVBRBlockAddressPK: TEdit; - lblVBWValueAddress: TLabel; - txtVBWValueAddress: TEdit; - lblVBWWriteDataAKM1: TLabel; - lblVBWBlockAddressAKM1: TLabel; - txtVBWWriteDataAKM1: TEdit; - btnValueBlockWriteAKM1: TButton; - txtVBWBlockAddressAKM1: TEdit; - lblVBWValueAddressAKM1: TLabel; - txtVBWValueAddressAKM1: TEdit; - lblVBWWriteDataAKM2: TLabel; - lblVBWBlockAddressAKM2: TLabel; - txtVBWWriteDataAKM2: TEdit; - btnValueBlockWriteAKM2: TButton; - txtVBWBlockAddressAKM2: TEdit; - txtVBWValueAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - Label9: TLabel; - txtVBWWriteDataPK: TEdit; - btnValueBlockWritePK: TButton; - txtVBWBlockAddressPK: TEdit; - lblVBWValueAddressPK: TLabel; - txtVBWValueAddressPK: TEdit; - lblVBWValueAddressAKM2: TLabel; - procedure FormCreate(Sender: TObject); - procedure btnBlockValueReadClick(Sender: TObject); - procedure btnValueBlockReadAKM1Click(Sender: TObject); - procedure btnValueBlockReadAKM2Click(Sender: TObject); - procedure btnValueBlockReadPKClick(Sender: TObject); - procedure btnValueBlockWriteClick(Sender: TObject); - procedure btnValueBlockWriteAKM1Click(Sender: TObject); - procedure btnValueBlockWriteAKM2Click(Sender: TObject); - procedure btnValueBlockWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockReadWrite: TfrmValueBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockReadWrite } - -procedure TfrmValueBlockReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockReadWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockReadWrite.btnBlockValueReadClick(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead(pData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtVBRValueAddress.Text:=IntToStr(bValueAddress); - txtVBRReadValue.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM1Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressAKM1.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM1(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM1.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM1.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM2Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM2(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM2.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM2.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - pData :PLongint; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressPK.Text); - pData :=@iValueData; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - - iFResult:=ValueBlockRead_PK(pData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtVBRValueAddressPK.Text:=IntToStr(bValueAddress); - txtVBRReadValuePK.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteClick(Sender: TObject); -var - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddress.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBWWriteData.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBWValueAddress.Text); - - iFResult:=ValueBlockWrite(iValueData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM1Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM1.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM1.Text); - - iFResult:=ValueBlockWrite_AKM1(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM2Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM2.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM2.Text); - - iFResult:=ValueBlockWrite_AKM2(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressPK.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataPK.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBWValueAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockWrite_PK(iValueData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance/ValueBlockInSector.dcu b/uFCoderAdvance/ValueBlockInSector.dcu deleted file mode 100644 index 47d8e8693ed213841a181e917b801c31aa237b06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26323 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlockInSector.dfm b/uFCoderAdvance/ValueBlockInSector.dfm deleted file mode 100644 index 6cbb651..0000000 --- a/uFCoderAdvance/ValueBlockInSector.dfm +++ /dev/null @@ -1,1265 +0,0 @@ -object frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite - Left = 519 - Top = 130 - Width = 527 - Height = 418 - Caption = 'ValueBlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 511 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read/Write (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 511 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSector: TStatusBar - Left = 0 - Top = 360 - Width = 511 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSector: TPageControl - Left = 0 - Top = 57 - Width = 511 - Height = 303 - ActivePage = tabValueBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorRead: TTabSheet - Caption = 'ValueBlockInSector Read' - object pnlValueBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadData: TLabel - Left = 8 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddress: TLabel - Left = 156 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadData: TEdit - Left = 6 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadClick - end - object txtVBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddress: TEdit - Left = 205 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadDataAKM1: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddressAKM1: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadDataAKM1: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM1Click - end - object txtVBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddressAKM1: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataAKM2: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressAKM2: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM2Click - end - object txtVBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataAKM2: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressAKM2: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataPK: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressPK: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadPKClick - end - object txtVBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataPK: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressPK: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - end - object tabValueBlockInSectorWrite: TTabSheet - Caption = 'ValueBlockInSector Write' - ImageIndex = 1 - object pnlVBISBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM1: TLabel - Left = 10 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM1: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM1: TLabel - Left = 156 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 234 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM1: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM1Click - end - object txtVBISWBlockAddressAKM1: TEdit - Left = 103 - Top = 55 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM1: TEdit - Left = 9 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM1: TEdit - Left = 103 - Top = 29 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM1: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 61 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM2: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM2: TLabel - Left = 9 - Top = 34 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM2: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 234 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM2: TButton - Left = 157 - Top = 28 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM2Click - end - object txtVBISWBlockAddressAKM2: TEdit - Left = 104 - Top = 56 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM2: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM2: TEdit - Left = 104 - Top = 30 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM2: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISWBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataPK: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddressPK: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddressPK: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 212 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWritePK: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWritePKClick - end - object txtVBISWBlockAddressPK: TEdit - Left = 102 - Top = 55 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataPK: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddressPK: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddressPK: TEdit - Left = 102 - Top = 29 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - object pnlVBISBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISWBlockAddress: TLabel - Left = 8 - Top = 62 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteData: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddress: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddress: TLabel - Left = 9 - Top = 36 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 189 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWrite: TButton - Left = 157 - Top = 30 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteClick - end - object txtVBISWBlockAddress: TEdit - Left = 105 - Top = 57 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteData: TEdit - Left = 8 - Top = 102 - Width = 144 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddress: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddress: TEdit - Left = 105 - Top = 31 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlockInSector.pas b/uFCoderAdvance/ValueBlockInSector.pas deleted file mode 100644 index 29bfb28..0000000 --- a/uFCoderAdvance/ValueBlockInSector.pas +++ /dev/null @@ -1,670 +0,0 @@ -unit ValueBlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockInSectorReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSector: TStatusBar; - pgValueBlockInSector: TPageControl; - tabValueBlockInSectorRead: TTabSheet; - pnlValueBlockInSectorRead: TPanel; - lblVBISRSectorAddress: TLabel; - lblVBISRReadData: TLabel; - lblVBISRBlockAddress: TLabel; - lblVBISRead: TStaticText; - txtVBISRSectorAddress: TEdit; - txtVBISRReadData: TEdit; - btnValueBlockInSectorRead: TButton; - txtVBISRBlockAddress: TEdit; - pnlValueBlockInSectorReadAKM1: TPanel; - lblVBISRSectorAddressAKM1: TLabel; - lblVBISRReadDataAKM1: TLabel; - lblVBISRBlockAddressAKM1: TLabel; - lblVBISReadAKM1: TStaticText; - txtVBISRSectorAddressAKM1: TEdit; - txtVBISRReadDataAKM1: TEdit; - btnValueBlockInSectorReadAKM1: TButton; - txtVBISRBlockAddressAKM1: TEdit; - pnlValueBlockInSectorReadAKM2: TPanel; - lblVBISRSectorAddressAKM2: TLabel; - lblVBISRBlockAddressAKM2: TLabel; - lblVBISReadAKM2: TStaticText; - txtVBISRSectorAddressAKM2: TEdit; - btnValueBlockInSectorReadAKM2: TButton; - txtVBISRBlockAddressAKM2: TEdit; - pnlValueBlockReadPK: TPanel; - lblVBISRSectorAddressPK: TLabel; - lblVBISRBlockAddressPK: TLabel; - lblVBISReadPK: TStaticText; - txtVBISRSectorAddressPK: TEdit; - btnValueBlockInSectorReadPK: TButton; - txtVBISRBlockAddressPK: TEdit; - tabValueBlockInSectorWrite: TTabSheet; - pnlVBISBlockWriteAKM1: TPanel; - lblVBISWBlockWriteAKM1: TStaticText; - pnlVBISBlockWriteAKM2: TPanel; - lblVBISWBlockWriteAKM2: TStaticText; - pnlVBISBlockWritePK: TPanel; - lblVBISWBlockWritePK: TStaticText; - lblVBISRValueAddress: TLabel; - txtVBISRValueAddress: TEdit; - lblVBISRValueAddressAKM1: TLabel; - txtVBISRValueAddressAKM1: TEdit; - lblVBISRReadDataAKM2: TLabel; - txtVBISRReadDataAKM2: TEdit; - lblVBISRValueAddressAKM2: TLabel; - txtVBISRValueAddressAKM2: TEdit; - lblVBISRReadDataPK: TLabel; - txtVBISRReadDataPK: TEdit; - lblVBISRValueAddressPK: TLabel; - txtVBISRValueAddressPK: TEdit; - lblVBISWBlockAddressAKM1: TLabel; - btnValueBlockInSectorWriteAKM1: TButton; - txtVBISWBlockAddressAKM1: TEdit; - lblVBISWBlockAddressAKM2: TLabel; - btnValueBlockInSectorWriteAKM2: TButton; - txtVBISWBlockAddressAKM2: TEdit; - lblVBISWBlockAddressPK: TLabel; - btnValueBlockInSectorWritePK: TButton; - txtVBISWBlockAddressPK: TEdit; - pnlVBISBlockWrite: TPanel; - lblVBISWBlockAddress: TLabel; - lblVBISWBlockWrite: TStaticText; - btnValueBlockInSectorWrite: TButton; - txtVBISWBlockAddress: TEdit; - lblVBISWWriteData: TLabel; - txtVBISWWriteData: TEdit; - lblBISRWValueAddress: TLabel; - txtVBISWValueAddress: TEdit; - lblVBISWWriteDataAKM1: TLabel; - txtVBISWWriteDataAKM1: TEdit; - lblVBISWSectorAddress: TLabel; - txtVBISWSectorAddress: TEdit; - lblVBISWSectorAddressAKM1: TLabel; - txtVBISWSectorAddressAKM1: TEdit; - lblBISRWValueAddressAKM1: TLabel; - txtVBISWValueAddressAKM1: TEdit; - lblVBISWWriteDataAKM2: TLabel; - txtVBISWWriteDataAKM2: TEdit; - lblVBISWSectorAddressAKM2: TLabel; - txtVBISWSectorAddressAKM2: TEdit; - lblBISRWValueAddressAKM2: TLabel; - txtVBISWValueAddressAKM2: TEdit; - lblVBISWWriteDataPK: TLabel; - txtVBISWWriteDataPK: TEdit; - lblBISRWValueAddressPK: TLabel; - txtVBISWValueAddressPK: TEdit; - lblVBISWSectorAddressPK: TLabel; - txtVBISWSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorReadClick(Sender: TObject); - procedure btnValueBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorReadPKClick(Sender: TObject); - procedure btnValueBlockInSectorWriteClick(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorWritePKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockInSectorReadWrite } - -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject; - var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadClick(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtVBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddress.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtVBISRReadData.Text :=IntToStr(iValueData); - txtVBISRValueAddress.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM1Click(Sender: TObject); -var - PData :PLongint; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM1.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM1(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM1.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM1.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM2Click(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM2.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM2(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM2.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM2.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - PData :PLongint; - pPKKey :PByte; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress, - bBr :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - pData :=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_PK(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtVBISRReadDataPK.Text :=IntToStr(iValueData); - txtVBISRValueAddressPK.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - - if Trim(txtVBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddress.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBISWWriteData.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBISWValueAddress.Text); - - iFResult:=ValueBlockInSectorWrite(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM1.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM1.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM1.Text); - - iFResult:=ValueBlockInSectorWrite_AKM1(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM2.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM2.Text); - - iFResult:=ValueBlockInSectorWrite_AKM2(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataPK.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorWrite_PK(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pPKKey :=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance/ValueBlockInSector.~ddp b/uFCoderAdvance/ValueBlockInSector.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlockInSector.~dfm b/uFCoderAdvance/ValueBlockInSector.~dfm deleted file mode 100644 index 5951382..0000000 --- a/uFCoderAdvance/ValueBlockInSector.~dfm +++ /dev/null @@ -1,1265 +0,0 @@ -object frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite - Left = 519 - Top = 130 - Width = 527 - Height = 418 - Caption = 'ValueBlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 511 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read/Write (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 511 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSector: TStatusBar - Left = 0 - Top = 361 - Width = 511 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSector: TPageControl - Left = 0 - Top = 57 - Width = 511 - Height = 304 - ActivePage = tabValueBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorRead: TTabSheet - Caption = 'ValueBlockInSector Read' - object pnlValueBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadData: TLabel - Left = 8 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddress: TLabel - Left = 156 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadData: TEdit - Left = 6 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadClick - end - object txtVBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddress: TEdit - Left = 205 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadDataAKM1: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddressAKM1: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadDataAKM1: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM1Click - end - object txtVBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddressAKM1: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataAKM2: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressAKM2: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM2Click - end - object txtVBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataAKM2: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressAKM2: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataPK: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressPK: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadPKClick - end - object txtVBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataPK: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressPK: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - end - object tabValueBlockInSectorWrite: TTabSheet - Caption = 'ValueBlockInSector Write' - ImageIndex = 1 - object pnlVBISBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM1: TLabel - Left = 10 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM1: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM1: TLabel - Left = 156 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM1: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM1Click - end - object txtVBISWBlockAddressAKM1: TEdit - Left = 103 - Top = 55 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM1: TEdit - Left = 9 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM1: TEdit - Left = 103 - Top = 29 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM1: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 61 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM2: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM2: TLabel - Left = 9 - Top = 34 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM2: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM2: TButton - Left = 157 - Top = 28 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM2Click - end - object txtVBISWBlockAddressAKM2: TEdit - Left = 104 - Top = 56 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM2: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM2: TEdit - Left = 104 - Top = 30 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM2: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISWBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataPK: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddressPK: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddressPK: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWritePK: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWritePKClick - end - object txtVBISWBlockAddressPK: TEdit - Left = 102 - Top = 55 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataPK: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddressPK: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddressPK: TEdit - Left = 102 - Top = 29 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - object pnlVBISBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISWBlockAddress: TLabel - Left = 8 - Top = 62 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteData: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddress: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddress: TLabel - Left = 9 - Top = 36 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWrite: TButton - Left = 157 - Top = 30 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteClick - end - object txtVBISWBlockAddress: TEdit - Left = 105 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteData: TEdit - Left = 8 - Top = 102 - Width = 144 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddress: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddress: TEdit - Left = 105 - Top = 31 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlockInSector.~pas b/uFCoderAdvance/ValueBlockInSector.~pas deleted file mode 100644 index 43d96e1..0000000 --- a/uFCoderAdvance/ValueBlockInSector.~pas +++ /dev/null @@ -1,670 +0,0 @@ -unit ValueBlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder1x,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockInSectorReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSector: TStatusBar; - pgValueBlockInSector: TPageControl; - tabValueBlockInSectorRead: TTabSheet; - pnlValueBlockInSectorRead: TPanel; - lblVBISRSectorAddress: TLabel; - lblVBISRReadData: TLabel; - lblVBISRBlockAddress: TLabel; - lblVBISRead: TStaticText; - txtVBISRSectorAddress: TEdit; - txtVBISRReadData: TEdit; - btnValueBlockInSectorRead: TButton; - txtVBISRBlockAddress: TEdit; - pnlValueBlockInSectorReadAKM1: TPanel; - lblVBISRSectorAddressAKM1: TLabel; - lblVBISRReadDataAKM1: TLabel; - lblVBISRBlockAddressAKM1: TLabel; - lblVBISReadAKM1: TStaticText; - txtVBISRSectorAddressAKM1: TEdit; - txtVBISRReadDataAKM1: TEdit; - btnValueBlockInSectorReadAKM1: TButton; - txtVBISRBlockAddressAKM1: TEdit; - pnlValueBlockInSectorReadAKM2: TPanel; - lblVBISRSectorAddressAKM2: TLabel; - lblVBISRBlockAddressAKM2: TLabel; - lblVBISReadAKM2: TStaticText; - txtVBISRSectorAddressAKM2: TEdit; - btnValueBlockInSectorReadAKM2: TButton; - txtVBISRBlockAddressAKM2: TEdit; - pnlValueBlockReadPK: TPanel; - lblVBISRSectorAddressPK: TLabel; - lblVBISRBlockAddressPK: TLabel; - lblVBISReadPK: TStaticText; - txtVBISRSectorAddressPK: TEdit; - btnValueBlockInSectorReadPK: TButton; - txtVBISRBlockAddressPK: TEdit; - tabValueBlockInSectorWrite: TTabSheet; - pnlVBISBlockWriteAKM1: TPanel; - lblVBISWBlockWriteAKM1: TStaticText; - pnlVBISBlockWriteAKM2: TPanel; - lblVBISWBlockWriteAKM2: TStaticText; - pnlVBISBlockWritePK: TPanel; - lblVBISWBlockWritePK: TStaticText; - lblVBISRValueAddress: TLabel; - txtVBISRValueAddress: TEdit; - lblVBISRValueAddressAKM1: TLabel; - txtVBISRValueAddressAKM1: TEdit; - lblVBISRReadDataAKM2: TLabel; - txtVBISRReadDataAKM2: TEdit; - lblVBISRValueAddressAKM2: TLabel; - txtVBISRValueAddressAKM2: TEdit; - lblVBISRReadDataPK: TLabel; - txtVBISRReadDataPK: TEdit; - lblVBISRValueAddressPK: TLabel; - txtVBISRValueAddressPK: TEdit; - lblVBISWBlockAddressAKM1: TLabel; - btnValueBlockInSectorWriteAKM1: TButton; - txtVBISWBlockAddressAKM1: TEdit; - lblVBISWBlockAddressAKM2: TLabel; - btnValueBlockInSectorWriteAKM2: TButton; - txtVBISWBlockAddressAKM2: TEdit; - lblVBISWBlockAddressPK: TLabel; - btnValueBlockInSectorWritePK: TButton; - txtVBISWBlockAddressPK: TEdit; - pnlVBISBlockWrite: TPanel; - lblVBISWBlockAddress: TLabel; - lblVBISWBlockWrite: TStaticText; - btnValueBlockInSectorWrite: TButton; - txtVBISWBlockAddress: TEdit; - lblVBISWWriteData: TLabel; - txtVBISWWriteData: TEdit; - lblBISRWValueAddress: TLabel; - txtVBISWValueAddress: TEdit; - lblVBISWWriteDataAKM1: TLabel; - txtVBISWWriteDataAKM1: TEdit; - lblVBISWSectorAddress: TLabel; - txtVBISWSectorAddress: TEdit; - lblVBISWSectorAddressAKM1: TLabel; - txtVBISWSectorAddressAKM1: TEdit; - lblBISRWValueAddressAKM1: TLabel; - txtVBISWValueAddressAKM1: TEdit; - lblVBISWWriteDataAKM2: TLabel; - txtVBISWWriteDataAKM2: TEdit; - lblVBISWSectorAddressAKM2: TLabel; - txtVBISWSectorAddressAKM2: TEdit; - lblBISRWValueAddressAKM2: TLabel; - txtVBISWValueAddressAKM2: TEdit; - lblVBISWWriteDataPK: TLabel; - txtVBISWWriteDataPK: TEdit; - lblBISRWValueAddressPK: TLabel; - txtVBISWValueAddressPK: TEdit; - lblVBISWSectorAddressPK: TLabel; - txtVBISWSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorReadClick(Sender: TObject); - procedure btnValueBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorReadPKClick(Sender: TObject); - procedure btnValueBlockInSectorWriteClick(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorWritePKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockInSectorReadWrite } - -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject; - var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadClick(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtVBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddress.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtVBISRReadData.Text :=IntToStr(iValueData); - txtVBISRValueAddress.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM1Click(Sender: TObject); -var - PData :PLongint; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM1.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM1(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM1.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM1.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM2Click(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM2.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM2(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM2.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM2.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - PData :PLongint; - pPKKey :PByte; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress, - bBr :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - pData :=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_PK(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtVBISRReadDataPK.Text :=IntToStr(iValueData); - txtVBISRValueAddressPK.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - - if Trim(txtVBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddress.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBISWWriteData.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBISWValueAddress.Text); - - iFResult:=ValueBlockInSectorWrite(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM1.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM1.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM1.Text); - - iFResult:=ValueBlockInSectorWrite_AKM1(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM2.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM2.Text); - - iFResult:=ValueBlockInSectorWrite_AKM2(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataPK.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorWrite_PK(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pPKKey :=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance/ValueBlockInSectorIncrDecr.dcu b/uFCoderAdvance/ValueBlockInSectorIncrDecr.dcu deleted file mode 100644 index a888f67277e7912d41e865f6e2542373d65ca9f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25077 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 AhyVZp diff --git a/uFCoderAdvance/ValueBlockInSectorIncrDecr.ddp b/uFCoderAdvance/ValueBlockInSectorIncrDecr.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlockInSectorIncrDecr.dfm b/uFCoderAdvance/ValueBlockInSectorIncrDecr.dfm deleted file mode 100644 index 7e065d3..0000000 --- a/uFCoderAdvance/ValueBlockInSectorIncrDecr.dfm +++ /dev/null @@ -1,1067 +0,0 @@ -object frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr - Left = 432 - Top = 198 - Width = 529 - Height = 420 - Caption = 'ValueBlockInSectorInctDecr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Increment/Decrement (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSectorIncrDecr: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSectorIncDecr: TPageControl - Left = 0 - Top = 56 - Width = 513 - Height = 306 - ActivePage = tabValueBlockInSectorIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorIncrement: TTabSheet - Caption = 'ValueBlockInSector Increment' - object pnlValueBlockInSectorIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISIncrValue: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrement: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementClick - end - object txtVBISIncrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM1: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM1Click - end - object txtVBISIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM2: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM2Click - end - object txtVBISIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementPK: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementPKClick - end - object txtVBISIncrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlockInSector Decrement' - ImageIndex = 1 - object pnlVBISDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDec: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrement: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - HelpType = htKeyword - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementClick - end - object txtVBISDecrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM1: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM1Click - end - object txtVBISDecrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM2: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM2Click - end - object txtVBISDecrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecPK: TStaticText - Left = 2 - Top = 2 - Width = 173 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementPK: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementPKClick - end - object txtVBISDecrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlockInSectorIncrDecr.pas b/uFCoderAdvance/ValueBlockInSectorIncrDecr.pas deleted file mode 100644 index 7df55a9..0000000 --- a/uFCoderAdvance/ValueBlockInSectorIncrDecr.pas +++ /dev/null @@ -1,623 +0,0 @@ -unit ValueBlockInSectorIncrDecr; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder; - -type - TfrmValueBlockInSectorIncDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSectorIncrDecr: TStatusBar; - pgValueBlockInSectorIncDecr: TPageControl; - tabValueBlockInSectorIncrement: TTabSheet; - pnlValueBlockInSectorIncrement: TPanel; - lblVBISIncrValue: TLabel; - lblVBISIncrBlockAddress: TLabel; - lblVBISIncr: TStaticText; - txtVBISIncrementValue: TEdit; - btnValueBlockInSectorIncrement: TButton; - txtVBISIncrBlockAddress: TEdit; - pnlValueBlockInSectorIncrementAKM1: TPanel; - lblVBISIncrAKM1: TStaticText; - pnlValueBlockInSectorIncrementAKM2: TPanel; - lblVBISIncrAKM2: TStaticText; - pnlValueBlockInSectorIncrementPK: TPanel; - lblVBISIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - pnlVBISDecrement: TPanel; - lblVBISDecrementValue: TLabel; - lblVBISDecBlockAddress: TLabel; - lblVBISDec: TStaticText; - txtVBISDecrementValue: TEdit; - btnValueBlockInSectorDecrement: TButton; - txtVBISDecrBlockAddress: TEdit; - pnlVBISDecrementAKM1: TPanel; - lblVBISDecAKM1: TStaticText; - pnlVBISDecrementAKM2: TPanel; - lblVBISDecAKM2: TStaticText; - pnlVBISDecrementPK: TPanel; - lblVBISDecPK: TStaticText; - lblVBISIncSectorAddress: TLabel; - txtVBISIncrSectorAddress: TEdit; - lblVBISIncrValueAKM1: TLabel; - lblVBISIncrBlockAddressAKM1: TLabel; - txtVBISIncrementValueAKM1: TEdit; - btnValueBlockInSectorIncrementAKM1: TButton; - txtVBISIncrBlockAddressAKM1: TEdit; - lblVBISIncSectorAddressAKM1: TLabel; - txtVBISIncrSectorAddressAKM1: TEdit; - lblVBISIncrValueAKM2: TLabel; - lblVBISIncrBlockAddressAKM2: TLabel; - txtVBISIncrementValueAKM2: TEdit; - btnValueBlockInSectorIncrementAKM2: TButton; - txtVBISIncrBlockAddressAKM2: TEdit; - lblVBISIncSectorAddressAKM2: TLabel; - txtVBISIncrSectorAddressAKM2: TEdit; - lblVBISIncrValuePK: TLabel; - lblVBISIncrBlockAddressPK: TLabel; - txtVBISIncrementValuePK: TEdit; - btnValueBlockInSectorIncrementPK: TButton; - txtVBISIncrBlockAddressPK: TEdit; - lblVBISIncSectorAddressPK: TLabel; - txtVBISIncrSectorAddressPK: TEdit; - lblVBISDecrSectorAddress: TLabel; - txtVBISDecrSectorAddress: TEdit; - lblVBISDecrementValueAKM1: TLabel; - lblVBISDecBlockAddressAKM1: TLabel; - txtVBISDecrementValueAKM1: TEdit; - btnValueBlockInSectorDecrementAKM1: TButton; - txtVBISDecrBlockAddressAKM1: TEdit; - lblVBISDecrSectorAddressAKM1: TLabel; - txtVBISDecrSectorAddressAKM1: TEdit; - lblVBISDecrementValueAKM2: TLabel; - lblVBISDecBlockAddressAKM2: TLabel; - txtVBISDecrementValueAKM2: TEdit; - btnValueBlockInSectorDecrementAKM2: TButton; - txtVBISDecrBlockAddressAKM2: TEdit; - lblVBISDecrSectorAddressAKM2: TLabel; - txtVBISDecrSectorAddressAKM2: TEdit; - lblVBISDecrementValuePK: TLabel; - lblVBISDecBlockAddressPK: TLabel; - txtVBISDecrementValuePK: TEdit; - btnValueBlockInSectorDecrementPK: TButton; - txtVBISDecrBlockAddressPK: TEdit; - lblVBISDecrSectorAddressPK: TLabel; - txtVBISDecrSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorIncrementClick(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementPKClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementPKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockInSectorIncDecr.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBISIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddress.Text); - - iFResult:=ValueBlockInSectorIncrement(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM1(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM2(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorIncrement_PK(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBISDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddress.Text); - - iFResult:=ValueBlockInSectorDecrement(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM1(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM2(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; - -begin - try - if Trim(txtVBISDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorDecrement_PK(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - - - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance/ValueBlockInSectorIncrDecr.~ddp b/uFCoderAdvance/ValueBlockInSectorIncrDecr.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlockInSectorIncrDecr.~dfm b/uFCoderAdvance/ValueBlockInSectorIncrDecr.~dfm deleted file mode 100644 index 7b8f18f..0000000 --- a/uFCoderAdvance/ValueBlockInSectorIncrDecr.~dfm +++ /dev/null @@ -1,1067 +0,0 @@ -object frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr - Left = 432 - Top = 198 - Width = 529 - Height = 420 - Caption = 'ValueBlockInSectorInctDecr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Increment/Decrement (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSectorIncrDecr: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSectorIncDecr: TPageControl - Left = 0 - Top = 56 - Width = 513 - Height = 307 - ActivePage = tabValueBlockInSectorIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorIncrement: TTabSheet - Caption = 'ValueBlockInSector Increment' - object pnlValueBlockInSectorIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISIncrValue: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrement: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementClick - end - object txtVBISIncrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM1: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM1Click - end - object txtVBISIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM2: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM2Click - end - object txtVBISIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementPK: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementPKClick - end - object txtVBISIncrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlockInSector Decrement' - ImageIndex = 1 - object pnlVBISDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDec: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrement: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - HelpType = htKeyword - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementClick - end - object txtVBISDecrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM1: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM1Click - end - object txtVBISDecrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM2: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM2Click - end - object txtVBISDecrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecPK: TStaticText - Left = 2 - Top = 2 - Width = 173 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementPK: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementPKClick - end - object txtVBISDecrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlockInSectorIncrDecr.~pas b/uFCoderAdvance/ValueBlockInSectorIncrDecr.~pas deleted file mode 100644 index c3b673d..0000000 --- a/uFCoderAdvance/ValueBlockInSectorIncrDecr.~pas +++ /dev/null @@ -1,623 +0,0 @@ -unit ValueBlockInSectorIncrDecr; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder1x; - -type - TfrmValueBlockInSectorIncDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSectorIncrDecr: TStatusBar; - pgValueBlockInSectorIncDecr: TPageControl; - tabValueBlockInSectorIncrement: TTabSheet; - pnlValueBlockInSectorIncrement: TPanel; - lblVBISIncrValue: TLabel; - lblVBISIncrBlockAddress: TLabel; - lblVBISIncr: TStaticText; - txtVBISIncrementValue: TEdit; - btnValueBlockInSectorIncrement: TButton; - txtVBISIncrBlockAddress: TEdit; - pnlValueBlockInSectorIncrementAKM1: TPanel; - lblVBISIncrAKM1: TStaticText; - pnlValueBlockInSectorIncrementAKM2: TPanel; - lblVBISIncrAKM2: TStaticText; - pnlValueBlockInSectorIncrementPK: TPanel; - lblVBISIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - pnlVBISDecrement: TPanel; - lblVBISDecrementValue: TLabel; - lblVBISDecBlockAddress: TLabel; - lblVBISDec: TStaticText; - txtVBISDecrementValue: TEdit; - btnValueBlockInSectorDecrement: TButton; - txtVBISDecrBlockAddress: TEdit; - pnlVBISDecrementAKM1: TPanel; - lblVBISDecAKM1: TStaticText; - pnlVBISDecrementAKM2: TPanel; - lblVBISDecAKM2: TStaticText; - pnlVBISDecrementPK: TPanel; - lblVBISDecPK: TStaticText; - lblVBISIncSectorAddress: TLabel; - txtVBISIncrSectorAddress: TEdit; - lblVBISIncrValueAKM1: TLabel; - lblVBISIncrBlockAddressAKM1: TLabel; - txtVBISIncrementValueAKM1: TEdit; - btnValueBlockInSectorIncrementAKM1: TButton; - txtVBISIncrBlockAddressAKM1: TEdit; - lblVBISIncSectorAddressAKM1: TLabel; - txtVBISIncrSectorAddressAKM1: TEdit; - lblVBISIncrValueAKM2: TLabel; - lblVBISIncrBlockAddressAKM2: TLabel; - txtVBISIncrementValueAKM2: TEdit; - btnValueBlockInSectorIncrementAKM2: TButton; - txtVBISIncrBlockAddressAKM2: TEdit; - lblVBISIncSectorAddressAKM2: TLabel; - txtVBISIncrSectorAddressAKM2: TEdit; - lblVBISIncrValuePK: TLabel; - lblVBISIncrBlockAddressPK: TLabel; - txtVBISIncrementValuePK: TEdit; - btnValueBlockInSectorIncrementPK: TButton; - txtVBISIncrBlockAddressPK: TEdit; - lblVBISIncSectorAddressPK: TLabel; - txtVBISIncrSectorAddressPK: TEdit; - lblVBISDecrSectorAddress: TLabel; - txtVBISDecrSectorAddress: TEdit; - lblVBISDecrementValueAKM1: TLabel; - lblVBISDecBlockAddressAKM1: TLabel; - txtVBISDecrementValueAKM1: TEdit; - btnValueBlockInSectorDecrementAKM1: TButton; - txtVBISDecrBlockAddressAKM1: TEdit; - lblVBISDecrSectorAddressAKM1: TLabel; - txtVBISDecrSectorAddressAKM1: TEdit; - lblVBISDecrementValueAKM2: TLabel; - lblVBISDecBlockAddressAKM2: TLabel; - txtVBISDecrementValueAKM2: TEdit; - btnValueBlockInSectorDecrementAKM2: TButton; - txtVBISDecrBlockAddressAKM2: TEdit; - lblVBISDecrSectorAddressAKM2: TLabel; - txtVBISDecrSectorAddressAKM2: TEdit; - lblVBISDecrementValuePK: TLabel; - lblVBISDecBlockAddressPK: TLabel; - txtVBISDecrementValuePK: TEdit; - btnValueBlockInSectorDecrementPK: TButton; - txtVBISDecrBlockAddressPK: TEdit; - lblVBISDecrSectorAddressPK: TLabel; - txtVBISDecrSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorIncrementClick(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementPKClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementPKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockInSectorIncDecr.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBISIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddress.Text); - - iFResult:=ValueBlockInSectorIncrement(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM1(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM2(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorIncrement_PK(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBISDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddress.Text); - - iFResult:=ValueBlockInSectorDecrement(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM1(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM2(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; - -begin - try - if Trim(txtVBISDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorDecrement_PK(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - - - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance/ValueBlockIncDec.dcu b/uFCoderAdvance/ValueBlockIncDec.dcu deleted file mode 100644 index 52f863af160960e9614aaced696e1aea3b4f9fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21006 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 F{|8E&f+qj~ diff --git a/uFCoderAdvance/ValueBlockIncDec.ddp b/uFCoderAdvance/ValueBlockIncDec.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlockIncDec.dfm b/uFCoderAdvance/ValueBlockIncDec.dfm deleted file mode 100644 index 61c1b59..0000000 --- a/uFCoderAdvance/ValueBlockIncDec.dfm +++ /dev/null @@ -1,881 +0,0 @@ -object frmValueBlockIncrDecr: TfrmValueBlockIncrDecr - Left = 343 - Top = 186 - Width = 529 - Height = 420 - Caption = 'ValueBlockIncr/Decr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment/Decrement(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockIncrDecr: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockIncDecr: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 305 - ActivePage = tavValueBlockIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockIncrement: TTabSheet - Caption = 'ValueBlock Increment' - object pnlValueBlockIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBIncrValue: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementClick - end - object txtVBIncrBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM1Click - end - object txtVBIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM2Click - end - object txtVBIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementPKClick - end - object txtVBIncrBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlock Decrement' - ImageIndex = 1 - object pnlVBDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDec: TStaticText - Left = 2 - Top = 2 - Width = 168 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementClick - end - object txtVBDecBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM1Click - end - object txtVBDecBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM2Click - end - object txtVBDecBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecPK: TStaticText - Left = 2 - Top = 2 - Width = 191 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementPKClick - end - object txtVBDecBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlockIncDec.pas b/uFCoderAdvance/ValueBlockIncDec.pas deleted file mode 100644 index 67a8ae0..0000000 --- a/uFCoderAdvance/ValueBlockIncDec.pas +++ /dev/null @@ -1,542 +0,0 @@ -unit ValueBlockIncDec; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockIncrDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockIncrDecr: TStatusBar; - pgValueBlockIncDecr: TPageControl; - tavValueBlockIncrement: TTabSheet; - pnlValueBlockIncrement: TPanel; - lblVBIncrValue: TLabel; - lblVBIncrBlockAddress: TLabel; - lblVBIncr: TStaticText; - txtVBIncrementValue: TEdit; - btnValueBlockIncrement: TButton; - txtVBIncrBlockAddress: TEdit; - pnlValueBlockIncrAKM1: TPanel; - lblVBIncrAKM1: TStaticText; - pnlValueBlockIncrAKM2: TPanel; - lblVBIncrAKM2: TStaticText; - pnlValueBlockIncrPK: TPanel; - lblVBIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - lblVBIncrValueAKM1: TLabel; - lblVBIncrBlockAddressAKM1: TLabel; - txtVBIncrementValueAKM1: TEdit; - btnValueBlockIncrementAKM1: TButton; - txtVBIncrBlockAddressAKM1: TEdit; - lblVBIncrValueAKM2: TLabel; - lblVBIncrBlockAddressAKM2: TLabel; - txtVBIncrementValueAKM2: TEdit; - btnValueBlockIncrementAKM2: TButton; - txtVBIncrBlockAddressAKM2: TEdit; - lblVBIncrValuePK: TLabel; - lblVBIncrBlockAddressPK: TLabel; - txtVBIncrementValuePK: TEdit; - btnValueBlockIncrementPK: TButton; - txtVBIncrBlockAddressPK: TEdit; - pnlVBDecrement: TPanel; - lblVBDecrementValue: TLabel; - lblVBDecBlockAddress: TLabel; - lblVBDec: TStaticText; - txtVBDecrementValue: TEdit; - btnValueBlockDecrement: TButton; - txtVBDecBlockAddress: TEdit; - pnlVBDecrementAKM1: TPanel; - lblVBDecrementValueAKM1: TLabel; - lblVBDecBlockAddressAKM1: TLabel; - lblVBDecAKM1: TStaticText; - txtVBDecrementValueAKM1: TEdit; - btnValueBlockDecrementAKM1: TButton; - txtVBDecBlockAddressAKM1: TEdit; - pnlVBDecrementAKM2: TPanel; - lblVBDecrementValueAKM2: TLabel; - lblVBDecBlockAddressAKM2: TLabel; - lblVBDecAKM2: TStaticText; - txtVBDecrementValueAKM2: TEdit; - btnValueBlockDecrementAKM2: TButton; - txtVBDecBlockAddressAKM2: TEdit; - pnlVBDecrementPK: TPanel; - lblVBDecrementValuePK: TLabel; - lblVBDecBlockAddressPK: TLabel; - lblVBDecPK: TStaticText; - txtVBDecrementValuePK: TEdit; - btnValueBlockDecrementPK: TButton; - txtVBDecBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockIncrementClick(Sender: TObject); - procedure btnValueBlockIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockIncrementPKClick(Sender: TObject); - procedure btnValueBlockDecrementClick(Sender: TObject); - procedure btnValueBlockDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockDecrementPKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockIncrDecr: TfrmValueBlockIncrDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockIncrDecr.FormCreate(Sender: TObject); -begin - - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddress.Text); - - iFResult:=ValueBlockIncrement(iIncrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM1.Text); - - iFResult:=ValueBlockIncrement_AKM1(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM2.Text); - - iFResult:=ValueBlockIncrement_AKM2(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - - iFResult:=ValueBlockIncrement_PK(iIncrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddress.Text); - - iFResult:=ValueBlockDecrement(iDecrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM1.Text); - - iFResult:=ValueBlockDecrement_AKM1(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM2.Text); - - iFResult:=ValueBlockDecrement_AKM2(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressPK.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - iFResult:=ValueBlockDecrement_PK(iDecrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -end. diff --git a/uFCoderAdvance/ValueBlockIncDec.~ddp b/uFCoderAdvance/ValueBlockIncDec.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/ValueBlockIncDec.~dfm b/uFCoderAdvance/ValueBlockIncDec.~dfm deleted file mode 100644 index b4551b9..0000000 --- a/uFCoderAdvance/ValueBlockIncDec.~dfm +++ /dev/null @@ -1,881 +0,0 @@ -object frmValueBlockIncrDecr: TfrmValueBlockIncrDecr - Left = 343 - Top = 186 - Width = 529 - Height = 420 - Caption = 'ValueBlockIncr/Decr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment/Decrement(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockIncrDecr: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockIncDecr: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 306 - ActivePage = tavValueBlockIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockIncrement: TTabSheet - Caption = 'ValueBlock Increment' - object pnlValueBlockIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBIncrValue: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementClick - end - object txtVBIncrBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM1Click - end - object txtVBIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM2Click - end - object txtVBIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementPKClick - end - object txtVBIncrBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlock Decrement' - ImageIndex = 1 - object pnlVBDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDec: TStaticText - Left = 2 - Top = 2 - Width = 168 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementClick - end - object txtVBDecBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM1Click - end - object txtVBDecBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM2Click - end - object txtVBDecBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecPK: TStaticText - Left = 2 - Top = 2 - Width = 191 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementPKClick - end - object txtVBDecBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance/ValueBlockIncDec.~pas b/uFCoderAdvance/ValueBlockIncDec.~pas deleted file mode 100644 index 2988528..0000000 --- a/uFCoderAdvance/ValueBlockIncDec.~pas +++ /dev/null @@ -1,542 +0,0 @@ -unit ValueBlockIncDec; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder1x,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockIncrDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockIncrDecr: TStatusBar; - pgValueBlockIncDecr: TPageControl; - tavValueBlockIncrement: TTabSheet; - pnlValueBlockIncrement: TPanel; - lblVBIncrValue: TLabel; - lblVBIncrBlockAddress: TLabel; - lblVBIncr: TStaticText; - txtVBIncrementValue: TEdit; - btnValueBlockIncrement: TButton; - txtVBIncrBlockAddress: TEdit; - pnlValueBlockIncrAKM1: TPanel; - lblVBIncrAKM1: TStaticText; - pnlValueBlockIncrAKM2: TPanel; - lblVBIncrAKM2: TStaticText; - pnlValueBlockIncrPK: TPanel; - lblVBIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - lblVBIncrValueAKM1: TLabel; - lblVBIncrBlockAddressAKM1: TLabel; - txtVBIncrementValueAKM1: TEdit; - btnValueBlockIncrementAKM1: TButton; - txtVBIncrBlockAddressAKM1: TEdit; - lblVBIncrValueAKM2: TLabel; - lblVBIncrBlockAddressAKM2: TLabel; - txtVBIncrementValueAKM2: TEdit; - btnValueBlockIncrementAKM2: TButton; - txtVBIncrBlockAddressAKM2: TEdit; - lblVBIncrValuePK: TLabel; - lblVBIncrBlockAddressPK: TLabel; - txtVBIncrementValuePK: TEdit; - btnValueBlockIncrementPK: TButton; - txtVBIncrBlockAddressPK: TEdit; - pnlVBDecrement: TPanel; - lblVBDecrementValue: TLabel; - lblVBDecBlockAddress: TLabel; - lblVBDec: TStaticText; - txtVBDecrementValue: TEdit; - btnValueBlockDecrement: TButton; - txtVBDecBlockAddress: TEdit; - pnlVBDecrementAKM1: TPanel; - lblVBDecrementValueAKM1: TLabel; - lblVBDecBlockAddressAKM1: TLabel; - lblVBDecAKM1: TStaticText; - txtVBDecrementValueAKM1: TEdit; - btnValueBlockDecrementAKM1: TButton; - txtVBDecBlockAddressAKM1: TEdit; - pnlVBDecrementAKM2: TPanel; - lblVBDecrementValueAKM2: TLabel; - lblVBDecBlockAddressAKM2: TLabel; - lblVBDecAKM2: TStaticText; - txtVBDecrementValueAKM2: TEdit; - btnValueBlockDecrementAKM2: TButton; - txtVBDecBlockAddressAKM2: TEdit; - pnlVBDecrementPK: TPanel; - lblVBDecrementValuePK: TLabel; - lblVBDecBlockAddressPK: TLabel; - lblVBDecPK: TStaticText; - txtVBDecrementValuePK: TEdit; - btnValueBlockDecrementPK: TButton; - txtVBDecBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockIncrementClick(Sender: TObject); - procedure btnValueBlockIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockIncrementPKClick(Sender: TObject); - procedure btnValueBlockDecrementClick(Sender: TObject); - procedure btnValueBlockDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockDecrementPKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockIncrDecr: TfrmValueBlockIncrDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockIncrDecr.FormCreate(Sender: TObject); -begin - - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddress.Text); - - iFResult:=ValueBlockIncrement(iIncrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM1.Text); - - iFResult:=ValueBlockIncrement_AKM1(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM2.Text); - - iFResult:=ValueBlockIncrement_AKM2(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - - iFResult:=ValueBlockIncrement_PK(iIncrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddress.Text); - - iFResult:=ValueBlockDecrement(iDecrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM1.Text); - - iFResult:=ValueBlockDecrement_AKM1(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM2.Text); - - iFResult:=ValueBlockDecrement_AKM2(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressPK.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - iFResult:=ValueBlockDecrement_PK(iDecrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -end. diff --git a/uFCoderAdvance/ViewAll.dcu b/uFCoderAdvance/ViewAll.dcu deleted file mode 100644 index 094ccfacc3b98767f3d9e3a37183bb609af5c697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10086 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance/ViewAll.dfm b/uFCoderAdvance/ViewAll.dfm deleted file mode 100644 index 4e284ef..0000000 --- a/uFCoderAdvance/ViewAll.dfm +++ /dev/null @@ -1,198 +0,0 @@ -object frmViewAll: TfrmViewAll - Left = 329 - Top = 138 - Width = 529 - Height = 436 - Caption = 'ViewAll' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - DesignSize = ( - 513 - 397) - PixelsPerInch = 96 - TextHeight = 13 - object lblKeyIndex: TLabel - Left = 159 - Top = 318 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'View All' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbViewAll: TStatusBar - Left = 0 - Top = 378 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object sgrdViewAll: TStringGrid - Left = 0 - Top = 26 - Width = 513 - Height = 277 - Cursor = crHandPoint - Ctl3D = True - DefaultColWidth = 40 - DefaultRowHeight = 20 - RowCount = 2 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - OnDrawCell = sgrdViewAllDrawCell - end - object rbHexView: TRadioButton - Left = 271 - Top = 343 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'HEX' - TabOrder = 3 - end - object btnReadData: TButton - Left = 331 - Top = 316 - Width = 177 - Height = 41 - Cursor = crHandPoint - Anchors = [akLeft, akBottom] - Caption = 'READ DATA' - TabOrder = 4 - OnClick = btnReadDataClick - end - object cboKeyIndex: TComboBox - Left = 168 - Top = 338 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object pbBar: TProgressBar - Left = 331 - Top = 361 - Width = 177 - Height = 13 - BorderWidth = 1 - Smooth = True - TabOrder = 6 - Visible = False - end - object rbgrpRadioButtonGroup: TRadioGroup - Left = 8 - Top = 305 - Width = 97 - Height = 61 - ItemIndex = 0 - Items.Strings = ( - 'AUTH 1A' - 'AUTH 1B') - TabOrder = 7 - end - object rbAscii: TRadioButton - Left = 271 - Top = 316 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'ASCII' - Checked = True - TabOrder = 8 - TabStop = True - end -end diff --git a/uFCoderAdvance/ViewAll.pas b/uFCoderAdvance/ViewAll.pas deleted file mode 100644 index 63d7719..0000000 --- a/uFCoderAdvance/ViewAll.pas +++ /dev/null @@ -1,273 +0,0 @@ -unit ViewAll; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder, - Grids, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmViewAll = class(TForm) - lblHeader: TStaticText; - stbViewAll: TStatusBar; - sgrdViewAll: TStringGrid; - rbHexView: TRadioButton; - btnReadData: TButton; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - pbBar: TProgressBar; - rbgrpRadioButtonGroup: TRadioGroup; - rbAscii: TRadioButton; - procedure sgrdViewAllDrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect; State: TGridDrawState); - procedure btnReadDataClick(Sender: TObject); - private - procedure Draw1k4kGrid; - procedure Draw1k4kCardData; - procedure DrawNTAGCardData; - public - { Public declarations } - end; - -var - frmViewAll: TfrmViewAll; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmViewAll.Draw1k4kGrid; -var - bBr :Byte; -begin - - with sgrdViewAll do - begin - ColCount := 19; - // FixedRows := 3; - Cells[0, 0] := 'S'; - Cells[1, 0] := 'BiS'; - Cells[2, 0] := 'Blo'; - for bBr := 0 to 15 do - Cells[bBr + 3, 0] := IntToStr(bBr); - end; - -end; - -procedure TfrmViewAll.sgrdViewAllDrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState); -begin - if sgrdViewAll.Cells[0,aRow]='SCT' then - begin - with sgrdViewAll.Canvas do - begin - Brush.Color := $02aaaaaa; - FillRect(Rect); - Font.Color := clBlack; - TextOut(Rect.Left+2,Rect.Top+2,sgrdViewAll.Cells[aCol,aRow]); - end; -end; -end; - - -procedure TfrmViewAll.btnReadDataClick(Sender: TObject); -var - cardType:Byte; -begin - cardType:=frmuFrAdvanced.bDLCardType; - if (cardType = DL_NTAG_203) or (cardType = DL_MIFARE_ULTRALIGHT) or - (cardType = DL_MIFARE_ULTRALIGHT_C) then - DrawNTAGCardData - else - if (cardType = DL_MIFARE_CLASSIC_1K) or (cardType = DL_MIFARE_CLASSIC_4K) or - (cardType = DL_MIFARE_PLUS_S_4K) then - Draw1k4kCardData; -end; - -procedure TfrmViewAll.Draw1k4kCardData; -var - chaBlockData :array[0..15] of Char; - pData :PByte; - bBlockCount :Integer; - bBISCounter, - bBISCount, - bBr, - bSectorsCounter :Byte; - iMaxBlocks :Integer; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - try - frmuFrAdvanced.FunctionStart := true; - Draw1k4kGrid; - bSectorsCounter :=0; - bBISCount :=0; - bBISCounter :=3; - bBlockCount :=0; - New(pData); - bKeyIndex :=cboKeyIndex.ItemIndex; - iMaxBlocks :=MaxBlocks(); - pbBar.Max :=iMaxBlocks; - pbBar.Visible :=true; - - if rbgrpRadioButtonGroup.ItemIndex=0 then bAuthMode :=MIFARE_AUTHENT1A - else - bAuthMode :=MIFARE_AUTHENT1B; - - sgrdViewAll.RowCount:=iMaxBlocks+1; - - while bBlockCount=31) and (bBlockCount mod 16 =0) then - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - bBISCounter:=15; - end - else - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - end; - end; - sgrdViewAll.Repaint; - if iFResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - pbBar.Visible := false; - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmViewAll.DrawNTAGCardData; -var - pData :PByte; - pPKKey :PByte; - pageData :array[0..10] of Byte; - authMode :Byte; - blockAddress :Byte; - bCounter,i :Byte; - maxBlock :integer; - bAuthMode, - bKeyIndex :Byte; - fnResult :DL_STATUS; -begin - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - - try - frmuFrAdvanced.FunctionStart := true; - maxBlock := MaxBlocks(); - - with sgrdViewAll do - begin - FixedCols :=1; - FixedRows :=1; - ColCount :=5; - RowCount :=maxBlock-2; - DefaultColWidth:=35; - Cells[0,0] :='PAGE'; - for i:=1 to 4 do - Cells[i,0]:=IntToStr(i); - end; - New(pData); - if rbgrpRadioButtonGroup.ItemIndex=0 then - authMode :=MIFARE_AUTHENT1A - else - authMode :=MIFARE_AUTHENT1B; - - bKeyIndex :=StrToInt(cboKeyIndex.Text); - pbBar.Visible :=true; - pbBar.Max :=maxBlock+2; - bcounter :=4; - while (bcounter<=maxBlock) do - begin - pData := PByte(@pageData); - fnResult := BlockRead(pData,bcounter,authMode,bKeyIndex); - if not fnResult = DL_OK then break; - - sgrdViewAll.Cells[0,bcounter-3] := IntToStr(bcounter); - for i:=0 to 3 do - begin - if rbHexView.Checked then - sgrdViewAll.Cells[i+1,bcounter-3]:='$'+IntToHex(Byte(pageData[i]),2) - else - sgrdViewAll.Cells[i+1,bcounter-3]:=chr(pageData[i]); - end; - - pbBar.Position:=bcounter; - Application.ProcessMessages; - Inc(bcounter); - end; - if fnResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,fnResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,fnResult); - end; - finally - pbBar.Visible:=false; - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart := false; - end; - -end; - - - -end. - diff --git a/uFCoderAdvance/ViewAll.~ddp b/uFCoderAdvance/ViewAll.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/ViewAll.~dfm b/uFCoderAdvance/ViewAll.~dfm deleted file mode 100644 index 80567da..0000000 --- a/uFCoderAdvance/ViewAll.~dfm +++ /dev/null @@ -1,198 +0,0 @@ -object frmViewAll: TfrmViewAll - Left = 329 - Top = 138 - Width = 529 - Height = 436 - Caption = 'ViewAll' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - DesignSize = ( - 513 - 398) - PixelsPerInch = 96 - TextHeight = 13 - object lblKeyIndex: TLabel - Left = 159 - Top = 318 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'View All' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbViewAll: TStatusBar - Left = 0 - Top = 379 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object sgrdViewAll: TStringGrid - Left = 0 - Top = 26 - Width = 513 - Height = 277 - Cursor = crHandPoint - Ctl3D = True - DefaultColWidth = 40 - DefaultRowHeight = 20 - RowCount = 2 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - OnDrawCell = sgrdViewAllDrawCell - end - object rbHexView: TRadioButton - Left = 271 - Top = 343 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'HEX' - TabOrder = 3 - end - object btnReadData: TButton - Left = 331 - Top = 316 - Width = 177 - Height = 41 - Cursor = crHandPoint - Anchors = [akLeft, akBottom] - Caption = 'READ DATA' - TabOrder = 4 - OnClick = btnReadDataClick - end - object cboKeyIndex: TComboBox - Left = 168 - Top = 338 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object pbBar: TProgressBar - Left = 331 - Top = 361 - Width = 177 - Height = 13 - BorderWidth = 1 - Smooth = True - TabOrder = 6 - Visible = False - end - object rbgrpRadioButtonGroup: TRadioGroup - Left = 8 - Top = 305 - Width = 97 - Height = 61 - ItemIndex = 0 - Items.Strings = ( - 'AUTH 1A' - 'AUTH 1B') - TabOrder = 7 - end - object rbAscii: TRadioButton - Left = 271 - Top = 316 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'ASCII' - Checked = True - TabOrder = 8 - TabStop = True - end -end diff --git a/uFCoderAdvance/ViewAll.~pas b/uFCoderAdvance/ViewAll.~pas deleted file mode 100644 index 0fb5b59..0000000 --- a/uFCoderAdvance/ViewAll.~pas +++ /dev/null @@ -1,273 +0,0 @@ -unit ViewAll; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder1x, - Grids, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmViewAll = class(TForm) - lblHeader: TStaticText; - stbViewAll: TStatusBar; - sgrdViewAll: TStringGrid; - rbHexView: TRadioButton; - btnReadData: TButton; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - pbBar: TProgressBar; - rbgrpRadioButtonGroup: TRadioGroup; - rbAscii: TRadioButton; - procedure sgrdViewAllDrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect; State: TGridDrawState); - procedure btnReadDataClick(Sender: TObject); - private - procedure Draw1k4kGrid; - procedure Draw1k4kCardData; - procedure DrawNTAGCardData; - public - { Public declarations } - end; - -var - frmViewAll: TfrmViewAll; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmViewAll.Draw1k4kGrid; -var - bBr :Byte; -begin - - with sgrdViewAll do - begin - ColCount := 19; - // FixedRows := 3; - Cells[0, 0] := 'S'; - Cells[1, 0] := 'BiS'; - Cells[2, 0] := 'Blo'; - for bBr := 0 to 15 do - Cells[bBr + 3, 0] := IntToStr(bBr); - end; - -end; - -procedure TfrmViewAll.sgrdViewAllDrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState); -begin - if sgrdViewAll.Cells[0,aRow]='SCT' then - begin - with sgrdViewAll.Canvas do - begin - Brush.Color := $02aaaaaa; - FillRect(Rect); - Font.Color := clBlack; - TextOut(Rect.Left+2,Rect.Top+2,sgrdViewAll.Cells[aCol,aRow]); - end; -end; -end; - - -procedure TfrmViewAll.btnReadDataClick(Sender: TObject); -var - cardType:Byte; -begin - cardType:=frmuFrAdvanced.bDLCardType; - if (cardType = uFCoder1x.DL_NTAG_203) or (cardType = uFCoder1x.DL_MIFARE_ULTRALIGHT) or - (cardType = uFCoder1x.DL_MIFARE_ULTRALIGHT_C) then - DrawNTAGCardData - else - if (cardType = uFCoder1x.DL_MIFARE_CLASSIC_1K) or (cardType = uFCoder1x.DL_MIFARE_CLASSIC_4K) or - (cardType = uFCoder1x.DL_MIFARE_PLUS_S_4K) then - Draw1k4kCardData; -end; - -procedure TfrmViewAll.Draw1k4kCardData; -var - chaBlockData :array[0..15] of Char; - pData :PByte; - bBlockCount :Integer; - bBISCounter, - bBISCount, - bBr, - bSectorsCounter :Byte; - iMaxBlocks :Integer; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - try - frmuFrAdvanced.FunctionStart := true; - Draw1k4kGrid; - bSectorsCounter :=0; - bBISCount :=0; - bBISCounter :=3; - bBlockCount :=0; - New(pData); - bKeyIndex :=cboKeyIndex.ItemIndex; - iMaxBlocks :=MaxBlocks(); - pbBar.Max :=iMaxBlocks; - pbBar.Visible :=true; - - if rbgrpRadioButtonGroup.ItemIndex=0 then bAuthMode :=MIFARE_AUTHENT1A - else - bAuthMode :=MIFARE_AUTHENT1B; - - sgrdViewAll.RowCount:=iMaxBlocks+1; - - while bBlockCount=31) and (bBlockCount mod 16 =0) then - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - bBISCounter:=15; - end - else - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - end; - end; - sgrdViewAll.Repaint; - if iFResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - pbBar.Visible := false; - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmViewAll.DrawNTAGCardData; -var - pData :PByte; - pPKKey :PByte; - pageData :array[0..10] of Byte; - authMode :Byte; - blockAddress :Byte; - bCounter,i :Byte; - maxBlock :integer; - bAuthMode, - bKeyIndex :Byte; - fnResult :DL_STATUS; -begin - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - - try - frmuFrAdvanced.FunctionStart := true; - maxBlock := MaxBlocks(); - - with sgrdViewAll do - begin - FixedCols :=1; - FixedRows :=1; - ColCount :=5; - RowCount :=maxBlock-2; - DefaultColWidth:=35; - Cells[0,0] :='PAGE'; - for i:=1 to 4 do - Cells[i,0]:=IntToStr(i); - end; - New(pData); - if rbgrpRadioButtonGroup.ItemIndex=0 then - authMode :=MIFARE_AUTHENT1A - else - authMode :=MIFARE_AUTHENT1B; - - bKeyIndex :=StrToInt(cboKeyIndex.Text); - pbBar.Visible :=true; - pbBar.Max :=maxBlock+2; - bcounter :=4; - while (bcounter<=maxBlock) do - begin - pData := PByte(@pageData); - fnResult := BlockRead(pData,bcounter,authMode,bKeyIndex); - if not fnResult = DL_OK then break; - - sgrdViewAll.Cells[0,bcounter-3] := IntToStr(bcounter); - for i:=0 to 3 do - begin - if rbHexView.Checked then - sgrdViewAll.Cells[i+1,bcounter-3]:='$'+IntToHex(Byte(pageData[i]),2) - else - sgrdViewAll.Cells[i+1,bcounter-3]:=chr(pageData[i]); - end; - - pbBar.Position:=bcounter; - Application.ProcessMessages; - Inc(bcounter); - end; - if fnResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,fnResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,fnResult); - end; - finally - pbBar.Visible:=false; - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart := false; - end; - -end; - - - -end. - diff --git a/uFCoderAdvance/ftd2xx.dll b/uFCoderAdvance/ftd2xx.dll deleted file mode 100644 index dc923a9cf2d49238ae76f12064270a907e3b7265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206144 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 diff --git a/uFCoderAdvance/uFAdvanced.dcu b/uFCoderAdvance/uFAdvanced.dcu deleted file mode 100644 index 865a4f026ca84f353557b7ce6b10a75a4d37723f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18761 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance/uFAdvanced.dfm b/uFCoderAdvance/uFAdvanced.dfm deleted file mode 100644 index 1c5c97d..0000000 --- a/uFCoderAdvance/uFAdvanced.dfm +++ /dev/null @@ -1,523 +0,0 @@ -object frmuFrAdvanced: TfrmuFrAdvanced - Left = 639 - Top = 184 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'uFr Advance' - ClientHeight = 668 - ClientWidth = 541 - Color = clWindow - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - KeyPreview = True - Menu = mnuMeni - OldCreateOrder = False - Position = poDesktopCenter - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object stbCard: TStatusBar - Left = 0 - Top = 649 - Width = 541 - Height = 19 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'CARD STATUS' - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlReader: TPanel - Left = 0 - Top = 0 - Width = 541 - Height = 256 - Align = alTop - Ctl3D = True - ParentCtl3D = False - TabOrder = 1 - object lblReaderType: TLabel - Left = 37 - Top = 16 - Width = 72 - Height = 13 - Caption = 'Reader Type' - end - object lblReaderSerial: TLabel - Left = 37 - Top = 40 - Width = 78 - Height = 13 - Caption = 'Reader Serial' - end - object lblCardType: TLabel - Left = 292 - Top = 16 - Width = 59 - Height = 13 - Caption = 'Card Type' - end - object lblCardSerial: TLabel - Left = 293 - Top = 40 - Width = 65 - Height = 13 - Caption = 'Card Serial' - end - object Bevel1: TBevel - Left = 25 - Top = 65 - Width = 504 - Height = 5 - end - object lblLightMode: TLabel - Left = 41 - Top = 82 - Width = 61 - Height = 13 - Caption = 'Light Mode' - end - object lblSoundMode: TLabel - Left = 41 - Top = 105 - Width = 70 - Height = 13 - Caption = 'Sound Mode' - end - object lblCardUIDSize: TLabel - Left = 421 - Top = 17 - Width = 50 - Height = 13 - Caption = 'UID Size' - end - object stbReader: TStatusBar - Left = 1 - Top = 234 - Width = 539 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object cboLightMode: TComboBox - Left = 133 - Top = 78 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 1 - Text = 'None' - Items.Strings = ( - 'None' - 'Long Green' - 'LongRed' - 'Alternation' - 'Flash') - end - object cboSoundMode: TComboBox - Left = 133 - Top = 102 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 2 - Text = 'None' - Items.Strings = ( - 'None' - 'Short' - 'Long' - 'Double Short' - 'Tripple Short' - 'Tripplet Melody') - end - object btnReaderUiSignal: TButton - Left = 276 - Top = 79 - Width = 110 - Height = 44 - Cursor = crHandPoint - Caption = 'Reader Ui Signal' - TabOrder = 3 - OnClick = btnReaderUiSignalClick - end - object btnSoftRestart: TButton - Left = 392 - Top = 77 - Width = 125 - Height = 23 - Cursor = crHandPoint - Caption = 'Soft Restart' - TabOrder = 4 - OnClick = btnSoftRestartClick - end - object btnReaderReset: TButton - Left = 392 - Top = 101 - Width = 125 - Height = 23 - Caption = 'Reader Reset' - TabOrder = 5 - OnClick = btnReaderResetClick - end - object pgReaderKeyUserData: TPageControl - Left = 39 - Top = 131 - Width = 481 - Height = 97 - ActivePage = tabReaderKey - TabOrder = 6 - object tabReaderKey: TTabSheet - Caption = 'Reader Key' - object pnlReaderKey: TPanel - Left = 2 - Top = 0 - Width = 470 - Height = 67 - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 260 - Top = 48 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object chkReaderHex: TCheckBox - Left = 26 - Top = 38 - Width = 54 - Height = 15 - Caption = 'Hex' - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - OnClick = chkReaderHexClick - end - object cboKeyIndex: TComboBox - Left = 272 - Top = 13 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object btnSaveReaderKey: TButton - Left = 332 - Top = 12 - Width = 125 - Height = 33 - Caption = 'Save ' - TabOrder = 2 - OnClick = btnSaveKeyIndexClick - end - end - end - object tabUserData: TTabSheet - Caption = 'User Data' - ImageIndex = 1 - object lblUserData: TLabel - Left = 9 - Top = 16 - Width = 57 - Height = 13 - Caption = 'User Data' - end - object lblNewUserData: TLabel - Left = 202 - Top = 16 - Width = 85 - Height = 13 - Caption = 'New User Data' - end - object txtUserData: TEdit - Left = 10 - Top = 32 - Width = 183 - Height = 21 - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 0 - end - object txtNewUserData: TEdit - Left = 203 - Top = 32 - Width = 174 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object btnWriteUserData: TButton - Left = 387 - Top = 21 - Width = 81 - Height = 32 - Cursor = crHandPoint - Caption = 'Save' - TabOrder = 2 - OnClick = btnSaveUserDataClick - end - end - end - object txtReaderType: TEdit - Left = 126 - Top = 15 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 7 - end - object txtReaderSerial: TEdit - Left = 126 - Top = 39 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 8 - end - object txtCardType: TEdit - Left = 369 - Top = 14 - Width = 33 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 9 - end - object txtCardUIDSize: TEdit - Left = 480 - Top = 14 - Width = 33 - Height = 19 - Hint = 'Card UID Size' - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ParentShowHint = False - ReadOnly = True - ShowHint = False - TabOrder = 10 - end - object txtCardSerial: TEdit - Left = 369 - Top = 38 - Width = 144 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 11 - end - end - object pnlContainer: TPanel - Left = 0 - Top = 256 - Width = 541 - Height = 393 - Align = alClient - TabOrder = 2 - end - object mnuMeni: TMainMenu - Left = 480 - Top = 616 - object mnuFunctionsItem: TMenuItem - Caption = 'Functions' - object mnuLinearReadWriteItems: TMenuItem - Caption = 'Linear Read/Write' - OnClick = mnuLinearReadWriteItemsClick - end - object SEP1: TMenuItem - Caption = '-' - end - object mnuBlockReadWriteItems: TMenuItem - Caption = 'Block Read/Write' - OnClick = mnuBlockReadWriteItemsClick - end - object mnuBlockInSectorReadWriteItem: TMenuItem - Caption = 'BlockInSector Read/Write' - OnClick = mnuBlockInSectorReadWriteItemClick - end - object SEP2: TMenuItem - Caption = '-' - end - object mnuValueBlockReadWriteItem: TMenuItem - Caption = 'ValueBlock Read/Write' - OnClick = mnuValueBlockReadWriteItemClick - end - object mnuValueBlockIncrementDecrementItem: TMenuItem - Caption = 'ValueBlock Increment/Decrement' - OnClick = mnuValueBlockIncrementDecrementItemClick - end - object SEP3: TMenuItem - Caption = '-' - end - object mnuValueBlockInSectorReadWriteItem: TMenuItem - Caption = 'ValueBlockInSector Read/Write' - OnClick = mnuValueBlockInSectorReadWriteItemClick - end - object mnuValueBlockInSectorIncrDecrItems: TMenuItem - Caption = 'ValueBlockInSector Increment/Decrement' - OnClick = mnuValueBlockInSectorIncrDecrItemsClick - end - object SEP4: TMenuItem - Caption = '-' - end - object mnuSectorTrailerWriteItem: TMenuItem - Caption = 'SectorTrailer Write' - OnClick = mnuSectorTrailerWriteItemClick - end - object mnuLinearFormatCardItem: TMenuItem - Caption = 'LinearFormat Card' - OnClick = mnuLinearFormatCardItemClick - end - object SEP5: TMenuItem - Caption = '-' - end - object mnuReaderHardwareFirmwareversionItem: TMenuItem - Caption = 'Reader Hardware/Firmware version' - OnClick = mnuReaderHardwareFirmwareversionItemClick - end - object mnuExitItem: TMenuItem - Caption = 'Exit' - ShortCut = 16465 - OnClick = mnuExitItemClick - end - end - object mnuViewAlItems: TMenuItem - Caption = 'View All' - OnClick = mnuViewAlItemsClick - end - end - object Timer: TTimer - Interval = 500 - OnTimer = TimerTimer - Left = 480 - Top = 584 - end -end diff --git a/uFCoderAdvance/uFAdvanced.pas b/uFCoderAdvance/uFAdvanced.pas deleted file mode 100644 index 95b36e1..0000000 --- a/uFCoderAdvance/uFAdvanced.pas +++ /dev/null @@ -1,476 +0,0 @@ - -unit uFAdvanced; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus,ComCtrls, StdCtrls, ExtCtrls, - uFCoder, - Global, - LinearReadWrite, - BlockReadWrite, - BlockInSector, - ValueBlock, - ValueBlockIncDec, - ValueBlockInSector, - ValueBlockInSectorIncrDecr, - SectorTrailersWrite, - LinearFormatsCard, - ViewAll; - - -type - TfrmuFrAdvanced = class(TForm) - stbCard: TStatusBar; - mnuMeni: TMainMenu; - mnuFunctionsItem: TMenuItem; - mnuLinearReadWriteItems: TMenuItem; - pnlReader: TPanel; - lblReaderType: TLabel; - lblReaderSerial: TLabel; - lblCardType: TLabel; - lblCardSerial: TLabel; - Bevel1: TBevel; - Timer: TTimer; - stbReader: TStatusBar; - lblLightMode: TLabel; - cboLightMode: TComboBox; - lblSoundMode: TLabel; - cboSoundMode: TComboBox; - btnReaderUiSignal: TButton; - btnSoftRestart: TButton; - btnReaderReset: TButton; - pnlContainer: TPanel; - SEP1: TMenuItem; - mnuBlockReadWriteItems: TMenuItem; - mnuBlockInSectorReadWriteItem: TMenuItem; - SEP2: TMenuItem; - mnuValueBlockReadWriteItem: TMenuItem; - mnuValueBlockIncrementDecrementItem: TMenuItem; - SEP3: TMenuItem; - mnuExitItem: TMenuItem; - SEP4: TMenuItem; - mnuValueBlockInSectorReadWriteItem: TMenuItem; - mnuValueBlockInSectorIncrDecrItems: TMenuItem; - mnuSectorTrailerWriteItem: TMenuItem; - SEP5: TMenuItem; - mnuViewAlItems: TMenuItem; - mnuLinearFormatCardItem: TMenuItem; - pgReaderKeyUserData: TPageControl; - tabUserData: TTabSheet; - lblUserData: TLabel; - lblNewUserData: TLabel; - txtUserData: TEdit; - txtNewUserData: TEdit; - btnWriteUserData: TButton; - tabReaderKey: TTabSheet; - pnlReaderKey: TPanel; - chkReaderHex: TCheckBox; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - btnSaveReaderKey: TButton; - lblCardUIDSize: TLabel; - txtReaderType: TEdit; - txtReaderSerial: TEdit; - txtCardType: TEdit; - txtCardUIDSize: TEdit; - txtCardSerial: TEdit; - mnuReaderHardwareFirmwareversionItem: TMenuItem; - procedure FormCreate(Sender: TObject); - procedure btnSaveUserDataClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure chkReaderHexClick(Sender: TObject); - procedure btnSaveKeyIndexClick(Sender: TObject); - procedure mnuBlockReadWriteItemsClick(Sender: TObject); - procedure mnuLinearReadWriteItemsClick(Sender: TObject); - procedure mnuBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockIncrementDecrementItemClick(Sender: TObject); - procedure mnuExitItemClick(Sender: TObject); - procedure mnuValueBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockInSectorIncrDecrItemsClick(Sender: TObject); - procedure mnuSectorTrailerWriteItemClick(Sender: TObject); - procedure mnuViewAlItemsClick(Sender: TObject); - procedure mnuLinearFormatCardItemClick(Sender: TObject); - procedure btnSoftRestartClick(Sender: TObject); - procedure btnReaderResetClick(Sender: TObject); - procedure btnReaderUiSignalClick(Sender: TObject); - procedure TimerTimer(Sender: TObject); - procedure mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); - private - boCONN, - boFunctionStart, - boReaderStart :Boolean; - procedure MainLoop; - procedure OnReaderKeyPress(Sender:TObject;var Key:Char); - procedure OnReaderExit(Sender:TObject); - - procedure SetMenuItems(const aValue:Boolean); //set menu items (enabled ?) - function GetFunctStart: Boolean; - function GetReaderStart: Boolean; - public - bDLCardType:Byte; - procedure SetFunctStart(const Value: Boolean); - procedure SetReaderStart(const Value: Boolean); - property FunctionStart:Boolean read GetFunctStart write SetFunctStart; - property ReaderStart :Boolean read GetReaderStart write SetReaderStart; - end; - -var - frmuFrAdvanced: TfrmuFrAdvanced; - -implementation - -{$R *.dfm} - -procedure TfrmuFrAdvanced.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,33,13,24,pnlReaderKey,'txtReaderKey',false,OnReaderKeyPress,OnReaderExit); - -end; -procedure TfrmuFrAdvanced.OnReaderExit(Sender: TObject); -begin - OnMyExit(Sender,chkReaderHex); -end; - -procedure TfrmuFrAdvanced.OnReaderKeyPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkReaderHex,Key); -end; - -procedure TfrmuFrAdvanced.btnSaveUserDataClick(Sender: TObject); -var - pUserData :PByte; - iFResult :DL_STATUS; -begin - if (txtNewUserData.Text=EmptyStr) then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtNewUserData.SetFocus; - Exit; - end; - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - New(pUserData); - - pUserData:=PByte(txtNewUserData.Text); - iFResult :=WriteUserData(pUserData); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end - else - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end; - finally - pUserData:=nil; - Dispose(pUserData); - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.FormShow(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.chkReaderHexClick(Sender: TObject); -begin - CheckHex(self,5,chkReaderHex,'txtReaderKey'); -end; - -procedure TfrmuFrAdvanced.btnSaveKeyIndexClick(Sender: TObject); -var - bCounter :Byte; - PReaderKey :PByte; - bKeyIndex :Byte; - baReaderKey:array[0..5] of Byte; - s:string; - iFResult :DL_STATUS; -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - bKeyIndex:=cboKeyIndex.ItemIndex; - New(PReaderKey); - for bCounter:=0 to 5 do - begin - if chkReaderHex.Checked then - baReaderKey[bCounter]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text) - else - baReaderKey[bCounter]:=StrToInt(TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text); - end; - PReaderKey:=@baReaderKey; - iFResult :=ReaderKeyWrite(PReaderKey,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbReader,iFResult); - end - else - begin - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbReader,iFResult); - end; - finally - SetFunctStart(false); - PReaderKey:=nil; - Dispose(PReaderKey); - end; -end; - -procedure TfrmuFrAdvanced.mnuBlockReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuBlockInSectorReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockIncrementDecrementItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockIncrDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuExitItemClick(Sender: TObject); -begin - Close; -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorReadWriteItemClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorIncrDecrItemsClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorIncDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuSectorTrailerWriteItemClick(Sender: TObject); -begin - ShowForm(frmSectorTrailerWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuViewAlItemsClick(Sender: TObject); -begin - ShowForm(frmViewAll,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearFormatCardItemClick(Sender: TObject); -begin - ShowForm(frmLinearFormatCard,pnlContainer); -end; - -procedure TfrmuFrAdvanced.btnSoftRestartClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderSoftRestart(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderResetClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderReset(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderUiSignalClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderUISignal(cboLightMode.ItemIndex,cboSoundMode.ItemIndex); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.MainLoop; -var - iRResult, - iCResult, - iReaderType, - iReaderSerial, - iCardSerial, - iUDResult :DL_STATUS; - bCardUIDSize, - bCardType, - bBr :Byte; - caUserData :array[0..16] of Char; - baCardUID :array[0..9] of Byte; - pUserData :PByte; - sBuffer :string; -begin - SetReaderStart(true); - sBuffer:=''; - New(pUserData); - if not boCONN then - begin - iRResult:=ReaderOpen(); - if iRResult=DL_OK then - begin - boCONN:=true; - stbReader.Panels[0].Text:='CONNECTED'; - end - else - begin - stbReader.Panels[0].Text:='NOT CONNECTED'; - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - cboLightMode.ItemIndex:=0; - cboSoundMode.ItemIndex:=0; - SetStatusBar(stbReader,iRResult); - end; - end; - if boCONN then - begin - iRResult:=GetReaderType(iReaderType); - if iRResult=DL_OK then - begin - txtReaderType.Text:='$'+IntToHex(iReaderType,8); - SetStatusBar(stbReader,iRResult); - end - else - begin - boCONN:=false; - ReaderClose(); - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - SetStatusBar(stbReader,iRResult); - end; - - iRResult:=GetReaderSerialNumber(iReaderSerial); - if iRResult=DL_OK then - txtReaderSerial.Text:='$'+IntToHex(iReaderSerial,8); - - iCResult:=GetDlogicCardType(bDLCardType); - if iCResult=DL_OK then - begin - if bDLCardType<=DL_NTAG_216 then - SetMenuItems(false) - else - SetMenuItems(true); - GetCardIdEx(bCardType,baCardUID[0],bCardUIDSize); - for bBr:=0 to bCardUIDSize -1 do - begin - sBuffer:=sBuffer+IntToHex(baCardUID[bBr],2); - end; - txtCardType.Text :='$'+IntToHex(bDLCardType,2); - txtCardUIDSize.Text:='$'+IntToHex(bCardUIDSize,2); - txtCardSerial.Text :='$'+sBuffer; - SetStatusBar(stbCard,iCResult); - end - else - begin - SetMenuItems(true); - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - SetStatusBar(stbCard,iCResult); - end; - - pUserData:=PByte(@caUserData); - iUDResult:=ReadUserData(pUserData); - if iUDResult=DL_OK then - txtUserData.Text:=String(caUserData) - else - txtUserData.Text:=#0; - end; - SetReaderStart(false); - pUserData:=0; - FreeAndNil(pUserData); -end; - -function TfrmuFrAdvanced.GetFunctStart: Boolean; -begin - Result:=boFunctionStart; -end; - -function TfrmuFrAdvanced.GetReaderStart: Boolean; -begin - Result:=boReaderStart; -end; - -procedure TfrmuFrAdvanced.SetFunctStart(const Value: Boolean); -begin - boFunctionStart:=Value; -end; - -procedure TfrmuFrAdvanced.SetReaderStart(const Value: Boolean); -begin - boReaderStart:=Value; -end; - - - - -procedure TfrmuFrAdvanced.TimerTimer(Sender: TObject); -begin - if FunctionStart then Exit; - MainLoop; -end; - -procedure TfrmuFrAdvanced.mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); -var - bRHMajor, - bRHMinor, - bRFMajor, - bRFMinor : Byte; -begin - GetReaderHardwareVersion(bRHMajor,bRHMinor); - GetReaderFirmwareVersion(bRFMajor,bRFMinor); - MessageDlg('Hardware version : ' + IntToStr(bRHMajor) + '.' + IntToStr(bRHMinor) +#13+ - 'Firmware version : ' + IntToStr(bRFMajor) + '.' + IntToStr(bRFMinor),mtInformation,[mbOK],0); - -end; - -procedure TfrmuFrAdvanced.SetMenuItems(const aValue: Boolean); -begin - mnuValueBlockReadWriteItem.Enabled :=aValue; - mnuValueBlockIncrementDecrementItem.Enabled :=aValue; - mnuBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorIncrDecrItems.Enabled :=aValue; - mnuLinearFormatCardItem.Enabled :=aValue; - mnuSectorTrailerWriteItem.Enabled :=aValue; -end; - -end. diff --git a/uFCoderAdvance/uFAdvanced.~ddp b/uFCoderAdvance/uFAdvanced.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance/uFAdvanced.~dfm b/uFCoderAdvance/uFAdvanced.~dfm deleted file mode 100644 index b82cc69..0000000 --- a/uFCoderAdvance/uFAdvanced.~dfm +++ /dev/null @@ -1,523 +0,0 @@ -object frmuFrAdvanced: TfrmuFrAdvanced - Left = 331 - Top = 3 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'uFr Advance' - ClientHeight = 668 - ClientWidth = 541 - Color = clWindow - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - KeyPreview = True - Menu = mnuMeni - OldCreateOrder = False - Position = poDesktopCenter - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object stbCard: TStatusBar - Left = 0 - Top = 649 - Width = 541 - Height = 19 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'CARD STATUS' - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlReader: TPanel - Left = 0 - Top = 0 - Width = 541 - Height = 256 - Align = alTop - Ctl3D = True - ParentCtl3D = False - TabOrder = 1 - object lblReaderType: TLabel - Left = 37 - Top = 16 - Width = 73 - Height = 13 - Caption = 'Reader Type' - end - object lblReaderSerial: TLabel - Left = 37 - Top = 40 - Width = 78 - Height = 13 - Caption = 'Reader Serial' - end - object lblCardType: TLabel - Left = 292 - Top = 16 - Width = 60 - Height = 13 - Caption = 'Card Type' - end - object lblCardSerial: TLabel - Left = 293 - Top = 40 - Width = 65 - Height = 13 - Caption = 'Card Serial' - end - object Bevel1: TBevel - Left = 25 - Top = 65 - Width = 504 - Height = 5 - end - object lblLightMode: TLabel - Left = 41 - Top = 82 - Width = 61 - Height = 13 - Caption = 'Light Mode' - end - object lblSoundMode: TLabel - Left = 41 - Top = 105 - Width = 70 - Height = 13 - Caption = 'Sound Mode' - end - object lblCardUIDSize: TLabel - Left = 421 - Top = 17 - Width = 50 - Height = 13 - Caption = 'UID Size' - end - object stbReader: TStatusBar - Left = 1 - Top = 234 - Width = 539 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object cboLightMode: TComboBox - Left = 133 - Top = 78 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 1 - Text = 'None' - Items.Strings = ( - 'None' - 'Long Green' - 'LongRed' - 'Alternation' - 'Flash') - end - object cboSoundMode: TComboBox - Left = 133 - Top = 102 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 2 - Text = 'None' - Items.Strings = ( - 'None' - 'Short' - 'Long' - 'Double Short' - 'Tripple Short' - 'Tripplet Melody') - end - object btnReaderUiSignal: TButton - Left = 276 - Top = 79 - Width = 110 - Height = 44 - Cursor = crHandPoint - Caption = 'Reader Ui Signal' - TabOrder = 3 - OnClick = btnReaderUiSignalClick - end - object btnSoftRestart: TButton - Left = 392 - Top = 77 - Width = 125 - Height = 23 - Cursor = crHandPoint - Caption = 'Soft Restart' - TabOrder = 4 - OnClick = btnSoftRestartClick - end - object btnReaderReset: TButton - Left = 392 - Top = 101 - Width = 125 - Height = 23 - Caption = 'Reader Reset' - TabOrder = 5 - OnClick = btnReaderResetClick - end - object pgReaderKeyUserData: TPageControl - Left = 39 - Top = 131 - Width = 481 - Height = 97 - ActivePage = tabReaderKey - TabOrder = 6 - object tabReaderKey: TTabSheet - Caption = 'Reader Key' - object pnlReaderKey: TPanel - Left = 2 - Top = 0 - Width = 470 - Height = 67 - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 260 - Top = 48 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object chkReaderHex: TCheckBox - Left = 26 - Top = 38 - Width = 54 - Height = 15 - Caption = 'Hex' - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - OnClick = chkReaderHexClick - end - object cboKeyIndex: TComboBox - Left = 272 - Top = 13 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object btnSaveReaderKey: TButton - Left = 332 - Top = 12 - Width = 125 - Height = 33 - Caption = 'Save ' - TabOrder = 2 - OnClick = btnSaveKeyIndexClick - end - end - end - object tabUserData: TTabSheet - Caption = 'User Data' - ImageIndex = 1 - object lblUserData: TLabel - Left = 9 - Top = 16 - Width = 57 - Height = 13 - Caption = 'User Data' - end - object lblNewUserData: TLabel - Left = 202 - Top = 16 - Width = 85 - Height = 13 - Caption = 'New User Data' - end - object txtUserData: TEdit - Left = 10 - Top = 32 - Width = 183 - Height = 21 - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 0 - end - object txtNewUserData: TEdit - Left = 203 - Top = 32 - Width = 174 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object btnWriteUserData: TButton - Left = 387 - Top = 21 - Width = 81 - Height = 32 - Cursor = crHandPoint - Caption = 'Save' - TabOrder = 2 - OnClick = btnSaveUserDataClick - end - end - end - object txtReaderType: TEdit - Left = 126 - Top = 15 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 7 - end - object txtReaderSerial: TEdit - Left = 126 - Top = 39 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 8 - end - object txtCardType: TEdit - Left = 369 - Top = 14 - Width = 33 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 9 - end - object txtCardUIDSize: TEdit - Left = 480 - Top = 14 - Width = 33 - Height = 19 - Hint = 'Card UID Size' - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ParentShowHint = False - ReadOnly = True - ShowHint = False - TabOrder = 10 - end - object txtCardSerial: TEdit - Left = 369 - Top = 38 - Width = 144 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 11 - end - end - object pnlContainer: TPanel - Left = 0 - Top = 256 - Width = 541 - Height = 393 - Align = alClient - TabOrder = 2 - end - object mnuMeni: TMainMenu - Left = 480 - Top = 616 - object mnuFunctionsItem: TMenuItem - Caption = 'Functions' - object mnuLinearReadWriteItems: TMenuItem - Caption = 'Linear Read/Write' - OnClick = mnuLinearReadWriteItemsClick - end - object SEP1: TMenuItem - Caption = '-' - end - object mnuBlockReadWriteItems: TMenuItem - Caption = 'Block Read/Write' - OnClick = mnuBlockReadWriteItemsClick - end - object mnuBlockInSectorReadWriteItem: TMenuItem - Caption = 'BlockInSector Read/Write' - OnClick = mnuBlockInSectorReadWriteItemClick - end - object SEP2: TMenuItem - Caption = '-' - end - object mnuValueBlockReadWriteItem: TMenuItem - Caption = 'ValueBlock Read/Write' - OnClick = mnuValueBlockReadWriteItemClick - end - object mnuValueBlockIncrementDecrementItem: TMenuItem - Caption = 'ValueBlock Increment/Decrement' - OnClick = mnuValueBlockIncrementDecrementItemClick - end - object SEP3: TMenuItem - Caption = '-' - end - object mnuValueBlockInSectorReadWriteItem: TMenuItem - Caption = 'ValueBlockInSector Read/Write' - OnClick = mnuValueBlockInSectorReadWriteItemClick - end - object mnuValueBlockInSectorIncrDecrItems: TMenuItem - Caption = 'ValueBlockInSector Increment/Decrement' - OnClick = mnuValueBlockInSectorIncrDecrItemsClick - end - object SEP4: TMenuItem - Caption = '-' - end - object mnuSectorTrailerWriteItem: TMenuItem - Caption = 'SectorTrailer Write' - OnClick = mnuSectorTrailerWriteItemClick - end - object mnuLinearFormatCardItem: TMenuItem - Caption = 'LinearFormat Card' - OnClick = mnuLinearFormatCardItemClick - end - object SEP5: TMenuItem - Caption = '-' - end - object mnuReaderHardwareFirmwareversionItem: TMenuItem - Caption = 'Reader Hardware/Firmware version' - OnClick = mnuReaderHardwareFirmwareversionItemClick - end - object mnuExitItem: TMenuItem - Caption = 'Exit' - ShortCut = 16465 - OnClick = mnuExitItemClick - end - end - object mnuViewAlItems: TMenuItem - Caption = 'View All' - OnClick = mnuViewAlItemsClick - end - end - object Timer: TTimer - Interval = 500 - OnTimer = TimerTimer - Left = 480 - Top = 584 - end -end diff --git a/uFCoderAdvance/uFAdvanced.~pas b/uFCoderAdvance/uFAdvanced.~pas deleted file mode 100644 index 93adf92..0000000 --- a/uFCoderAdvance/uFAdvanced.~pas +++ /dev/null @@ -1,476 +0,0 @@ - -unit uFAdvanced; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus,ComCtrls, StdCtrls, ExtCtrls, - uFCoder1x, - Global, - LinearReadWrite, - BlockReadWrite, - BlockInSector, - ValueBlock, - ValueBlockIncDec, - ValueBlockInSector, - ValueBlockInSectorIncrDecr, - SectorTrailersWrite, - LinearFormatsCard, - ViewAll; - - -type - TfrmuFrAdvanced = class(TForm) - stbCard: TStatusBar; - mnuMeni: TMainMenu; - mnuFunctionsItem: TMenuItem; - mnuLinearReadWriteItems: TMenuItem; - pnlReader: TPanel; - lblReaderType: TLabel; - lblReaderSerial: TLabel; - lblCardType: TLabel; - lblCardSerial: TLabel; - Bevel1: TBevel; - Timer: TTimer; - stbReader: TStatusBar; - lblLightMode: TLabel; - cboLightMode: TComboBox; - lblSoundMode: TLabel; - cboSoundMode: TComboBox; - btnReaderUiSignal: TButton; - btnSoftRestart: TButton; - btnReaderReset: TButton; - pnlContainer: TPanel; - SEP1: TMenuItem; - mnuBlockReadWriteItems: TMenuItem; - mnuBlockInSectorReadWriteItem: TMenuItem; - SEP2: TMenuItem; - mnuValueBlockReadWriteItem: TMenuItem; - mnuValueBlockIncrementDecrementItem: TMenuItem; - SEP3: TMenuItem; - mnuExitItem: TMenuItem; - SEP4: TMenuItem; - mnuValueBlockInSectorReadWriteItem: TMenuItem; - mnuValueBlockInSectorIncrDecrItems: TMenuItem; - mnuSectorTrailerWriteItem: TMenuItem; - SEP5: TMenuItem; - mnuViewAlItems: TMenuItem; - mnuLinearFormatCardItem: TMenuItem; - pgReaderKeyUserData: TPageControl; - tabUserData: TTabSheet; - lblUserData: TLabel; - lblNewUserData: TLabel; - txtUserData: TEdit; - txtNewUserData: TEdit; - btnWriteUserData: TButton; - tabReaderKey: TTabSheet; - pnlReaderKey: TPanel; - chkReaderHex: TCheckBox; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - btnSaveReaderKey: TButton; - lblCardUIDSize: TLabel; - txtReaderType: TEdit; - txtReaderSerial: TEdit; - txtCardType: TEdit; - txtCardUIDSize: TEdit; - txtCardSerial: TEdit; - mnuReaderHardwareFirmwareversionItem: TMenuItem; - procedure FormCreate(Sender: TObject); - procedure btnSaveUserDataClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure chkReaderHexClick(Sender: TObject); - procedure btnSaveKeyIndexClick(Sender: TObject); - procedure mnuBlockReadWriteItemsClick(Sender: TObject); - procedure mnuLinearReadWriteItemsClick(Sender: TObject); - procedure mnuBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockIncrementDecrementItemClick(Sender: TObject); - procedure mnuExitItemClick(Sender: TObject); - procedure mnuValueBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockInSectorIncrDecrItemsClick(Sender: TObject); - procedure mnuSectorTrailerWriteItemClick(Sender: TObject); - procedure mnuViewAlItemsClick(Sender: TObject); - procedure mnuLinearFormatCardItemClick(Sender: TObject); - procedure btnSoftRestartClick(Sender: TObject); - procedure btnReaderResetClick(Sender: TObject); - procedure btnReaderUiSignalClick(Sender: TObject); - procedure TimerTimer(Sender: TObject); - procedure mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); - private - boCONN, - boFunctionStart, - boReaderStart :Boolean; - procedure MainLoop; - procedure OnReaderKeyPress(Sender:TObject;var Key:Char); - procedure OnReaderExit(Sender:TObject); - - procedure SetMenuItems(const aValue:Boolean); //set menu items (enabled ?) - function GetFunctStart: Boolean; - function GetReaderStart: Boolean; - public - bDLCardType:Byte; - procedure SetFunctStart(const Value: Boolean); - procedure SetReaderStart(const Value: Boolean); - property FunctionStart:Boolean read GetFunctStart write SetFunctStart; - property ReaderStart :Boolean read GetReaderStart write SetReaderStart; - end; - -var - frmuFrAdvanced: TfrmuFrAdvanced; - -implementation - -{$R *.dfm} - -procedure TfrmuFrAdvanced.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,33,13,24,pnlReaderKey,'txtReaderKey',false,OnReaderKeyPress,OnReaderExit); - -end; -procedure TfrmuFrAdvanced.OnReaderExit(Sender: TObject); -begin - OnMyExit(Sender,chkReaderHex); -end; - -procedure TfrmuFrAdvanced.OnReaderKeyPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkReaderHex,Key); -end; - -procedure TfrmuFrAdvanced.btnSaveUserDataClick(Sender: TObject); -var - pUserData :PByte; - iFResult :DL_STATUS; -begin - if (txtNewUserData.Text=EmptyStr) then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtNewUserData.SetFocus; - Exit; - end; - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - New(pUserData); - - pUserData:=PByte(txtNewUserData.Text); - iFResult :=WriteUserData(pUserData); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end - else - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end; - finally - pUserData:=nil; - Dispose(pUserData); - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.FormShow(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.chkReaderHexClick(Sender: TObject); -begin - CheckHex(self,5,chkReaderHex,'txtReaderKey'); -end; - -procedure TfrmuFrAdvanced.btnSaveKeyIndexClick(Sender: TObject); -var - bCounter :Byte; - PReaderKey :PByte; - bKeyIndex :Byte; - baReaderKey:array[0..5] of Byte; - s:string; - iFResult :DL_STATUS; -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - bKeyIndex:=cboKeyIndex.ItemIndex; - New(PReaderKey); - for bCounter:=0 to 5 do - begin - if chkReaderHex.Checked then - baReaderKey[bCounter]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text) - else - baReaderKey[bCounter]:=StrToInt(TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text); - end; - PReaderKey:=@baReaderKey; - iFResult :=ReaderKeyWrite(PReaderKey,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbReader,iFResult); - end - else - begin - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbReader,iFResult); - end; - finally - SetFunctStart(false); - PReaderKey:=nil; - Dispose(PReaderKey); - end; -end; - -procedure TfrmuFrAdvanced.mnuBlockReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuBlockInSectorReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockIncrementDecrementItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockIncrDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuExitItemClick(Sender: TObject); -begin - Close; -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorReadWriteItemClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorIncrDecrItemsClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorIncDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuSectorTrailerWriteItemClick(Sender: TObject); -begin - ShowForm(frmSectorTrailerWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuViewAlItemsClick(Sender: TObject); -begin - ShowForm(frmViewAll,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearFormatCardItemClick(Sender: TObject); -begin - ShowForm(frmLinearFormatCard,pnlContainer); -end; - -procedure TfrmuFrAdvanced.btnSoftRestartClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderSoftRestart(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderResetClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderReset(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderUiSignalClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderUISignal(cboLightMode.ItemIndex,cboSoundMode.ItemIndex); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.MainLoop; -var - iRResult, - iCResult, - iReaderType, - iReaderSerial, - iCardSerial, - iUDResult :DL_STATUS; - bCardUIDSize, - bCardType, - bBr :Byte; - caUserData :array[0..16] of Char; - baCardUID :array[0..9] of Byte; - pUserData :PByte; - sBuffer :string; -begin - SetReaderStart(true); - sBuffer:=''; - New(pUserData); - if not boCONN then - begin - iRResult:=ReaderOpen(); - if iRResult=DL_OK then - begin - boCONN:=true; - stbReader.Panels[0].Text:='CONNECTED'; - end - else - begin - stbReader.Panels[0].Text:='NOT CONNECTED'; - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - cboLightMode.ItemIndex:=0; - cboSoundMode.ItemIndex:=0; - SetStatusBar(stbReader,iRResult); - end; - end; - if boCONN then - begin - iRResult:=GetReaderType(iReaderType); - if iRResult=DL_OK then - begin - txtReaderType.Text:='$'+IntToHex(iReaderType,8); - SetStatusBar(stbReader,iRResult); - end - else - begin - boCONN:=false; - ReaderClose(); - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - SetStatusBar(stbReader,iRResult); - end; - - iRResult:=GetReaderSerialNumber(iReaderSerial); - if iRResult=DL_OK then - txtReaderSerial.Text:='$'+IntToHex(iReaderSerial,8); - - iCResult:=GetDlogicCardType(bDLCardType); - if iCResult=DL_OK then - begin - if bDLCardType<=uFCoder1x.DL_NTAG_216 then - SetMenuItems(false) - else - SetMenuItems(true); - GetCardIdEx(bCardType,baCardUID[0],bCardUIDSize); - for bBr:=0 to bCardUIDSize -1 do - begin - sBuffer:=sBuffer+IntToHex(baCardUID[bBr],2); - end; - txtCardType.Text :='$'+IntToHex(bDLCardType,2); - txtCardUIDSize.Text:='$'+IntToHex(bCardUIDSize,2); - txtCardSerial.Text :='$'+sBuffer; - SetStatusBar(stbCard,iCResult); - end - else - begin - SetMenuItems(true); - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - SetStatusBar(stbCard,iCResult); - end; - - pUserData:=PByte(@caUserData); - iUDResult:=ReadUserData(pUserData); - if iUDResult=DL_OK then - txtUserData.Text:=String(caUserData) - else - txtUserData.Text:=#0; - end; - SetReaderStart(false); - pUserData:=0; - FreeAndNil(pUserData); -end; - -function TfrmuFrAdvanced.GetFunctStart: Boolean; -begin - Result:=boFunctionStart; -end; - -function TfrmuFrAdvanced.GetReaderStart: Boolean; -begin - Result:=boReaderStart; -end; - -procedure TfrmuFrAdvanced.SetFunctStart(const Value: Boolean); -begin - boFunctionStart:=Value; -end; - -procedure TfrmuFrAdvanced.SetReaderStart(const Value: Boolean); -begin - boReaderStart:=Value; -end; - - - - -procedure TfrmuFrAdvanced.TimerTimer(Sender: TObject); -begin - if FunctionStart then Exit; - MainLoop; -end; - -procedure TfrmuFrAdvanced.mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); -var - bRHMajor, - bRHMinor, - bRFMajor, - bRFMinor : Byte; -begin - GetReaderHardwareVersion(bRHMajor,bRHMinor); - GetReaderFirmwareVersion(bRFMajor,bRFMinor); - MessageDlg('Hardware version : ' + IntToStr(bRHMajor) + '.' + IntToStr(bRHMinor) +#13+ - 'Firmware version : ' + IntToStr(bRFMajor) + '.' + IntToStr(bRFMinor),mtInformation,[mbOK],0); - -end; - -procedure TfrmuFrAdvanced.SetMenuItems(const aValue: Boolean); -begin - mnuValueBlockReadWriteItem.Enabled :=aValue; - mnuValueBlockIncrementDecrementItem.Enabled :=aValue; - mnuBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorIncrDecrItems.Enabled :=aValue; - mnuLinearFormatCardItem.Enabled :=aValue; - mnuSectorTrailerWriteItem.Enabled :=aValue; -end; - -end. diff --git a/uFCoderAdvance/uFCoder-x86.dll b/uFCoderAdvance/uFCoder-x86.dll deleted file mode 100644 index 9cfd3557545a2f76eef924dfb23b28ea473a9a42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226304 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 diff --git a/uFCoderAdvance/uFCoder.pas b/uFCoderAdvance/uFCoder.pas deleted file mode 100644 index 671d6a3..0000000 --- a/uFCoderAdvance/uFCoder.pas +++ /dev/null @@ -1,640 +0,0 @@ -unit uFCoder; - -interface - -const DLL_NAME ='uFCoder-x86.dll'; -const - MIFARE_AUTHENT1A = $60; - MIFARE_AUTHENT1B = $61; - DL_OK = 0; -type - DL_STATUS = LongInt; - -//DLOGIC CARD TYPE -const DL_MIFARE_ULTRALIGHT = $01; -const DL_MIFARE_ULTRALIGHT_EV1_11 = $02; -const DL_MIFARE_ULTRALIGHT_EV1_21 = $03; -const DL_MIFARE_ULTRALIGHT_C = $04; -const DL_NTAG_203 = $05; -const DL_NTAG_210 = $06; -const DL_NTAG_212 = $07; -const DL_NTAG_213 = $08; -const DL_NTAG_215 = $09; -const DL_NTAG_216 = $0A; - -const DL_MIFARE_MINI = $20; -const DL_MIFARE_CLASSIC_1K = $21; -const DL_MIFARE_CLASSIC_4K = $22; -const DL_MIFARE_PLUS_S_2K = $23; -const DL_MIFARE_PLUS_S_4K = $24; -const DL_MIFARE_PLUS_X_2K = $25; -const DL_MIFARE_PLUS_X_4K = $26; -const DL_MIFARE_DESFIRE = $27; -const DL_MIFARE_DESFIRE_EV1_2K = $28; -const DL_MIFARE_DESFIRE_EV1_4K = $29; -const DL_MIFARE_DESFIRE_EV1_8K = $2A; - - - -function ReaderOpen: DL_STATUS stdcall; - -function ReaderReset: DL_STATUS stdcall; - -function ReaderClose: DL_STATUS stdcall; - -function ReaderSoftRestart: DL_STATUS stdcall; - -function GetReaderType(var lpulReaderType: LongInt): DL_STATUS stdcall; - -function GetReaderSerialNumber(var lpulSerialNumber: LongInt): DL_STATUS stdcall ; - -function ReaderUISignal(light_signal_mode: Byte;beep_signal_mode: Byte): DL_STATUS stdcall; - -function GetCardId(var lpucCardType: Byte;var lpulCardSerial: LongInt): DL_STATUS stdcall; - -function GetCardIdEx(var bCardType : Byte; - var bCardUID : Byte; - var bCardUIDSize : Byte): DL_STATUS stdcall; - -function GetDlogicCardType(var pCardType:Byte):DL_STATUS stdcall; - -function LinearRead(aucData:PByte; - usLinearAddress: Word; - usDataLength: Word; - var lpusBytesReturned: Word; - ucKeyMode: Byte; - ucReaderKeyIndex: Byte): DL_STATUS stdcall; - - -function LinearWrite(const aucData:PByte; - usLinearAddress: Word; - usDataLength: Word; - var lpusBytesWritten: Word; - ucKeyMode: Byte; - ucReaderKeyIndex: Byte): DL_STATUS stdcall; - -function LinearFormatCard(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var SectorsFormatted:Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - -function ReaderKeysLock(const bPassword:PByte):DL_STATUS stdcall; -function ReaderKeysUnlock(const bPassword:PByte):DL_STATUS stdcall; - - -function ReaderKeyWrite(const aucKey:PByte;ucKeyIndex: Byte): DL_STATUS stdcall; - -function ReadUserData(aucData:PByte): DL_STATUS stdcall; - -function WriteUserData(const aucData: PByte): DL_STATUS stdcall; - - - -function BlockRead(data:PByte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockWrite(const data: PByte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockInSectorRead(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockInSectorWrite(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function SectorTrailerWrite(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B: PByte; - auth_mode:Byte; - key_index:Byte): DL_STATUS stdcall; - -function SectorTrailerWriteUnsafe(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockRead(value:PLongint; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead(value:PLongint; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockWrite(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite(value: LongInt; - value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockIncrement(increment_value: LongInt; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockDecrement(decrement_value:LongInt; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall ; - - -function ValueBlockInSectorDecrement(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockRead_AKM1(data:PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockWrite_AKM1(const data: PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockInSectorRead_AKM1(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockInSectorWrite_AKM1(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearRead_AKM1(data:PByte; - linear_address: Word; - length: Word; - var bytes_returned: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearWrite_AKM1(const data: PByte; - linear_address: Word; - length: Word; - var bytes_written: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearFormatCard_AKM1(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var sector_formatted:Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function SectorTrailerWrite_AKM1(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B: PByte; - auth_mode:Byte): DL_STATUS stdcall; - -function SectorTrailerWriteUnsafe_AKM1(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockRead_AKM1(value: PLongInt; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead_AKM1(value:PLongInt; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockWrite_AKM1(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite_AKM1(value: LongInt; - value_addr: Byte; - sector_address: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockIncrement_AKM1(increment_value: LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement_AKM1(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockDecrement_AKM1(decrement_value: LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorDecrement_AKM1(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockRead_AKM2(data:PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockWrite_AKM2(const data: PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockInSectorRead_AKM2(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall ; - - -function BlockInSectorWrite_AKM2(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearRead_AKM2(data: PByte; - linear_address: Word; - length: Word; - var bytes_returned: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearWrite_AKM2(const data: PByte; - linear_address: Word; - length: Word; - var bytes_written: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearFormatCard_AKM2(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var sector_formatted:Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function SectorTrailerWrite_AKM2(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B: PByte; - auth_mode:Byte): DL_STATUS stdcall ; - -function SectorTrailerWriteUnsafe_AKM2(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockRead_AKM2(value: pLongInt; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead_AKM2(value:PLongInt; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockWrite_AKM2(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite_AKM2(value: LongInt; - value_addr: Byte; - sector_address: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockIncrement_AKM2(increment_value:LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement_AKM2(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockDecrement_AKM2(decrement_value:LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorDecrement_AKM2(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockRead_PK(data:PByte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function BlockWrite_PK(const data: PByte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function BlockInSectorRead_PK(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function BlockInSectorWrite_PK(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function LinearRead_PK(data:PByte; - linear_address: Word; - length: Word; - var bytes_returned: Word; - auth_mode: Byte; - const key:PByte): DL_STATUS stdcall; - - -function LinearWrite_PK(const data: PByte; - linear_address: Word; - length: Word; - var bytes_written: Word; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function LinearFormatCard_PK(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var sector_formatted:Byte; - auth_mode: Byte; - const key:PByte): DL_STATUS stdcall; - -function SectorTrailerWrite_PK(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B:PByte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - -function SectorTrailerWriteUnsafe_PK(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockRead_PK(value:PLongInt; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead_PK(value: PLongInt; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockWrite_PK(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite_PK(value:LongInt; - value_addr: Byte; - sector_address: Byte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockIncrement_PK(increment_value:LongInt; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement_PK(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockDecrement_PK(decrement_value:LongInt; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorDecrement_PK(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - -function GetReaderHardwareVersion(var bMajor:Byte; - var bMinor:Byte):DL_STATUS stdcall; - -function GetReaderFirmwareVersion(var bMajor:Byte; - var bMinor:Byte):DL_STATUS stdcall; - - - -implementation - -function ReaderOpen; external DLL_NAME; -function ReaderReset; external DLL_NAME; -function ReaderClose; external DLL_NAME; -function ReaderSoftRestart; external DLL_NAME; -function GetReaderType; external DLL_NAME; -function GetReaderSerialNumber; external DLL_NAME; -function ReaderKeyWrite; external DLL_NAME; -function ReaderUISignal; external DLL_NAME; -function ReadUserData; external DLL_NAME; -function WriteUserData; external DLL_NAME; -function GetCardId; external DLL_NAME; -function GetCardIdEx; external DLL_NAME; -function GetDlogicCardType; external DLL_NAME; -function ReaderKeysLock; external DLL_NAME; -function ReaderKeysUnlock; external DLL_NAME; -function BlockRead; external DLL_NAME; -function BlockWrite; external DLL_NAME; -function BlockInSectorRead; external DLL_NAME; -function BlockInSectorWrite; external DLL_NAME; -function LinearRead; external DLL_NAME; -function LinearWrite; external DLL_NAME; -function LinearFormatCard; external DLL_NAME; -function SectorTrailerWrite; external DLL_NAME; -function SectorTrailerWriteUnsafe; external DLL_NAME; -function ValueBlockRead; external DLL_NAME; -function ValueBlockInSectorRead; external DLL_NAME; -function ValueBlockWrite; external DLL_NAME; -function ValueBlockInSectorWrite; external DLL_NAME; -function ValueBlockIncrement; external DLL_NAME; -function ValueBlockInSectorIncrement; external DLL_NAME; -function ValueBlockDecrement; external DLL_NAME; -function ValueBlockInSectorDecrement; external DLL_NAME; -function BlockRead_AKM1; external DLL_NAME; -function BlockWrite_AKM1; external DLL_NAME; -function BlockInSectorRead_AKM1; external DLL_NAME; -function BlockInSectorWrite_AKM1; external DLL_NAME; -function LinearRead_AKM1; external DLL_NAME; -function LinearWrite_AKM1; external DLL_NAME; -function LinearFormatCard_AKM1; external DLL_NAME; -function SectorTrailerWrite_AKM1; external DLL_NAME; -function SectorTrailerWriteUnsafe_AKM1; external DLL_NAME; -function ValueBlockRead_AKM1; external DLL_NAME; -function ValueBlockInSectorRead_AKM1; external DLL_NAME; -function ValueBlockWrite_AKM1; external DLL_NAME; -function ValueBlockInSectorWrite_AKM1; external DLL_NAME; -function ValueBlockIncrement_AKM1; external DLL_NAME; -function ValueBlockInSectorIncrement_AKM1; external DLL_NAME; -function ValueBlockDecrement_AKM1; external DLL_NAME; -function ValueBlockInSectorDecrement_AKM1; external DLL_NAME; -function BlockRead_AKM2; external DLL_NAME; -function BlockWrite_AKM2; external DLL_NAME; -function BlockInSectorRead_AKM2; external DLL_NAME; -function BlockInSectorWrite_AKM2; external DLL_NAME; -function LinearRead_AKM2; external DLL_NAME; -function LinearWrite_AKM2; external DLL_NAME; -function LinearFormatCard_AKM2; external DLL_NAME; -function SectorTrailerWrite_AKM2; external DLL_NAME; -function SectorTrailerWriteUnsafe_AKM2; external DLL_NAME; -function ValueBlockRead_AKM2; external DLL_NAME; -function ValueBlockInSectorRead_AKM2; external DLL_NAME; -function ValueBlockWrite_AKM2; external DLL_NAME; -function ValueBlockInSectorWrite_AKM2; external DLL_NAME; -function ValueBlockIncrement_AKM2; external DLL_NAME; -function ValueBlockInSectorIncrement_AKM2; external DLL_NAME; -function ValueBlockDecrement_AKM2; external DLL_NAME; -function ValueBlockInSectorDecrement_AKM2; external DLL_NAME; -function BlockRead_PK; external DLL_NAME; -function BlockWrite_PK; external DLL_NAME; -function BlockInSectorRead_PK; external DLL_NAME; -function BlockInSectorWrite_PK; external DLL_NAME; -function LinearRead_PK; external DLL_NAME; -function LinearWrite_PK; external DLL_NAME; -function LinearFormatCard_PK; external DLL_NAME; -function SectorTrailerWrite_PK; external DLL_NAME; -function SectorTrailerWriteUnsafe_PK; external DLL_NAME; -function ValueBlockRead_PK; external DLL_NAME; -function ValueBlockInSectorRead_PK; external DLL_NAME; -function ValueBlockWrite_PK; external DLL_NAME; -function ValueBlockInSectorWrite_PK; external DLL_NAME; -function ValueBlockIncrement_PK; external DLL_NAME; -function ValueBlockInSectorIncrement_PK; external DLL_NAME; -function ValueBlockDecrement_PK; external DLL_NAME; -function ValueBlockInSectorDecrement_PK; external DLL_NAME; -function GetReaderHardwareVersion; external DLL_NAME; -function GetReaderFirmwareVersion; external DLL_NAME; - - -end. \ No newline at end of file diff --git a/uFCoderAdvance/uFCoder1x.dll b/uFCoderAdvance/uFCoder1x.dll deleted file mode 100644 index b76e14c8f34aa0d29a7cc113830960d9c41901bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89172 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance/uFrAdvanced.dfm b/uFCoderAdvance/uFrAdvanced.dfm deleted file mode 100644 index fe9b064..0000000 --- a/uFCoderAdvance/uFrAdvanced.dfm +++ /dev/null @@ -1,501 +0,0 @@ -object frmuFrAdvanced: TfrmuFrAdvanced - Left = 423 - Top = 15 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'uFr Advanced' - ClientHeight = 668 - ClientWidth = 529 - Color = clWindow - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - KeyPreview = True - Menu = mnuMeni - OldCreateOrder = False - Position = poScreenCenter - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object stbCard: TStatusBar - Left = 0 - Top = 649 - Width = 529 - Height = 19 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'CARD STATUS' - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlReader: TPanel - Left = 0 - Top = 0 - Width = 529 - Height = 256 - Align = alTop - Ctl3D = True - ParentCtl3D = False - TabOrder = 1 - object lblReaderType: TLabel - Left = 24 - Top = 16 - Width = 73 - Height = 13 - Caption = 'Reader Type' - end - object lblReaderSerial: TLabel - Left = 24 - Top = 40 - Width = 78 - Height = 13 - Caption = 'Reader Serial' - end - object lblCardType: TLabel - Left = 277 - Top = 16 - Width = 60 - Height = 13 - Caption = 'Card Type' - end - object lblCardSerial: TLabel - Left = 277 - Top = 40 - Width = 65 - Height = 13 - Caption = 'Card Serial' - end - object Bevel1: TBevel - Left = 25 - Top = 65 - Width = 478 - Height = 5 - end - object lblLightMode: TLabel - Left = 25 - Top = 83 - Width = 61 - Height = 13 - Caption = 'Light Mode' - end - object lblSoundMode: TLabel - Left = 25 - Top = 106 - Width = 70 - Height = 13 - Caption = 'Sound Mode' - end - object txtReaderType: TStaticText - Left = 116 - Top = 15 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtReaderSerial: TStaticText - Left = 116 - Top = 39 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object txtCardType: TStaticText - Left = 365 - Top = 15 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 2 - end - object txtCardSerial: TStaticText - Left = 365 - Top = 39 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object stbReader: TStatusBar - Left = 1 - Top = 234 - Width = 527 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object cboLightMode: TComboBox - Left = 117 - Top = 79 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 5 - Text = 'None' - Items.Strings = ( - 'None' - 'Long Green' - 'LongRed' - 'Alternation' - 'Flash') - end - object cboSoundMode: TComboBox - Left = 117 - Top = 103 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 6 - Text = 'None' - Items.Strings = ( - 'None' - 'Short' - 'Long' - 'Double Short' - 'Tripple Short' - 'Tripplet Melody') - end - object btnReaderUiSignal: TButton - Left = 260 - Top = 80 - Width = 110 - Height = 44 - Cursor = crHandPoint - Caption = 'Reader Ui Signal' - TabOrder = 7 - OnClick = btnReaderUiSignalClick - end - object btnSoftRestart: TButton - Left = 376 - Top = 78 - Width = 125 - Height = 23 - Cursor = crHandPoint - Caption = 'Soft Restart' - TabOrder = 8 - OnClick = btnSoftRestartClick - end - object btnReaderReset: TButton - Left = 376 - Top = 102 - Width = 125 - Height = 23 - Caption = 'Reader Reset' - TabOrder = 9 - OnClick = btnReaderResetClick - end - object pgReaderKeyUserData: TPageControl - Left = 24 - Top = 131 - Width = 481 - Height = 97 - ActivePage = tabReaderKey - TabOrder = 10 - object tabReaderKey: TTabSheet - Caption = 'Reader Key' - object pnlReaderKey: TPanel - Left = 2 - Top = 0 - Width = 470 - Height = 67 - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 260 - Top = 48 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object chkReaderHex: TCheckBox - Left = 26 - Top = 38 - Width = 54 - Height = 15 - Caption = 'Hex' - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - OnClick = chkReaderHexClick - end - object cboKeyIndex: TComboBox - Left = 272 - Top = 13 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object btnSaveReaderKey: TButton - Left = 332 - Top = 12 - Width = 125 - Height = 33 - Caption = 'Save ' - TabOrder = 2 - OnClick = btnSaveKeyIndexClick - end - end - end - object tabUserData: TTabSheet - Caption = 'User Data' - ImageIndex = 1 - object lblUserData: TLabel - Left = 9 - Top = 16 - Width = 57 - Height = 13 - Caption = 'User Data' - end - object lblNewUserData: TLabel - Left = 202 - Top = 16 - Width = 85 - Height = 13 - Caption = 'New User Data' - end - object txtUserData: TEdit - Left = 10 - Top = 32 - Width = 183 - Height = 21 - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 0 - end - object txtNewUserData: TEdit - Left = 203 - Top = 32 - Width = 174 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object btnWriteUserData: TButton - Left = 387 - Top = 21 - Width = 81 - Height = 32 - Cursor = crHandPoint - Caption = 'Save' - TabOrder = 2 - OnClick = btnSaveUserDataClick - end - end - end - end - object pnlContainer: TPanel - Left = 0 - Top = 256 - Width = 529 - Height = 393 - Align = alClient - TabOrder = 2 - end - object mnuMeni: TMainMenu - Left = 480 - Top = 616 - object mnuFunctionsItem: TMenuItem - Caption = 'Functions' - object mnuLinearReadWriteItems: TMenuItem - Caption = 'Linear Read/Write' - OnClick = mnuLinearReadWriteItemsClick - end - object SEP1: TMenuItem - Caption = '-' - end - object mnuBlockReadWriteItems: TMenuItem - Caption = 'Block Read/Write' - OnClick = mnuBlockReadWriteItemsClick - end - object mnuBlockInSectorReadWriteItem: TMenuItem - Caption = 'BlockInSector Read/Write' - OnClick = mnuBlockInSectorReadWriteItemClick - end - object SEP2: TMenuItem - Caption = '-' - end - object mnuValueBlockReadWriteItem: TMenuItem - Caption = 'ValueBlock Read/Write' - OnClick = mnuValueBlockReadWriteItemClick - end - object mnuValueBlockIncrementDecrementItem: TMenuItem - Caption = 'ValueBlock Increment/Decrement' - OnClick = mnuValueBlockIncrementDecrementItemClick - end - object SEP3: TMenuItem - Caption = '-' - end - object mnuValueBlockInSectorReadWriteItem: TMenuItem - Caption = 'ValueBlockInSector Read/Write' - OnClick = mnuValueBlockInSectorReadWriteItemClick - end - object mnuValueBlockInSectorIncrDecrItems: TMenuItem - Caption = 'ValueBlockInSector Increment/Decrement' - OnClick = mnuValueBlockInSectorIncrDecrItemsClick - end - object SEP4: TMenuItem - Caption = '-' - end - object mnuSectorTrailerWriteItem: TMenuItem - Caption = 'SectorTrailer Write' - OnClick = mnuSectorTrailerWriteItemClick - end - object mnuLinearFormatCardItem: TMenuItem - Caption = 'LinearFormat Card' - OnClick = mnuLinearFormatCardItemClick - end - object SEP5: TMenuItem - Caption = '-' - end - object mnuExitItem: TMenuItem - Caption = 'Exit' - ShortCut = 16465 - OnClick = mnuExitItemClick - end - end - object mnuViewAlItems: TMenuItem - Caption = 'View All' - OnClick = mnuViewAlItemsClick - end - end - object Timer: TTimer - Interval = 500 - OnTimer = TimerTimer - Left = 480 - Top = 584 - end -end diff --git a/uFCoderAdvance/uFrAdvanced.dof b/uFCoderAdvance/uFrAdvanced.dof deleted file mode 100644 index 305eb3d..0000000 --- a/uFCoderAdvance/uFrAdvanced.dof +++ /dev/null @@ -1,136 +0,0 @@ -[FileVersion] -Version=7.0 -[Compiler] -A=8 -B=0 -C=1 -D=1 -E=0 -F=0 -G=1 -H=1 -I=1 -J=0 -K=0 -L=1 -M=0 -N=1 -O=1 -P=1 -Q=0 -R=0 -S=0 -T=0 -U=0 -V=1 -W=0 -X=1 -Y=1 -Z=1 -ShowHints=1 -ShowWarnings=1 -UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -NamespacePrefix= -SymbolDeprecated=1 -SymbolLibrary=1 -SymbolPlatform=1 -UnitLibrary=1 -UnitPlatform=1 -UnitDeprecated=1 -HResultCompat=1 -HidingMember=1 -HiddenVirtual=1 -Garbage=1 -BoundsError=1 -ZeroNilCompat=1 -StringConstTruncated=1 -ForLoopVarVarPar=1 -TypedConstVarPar=1 -AsgToTypedConst=1 -CaseLabelRange=1 -ForVariable=1 -ConstructingAbstract=1 -ComparisonFalse=1 -ComparisonTrue=1 -ComparingSignedUnsigned=1 -CombiningSignedUnsigned=1 -UnsupportedConstruct=1 -FileOpen=1 -FileOpenUnitSrc=1 -BadGlobalSymbol=1 -DuplicateConstructorDestructor=1 -InvalidDirective=1 -PackageNoLink=1 -PackageThreadVar=1 -ImplicitImport=1 -HPPEMITIgnored=1 -NoRetVal=1 -UseBeforeDef=1 -ForLoopVarUndef=1 -UnitNameMismatch=1 -NoCFGFileFound=1 -MessageDirective=1 -ImplicitVariants=1 -UnicodeToLocale=1 -LocaleToUnicode=1 -ImagebaseMultiple=1 -SuspiciousTypecast=1 -PrivatePropAccessor=1 -UnsafeType=0 -UnsafeCode=0 -UnsafeCast=0 -[Linker] -MapFile=0 -OutputObjs=0 -ConsoleApp=1 -DebugInfo=0 -RemoteSymbols=0 -MinStackSize=16384 -MaxStackSize=1048576 -ImageBase=4194304 -ExeDescription= -[Directories] -OutputDir= -UnitOutputDir= -PackageDLLOutputDir= -PackageDCPOutputDir= -SearchPath= -Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;FLabel -Conditionals= -DebugSourceDirs= -UsePackages=0 -[Parameters] -RunParams= -HostApplication= -Launcher= -UseLauncher=0 -DebugCWD= -[Language] -ActiveLang= -ProjectLang= -RootDir= -[Version Info] -IncludeVerInfo=1 -AutoIncBuild=0 -MajorVer=2 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=2074 -CodePage=1250 -[Version Info Keys] -CompanyName=D-Logic -FileDescription=Advanced version.Support for 4k -FileVersion=2.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=2.0.0.0 -Comments= diff --git a/uFCoderAdvance/uFrAdvanced.dpr b/uFCoderAdvance/uFrAdvanced.dpr deleted file mode 100644 index a3742ca..0000000 --- a/uFCoderAdvance/uFrAdvanced.dpr +++ /dev/null @@ -1,36 +0,0 @@ -program uFrAdvanced; - -uses - Forms, - uFAdvanced in 'uFAdvanced.pas' {frmuFrAdvanced}, - Global in 'Global.pas', - uFCoder in 'uFCoder.pas', - LinearReadWrite in 'LinearReadWrite.pas' {frmLinearReadWrite}, - BlockInSector in 'BlockInSector.pas' {frmBlockInSectorReadWrite}, - ValueBlock in 'ValueBlock.pas' {frmValueBlockReadWrite}, - ValueBlockIncDec in 'ValueBlockIncDec.pas' {frmValueBlockIncrDecr}, - ValueBlockInSector in 'ValueBlockInSector.pas' {frmValueBlockInSectorReadWrite}, - ValueBlockInSectorIncrDecr in 'ValueBlockInSectorIncrDecr.pas' {frmValueBlockInSectorIncDecr}, - SectorTrailersWrite in 'SectorTrailersWrite.pas' {frmSectorTrailerWrite}, - ViewAll in 'ViewAll.pas' {frmViewAll}, - LinearFormatsCard in 'LinearFormatsCard.pas' {frmLinearFormatCard}, - BlockReadWrite in 'BlockReadWrite.pas' {frmBlockReadWrite}; - -{$R *.res} - -begin - Application.Initialize; - Application.Title := 'uFr Advanced'; - Application.CreateForm(TfrmuFrAdvanced, frmuFrAdvanced); - Application.CreateForm(TfrmLinearReadWrite, frmLinearReadWrite); - Application.CreateForm(TfrmBlockInSectorReadWrite, frmBlockInSectorReadWrite); - Application.CreateForm(TfrmValueBlockReadWrite, frmValueBlockReadWrite); - Application.CreateForm(TfrmValueBlockIncrDecr, frmValueBlockIncrDecr); - Application.CreateForm(TfrmValueBlockInSectorReadWrite, frmValueBlockInSectorReadWrite); - Application.CreateForm(TfrmValueBlockInSectorIncDecr, frmValueBlockInSectorIncDecr); - Application.CreateForm(TfrmSectorTrailerWrite, frmSectorTrailerWrite); - Application.CreateForm(TfrmViewAll, frmViewAll); - Application.CreateForm(TfrmLinearFormatCard, frmLinearFormatCard); - Application.CreateForm(TfrmBlockReadWrite, frmBlockReadWrite); - Application.Run; -end. diff --git a/uFCoderAdvance/uFrAdvanced.exe b/uFCoderAdvance/uFrAdvanced.exe deleted file mode 100644 index 92ae6548e796b1be37a087c78b5643e221460d3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794112 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%0DNpzM)iw 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

n`ttr4mr=#xpydp5b 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

nQcRJOm3wy7exNabI(2@&EWM=YczMUW~o< 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

%|Y(L&=a_)3vu~KFGv3##MM+i`5 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 diff --git a/uFCoderAdvance_D7/BlockInSector.dcu b/uFCoderAdvance_D7/BlockInSector.dcu deleted file mode 100644 index 03959705ecc62aad890463b347c4ffa637b72c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23835 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 Cp4LhL diff --git a/uFCoderAdvance_D7/BlockInSector.ddp b/uFCoderAdvance_D7/BlockInSector.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/BlockInSector.dfm b/uFCoderAdvance_D7/BlockInSector.dfm deleted file mode 100644 index 2f80812..0000000 --- a/uFCoderAdvance_D7/BlockInSector.dfm +++ /dev/null @@ -1,1021 +0,0 @@ -object frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite - Left = 516 - Top = 235 - Width = 529 - Height = 427 - Caption = 'BlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object stbBlockInSectorReadWrite: TStatusBar - Left = 0 - Top = 369 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockInSectorReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 312 - ActivePage = tabBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabBlockInSectorRead: TTabSheet - Caption = 'BlockInSector Read' - object pnlBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadData: TLabel - Left = 9 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBlockInSectorRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadData: TEdit - Left = 8 - Top = 108 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadClick - end - object txtBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM1: TLabel - Left = 10 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM1: TEdit - Left = 9 - Top = 109 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM1Click - end - object txtBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM2: TLabel - Left = 9 - Top = 96 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM2: TEdit - Left = 8 - Top = 114 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM2Click - end - object txtBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataPK: TLabel - Left = 10 - Top = 97 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataPK: TEdit - Left = 9 - Top = 115 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadPKClick - end - object txtBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabBlockInSectorWrite: TTabSheet - Caption = 'BlockInSector Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISWWriteData: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddress: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddress: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 148 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteData: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddress: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object brnBlockInSectorWrite: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = brnBlockInSectorWriteClick - end - object txtBISWBlockAddress: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISWWriteDataAKM1: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label5: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 193 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM1: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM1: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM1: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM1Click - end - object txtBISWBlockAddressAKM1: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISWWriteDataAKM2: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectoAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 193 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM2: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM2: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM2: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM2Click - end - object txtBISWBlockAddressAKM2: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddressPK: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressPK: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataPK: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressPK: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWritePK: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWritePKClick - end - object txtBISWBlockAddressPK: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/BlockInSector.pas b/uFCoderAdvance_D7/BlockInSector.pas deleted file mode 100644 index e489ba3..0000000 --- a/uFCoderAdvance_D7/BlockInSector.pas +++ /dev/null @@ -1,624 +0,0 @@ -unit BlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder, StdCtrls, ExtCtrls, ComCtrls; - -type - TfrmBlockInSectorReadWrite = class(TForm) - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - lblHeader: TStaticText; - stbBlockInSectorReadWrite: TStatusBar; - pgBlockInSectorReadWrite: TPageControl; - tabBlockInSectorRead: TTabSheet; - pnlBlockInSectorRead: TPanel; - lblBISRSectorAddress: TLabel; - lblBISRReadData: TLabel; - lblBlockInSectorRead: TStaticText; - txtBISRSectorAddress: TEdit; - txtBISRReadData: TEdit; - btnBlockInSectorRead: TButton; - pnlBlockInSectorReadAKM1: TPanel; - lblBISRSectorAddressAKM1: TLabel; - lblBISRReadDataAKM1: TLabel; - lblBISRAKM1: TStaticText; - txtBISRSectorAddressAKM1: TEdit; - txtBISRReadDataAKM1: TEdit; - btnBlockInSectorReadAKM1: TButton; - pnlBlockInSectorReadAKM2: TPanel; - lblBISRSectorAddressAKM2: TLabel; - lblBISRReadDataAKM2: TLabel; - lblBRAKM2: TStaticText; - txtBISRSectorAddressAKM2: TEdit; - txtBISRReadDataAKM2: TEdit; - btnBlockInSectorReadAKM2: TButton; - pnlBlockReadPK: TPanel; - lblBISRSectorAddressPK: TLabel; - lblBISRReadDataPK: TLabel; - lblBRPK: TStaticText; - txtBISRSectorAddressPK: TEdit; - txtBISRReadDataPK: TEdit; - btnBlockInSectorReadPK: TButton; - tabBlockInSectorWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblBISWBlockWrite: TStaticText; - pnlBlockWriteAKM1: TPanel; - lblBISWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBISWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBISRBlockAddress: TLabel; - txtBISRBlockAddress: TEdit; - lblBISRBlockAddressAKM1: TLabel; - txtBISRBlockAddressAKM1: TEdit; - lblBISRBlockAddressAKM2: TLabel; - txtBISRBlockAddressAKM2: TEdit; - lblBISRBlockAddressPK: TLabel; - txtBISRBlockAddressPK: TEdit; - lblBISWWriteData: TLabel; - txtBISWWriteData: TEdit; - lblBISWSectorAddress: TLabel; - txtBISWSectorAddress: TEdit; - brnBlockInSectorWrite: TButton; - lblBISWBlockAddress: TLabel; - txtBISWBlockAddress: TEdit; - lblBISWWriteDataAKM1: TLabel; - txtBISWWriteDataAKM1: TEdit; - Label5: TLabel; - txtBISWSectorAddressAKM1: TEdit; - btnBlockInSectorWriteAKM1: TButton; - lblBISWBlockAddressAKM1: TLabel; - txtBISWBlockAddressAKM1: TEdit; - lblBISWWriteDataAKM2: TLabel; - txtBISWWriteDataAKM2: TEdit; - lblBISWSectoAddressAKM2: TLabel; - txtBISWSectorAddressAKM2: TEdit; - btnBlockInSectorWriteAKM2: TButton; - lblBISWBlockAddressAKM2: TLabel; - txtBISWBlockAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - txtBISWWriteDataPK: TEdit; - lblBISWSectorAddressPK: TLabel; - txtBISWSectorAddressPK: TEdit; - btnBlockInSectorWritePK: TButton; - lblBISWBlockAddressPK: TLabel; - txtBISWBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnBlockInSectorReadClick(Sender: TObject); - procedure btnBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnBlockInSectorReadPKClick(Sender: TObject); - procedure brnBlockInSectorWriteClick(Sender: TObject); - procedure btnBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnBlockInSectorWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmBlockInSectorReadWrite } - -procedure TfrmBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadClick(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddress.Text); - - iFResult:=BlockInSectorRead(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBISRReadData.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM1Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM1.Text); - - iFResult:=BlockInSectorRead_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM1.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM2Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM2.Text); - - iFResult:=BlockInSectorRead_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM2.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadPKClick(Sender: TObject); -var - pData, - pPKKEY :PByte; - baPKKey :array[0..5] of Byte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressPK.Text); - - iFResult:=BlockInSectorRead_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtBISRReadDataPK.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.brnBlockInSectorWriteClick(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddress.Text); - pData :=PByte(txtBISWWriteData.Text); - - iFResult:=BlockInSectorWrite(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM1.Text); - pData :=PByte(txtBISWWriteDataAKM1.Text); - - iFResult:=BlockInSectorWrite_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM2.Text); - pData :=PByte(txtBISWWriteDataAKM2.Text); - - iFResult:=BlockInSectorWrite_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - baPKKey :array[0..5] of Byte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bSectorAddress :=StrToInt(txtBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressPK.Text); - pData :=PByte(txtBISWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockInSectorWrite_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_D7/BlockInSector.~ddp b/uFCoderAdvance_D7/BlockInSector.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/BlockInSector.~dfm b/uFCoderAdvance_D7/BlockInSector.~dfm deleted file mode 100644 index 4e44f9b..0000000 --- a/uFCoderAdvance_D7/BlockInSector.~dfm +++ /dev/null @@ -1,1021 +0,0 @@ -object frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite - Left = 516 - Top = 235 - Width = 529 - Height = 427 - Caption = 'BlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object stbBlockInSectorReadWrite: TStatusBar - Left = 0 - Top = 370 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockInSectorReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 313 - ActivePage = tabBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabBlockInSectorRead: TTabSheet - Caption = 'BlockInSector Read' - object pnlBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadData: TLabel - Left = 9 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBlockInSectorRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadData: TEdit - Left = 8 - Top = 108 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadClick - end - object txtBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM1: TLabel - Left = 10 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM1: TEdit - Left = 9 - Top = 109 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM1Click - end - object txtBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM2: TLabel - Left = 9 - Top = 96 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM2: TEdit - Left = 8 - Top = 114 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM2Click - end - object txtBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataPK: TLabel - Left = 10 - Top = 97 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataPK: TEdit - Left = 9 - Top = 115 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadPKClick - end - object txtBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabBlockInSectorWrite: TTabSheet - Caption = 'BlockInSector Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISWWriteData: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddress: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddress: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteData: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddress: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object brnBlockInSectorWrite: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = brnBlockInSectorWriteClick - end - object txtBISWBlockAddress: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISWWriteDataAKM1: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label5: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM1: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM1: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM1: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM1Click - end - object txtBISWBlockAddressAKM1: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISWWriteDataAKM2: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectoAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM2: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM2: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM2: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM2Click - end - object txtBISWBlockAddressAKM2: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddressPK: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressPK: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataPK: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressPK: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWritePK: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWritePKClick - end - object txtBISWBlockAddressPK: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/BlockInSector.~pas b/uFCoderAdvance_D7/BlockInSector.~pas deleted file mode 100644 index 4c1b046..0000000 --- a/uFCoderAdvance_D7/BlockInSector.~pas +++ /dev/null @@ -1,624 +0,0 @@ -unit BlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder1x, StdCtrls, ExtCtrls, ComCtrls; - -type - TfrmBlockInSectorReadWrite = class(TForm) - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - lblHeader: TStaticText; - stbBlockInSectorReadWrite: TStatusBar; - pgBlockInSectorReadWrite: TPageControl; - tabBlockInSectorRead: TTabSheet; - pnlBlockInSectorRead: TPanel; - lblBISRSectorAddress: TLabel; - lblBISRReadData: TLabel; - lblBlockInSectorRead: TStaticText; - txtBISRSectorAddress: TEdit; - txtBISRReadData: TEdit; - btnBlockInSectorRead: TButton; - pnlBlockInSectorReadAKM1: TPanel; - lblBISRSectorAddressAKM1: TLabel; - lblBISRReadDataAKM1: TLabel; - lblBISRAKM1: TStaticText; - txtBISRSectorAddressAKM1: TEdit; - txtBISRReadDataAKM1: TEdit; - btnBlockInSectorReadAKM1: TButton; - pnlBlockInSectorReadAKM2: TPanel; - lblBISRSectorAddressAKM2: TLabel; - lblBISRReadDataAKM2: TLabel; - lblBRAKM2: TStaticText; - txtBISRSectorAddressAKM2: TEdit; - txtBISRReadDataAKM2: TEdit; - btnBlockInSectorReadAKM2: TButton; - pnlBlockReadPK: TPanel; - lblBISRSectorAddressPK: TLabel; - lblBISRReadDataPK: TLabel; - lblBRPK: TStaticText; - txtBISRSectorAddressPK: TEdit; - txtBISRReadDataPK: TEdit; - btnBlockInSectorReadPK: TButton; - tabBlockInSectorWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblBISWBlockWrite: TStaticText; - pnlBlockWriteAKM1: TPanel; - lblBISWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBISWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBISRBlockAddress: TLabel; - txtBISRBlockAddress: TEdit; - lblBISRBlockAddressAKM1: TLabel; - txtBISRBlockAddressAKM1: TEdit; - lblBISRBlockAddressAKM2: TLabel; - txtBISRBlockAddressAKM2: TEdit; - lblBISRBlockAddressPK: TLabel; - txtBISRBlockAddressPK: TEdit; - lblBISWWriteData: TLabel; - txtBISWWriteData: TEdit; - lblBISWSectorAddress: TLabel; - txtBISWSectorAddress: TEdit; - brnBlockInSectorWrite: TButton; - lblBISWBlockAddress: TLabel; - txtBISWBlockAddress: TEdit; - lblBISWWriteDataAKM1: TLabel; - txtBISWWriteDataAKM1: TEdit; - Label5: TLabel; - txtBISWSectorAddressAKM1: TEdit; - btnBlockInSectorWriteAKM1: TButton; - lblBISWBlockAddressAKM1: TLabel; - txtBISWBlockAddressAKM1: TEdit; - lblBISWWriteDataAKM2: TLabel; - txtBISWWriteDataAKM2: TEdit; - lblBISWSectoAddressAKM2: TLabel; - txtBISWSectorAddressAKM2: TEdit; - btnBlockInSectorWriteAKM2: TButton; - lblBISWBlockAddressAKM2: TLabel; - txtBISWBlockAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - txtBISWWriteDataPK: TEdit; - lblBISWSectorAddressPK: TLabel; - txtBISWSectorAddressPK: TEdit; - btnBlockInSectorWritePK: TButton; - lblBISWBlockAddressPK: TLabel; - txtBISWBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnBlockInSectorReadClick(Sender: TObject); - procedure btnBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnBlockInSectorReadPKClick(Sender: TObject); - procedure brnBlockInSectorWriteClick(Sender: TObject); - procedure btnBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnBlockInSectorWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmBlockInSectorReadWrite } - -procedure TfrmBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadClick(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddress.Text); - - iFResult:=BlockInSectorRead(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBISRReadData.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM1Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM1.Text); - - iFResult:=BlockInSectorRead_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM1.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM2Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM2.Text); - - iFResult:=BlockInSectorRead_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM2.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadPKClick(Sender: TObject); -var - pData, - pPKKEY :PByte; - baPKKey :array[0..5] of Byte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressPK.Text); - - iFResult:=BlockInSectorRead_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtBISRReadDataPK.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.brnBlockInSectorWriteClick(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddress.Text); - pData :=PByte(txtBISWWriteData.Text); - - iFResult:=BlockInSectorWrite(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM1.Text); - pData :=PByte(txtBISWWriteDataAKM1.Text); - - iFResult:=BlockInSectorWrite_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM2.Text); - pData :=PByte(txtBISWWriteDataAKM2.Text); - - iFResult:=BlockInSectorWrite_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - baPKKey :array[0..5] of Byte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bSectorAddress :=StrToInt(txtBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressPK.Text); - pData :=PByte(txtBISWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockInSectorWrite_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_D7/BlockReadWrite.dcu b/uFCoderAdvance_D7/BlockReadWrite.dcu deleted file mode 100644 index b5dc7286ddd0877401d61d8ebc2dec11f6858fd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22935 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 diff --git a/uFCoderAdvance_D7/BlockReadWrite.ddp b/uFCoderAdvance_D7/BlockReadWrite.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/BlockReadWrite.dfm b/uFCoderAdvance_D7/BlockReadWrite.dfm deleted file mode 100644 index 949b5d6..0000000 --- a/uFCoderAdvance_D7/BlockReadWrite.dfm +++ /dev/null @@ -1,893 +0,0 @@ -object frmBlockReadWrite: TfrmBlockReadWrite - Left = 310 - Top = 193 - Width = 540 - Height = 420 - Caption = 'BlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 524 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Block Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 524 - Height = 30 - Align = alTop - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbBlockReadWrite: TStatusBar - Left = 0 - Top = 362 - Width = 524 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 524 - Height = 305 - ActivePage = tabBlockRead - Align = alClient - TabOrder = 3 - object tabBlockRead: TTabSheet - Caption = 'BlockRead' - object pnlBlockRead: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBRBlockAddress: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblReadData: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadData: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockRead: TButton - Left = 152 - Top = 30 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadClick - end - object chkBRHex: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexClick - end - end - object pnlBlockReadAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBRBlockAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM1: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM1: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM1: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM1Click - end - object chkBRHexAKM1: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM1Click - end - end - object pnlBlockReadAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBRBlockAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM2: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM2: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM2: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM2Click - end - object chkBRHexAKM2: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM2Click - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBRBlockAddressPK: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataPK: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataPK: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadPK: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadPKClick - end - object chkBRHexPK: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexPKClick - end - end - end - object tabBlockWrite: TTabSheet - Caption = 'BlockWrite' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBWBlockAddress: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteData: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 82 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddress: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWrite: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteClick - end - object txtBWWriteData: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHex: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBWBlockAddressAKM1: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM1: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWiteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM1: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWriteAKM1: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteAKM1Click - end - object txtBWWriteDataAKM1: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM1: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBWBlockAddressAKM2: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM2: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM2: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBWBlockWriteAKM2: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBWBlockWriteAKM2Click - end - object txtBWWriteDataAKM2: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM2: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBWBlockAddressPK: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataPK: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressPK: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWritePK: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWritePKClick - end - object txtBWWriteDataPK: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexPK: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/BlockReadWrite.pas b/uFCoderAdvance_D7/BlockReadWrite.pas deleted file mode 100644 index cf13a1f..0000000 --- a/uFCoderAdvance_D7/BlockReadWrite.pas +++ /dev/null @@ -1,675 +0,0 @@ -unit BlockReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder, StdCtrls, ExtCtrls, ComCtrls; - - const - ARRAY_LENGTH=16; -type - TbaReadData=array[0..ARRAY_LENGTH] of byte; - PbaReadData=^TbaReadData; -type - TfrmBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbBlockReadWrite: TStatusBar; - pgBlockReadWrite: TPageControl; - tabBlockRead: TTabSheet; - tabBlockWrite: TTabSheet; - pnlBlockRead: TPanel; - pnlBlockReadAKM1: TPanel; - pnlBlockReadAKM2: TPanel; - pnlBlockReadPK: TPanel; - lblBlockRead: TStaticText; - lblBRAKM1: TStaticText; - lblBRAKM2: TStaticText; - lblBRPK: TStaticText; - lblBRBlockAddress: TLabel; - txtBRBlockAddress: TEdit; - txtBRReadData: TEdit; - lblReadData: TLabel; - btnBlockRead: TButton; - lblBRBlockAddressAKM1: TLabel; - txtBRBlockAddressAKM1: TEdit; - txtBRReadDataAKM1: TEdit; - lblBRReadDataAKM1: TLabel; - btnBlockReadAKM1: TButton; - lblBRBlockAddressAKM2: TLabel; - txtBRBlockAddressAKM2: TEdit; - txtBRReadDataAKM2: TEdit; - lblBRReadDataAKM2: TLabel; - btnBlockReadAKM2: TButton; - lblBRBlockAddressPK: TLabel; - txtBRBlockAddressPK: TEdit; - txtBRReadDataPK: TEdit; - lblBRReadDataPK: TLabel; - btnBlockReadPK: TButton; - pnlBlockWrite: TPanel; - lblBWBlockAddress: TLabel; - lblBWBlockRead: TStaticText; - txtBWBlockAddress: TEdit; - btnBlockWrite: TButton; - pnlBlockWriteAKM1: TPanel; - lblBWBlockWiteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBWWriteData: TLabel; - txtBWWriteData: TEdit; - lblBWBlockAddressAKM1: TLabel; - txtBWBlockAddressAKM1: TEdit; - btnBlockWriteAKM1: TButton; - lblBWWriteDataAKM1: TLabel; - txtBWWriteDataAKM1: TEdit; - lblBWBlockAddressAKM2: TLabel; - txtBWBlockAddressAKM2: TEdit; - btnBWBlockWriteAKM2: TButton; - lblBWWriteDataAKM2: TLabel; - txtBWWriteDataAKM2: TEdit; - lblBWBlockAddressPK: TLabel; - txtBWBlockAddressPK: TEdit; - btnBlockWritePK: TButton; - lblBWWriteDataPK: TLabel; - txtBWWriteDataPK: TEdit; - chkBRHex: TCheckBox; - chkBRHexAKM1: TCheckBox; - chkBRHexAKM2: TCheckBox; - chkBRHexPK: TCheckBox; - chkBWHex: TCheckBox; - chkBWHexAKM1: TCheckBox; - chkBWHexAKM2: TCheckBox; - chkBWHexPK: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure btnBlockReadClick(Sender: TObject); - procedure btnBlockReadAKM1Click(Sender: TObject); - procedure btnBlockReadAKM2Click(Sender: TObject); - procedure btnBlockReadPKClick(Sender: TObject); - procedure btnBlockWriteClick(Sender: TObject); - procedure btnBlockWriteAKM1Click(Sender: TObject); - procedure btnBWBlockWriteAKM2Click(Sender: TObject); - procedure btnBlockWritePKClick(Sender: TObject); - - procedure chkBRHexClick(Sender: TObject); - procedure chkBRHexAKM1Click(Sender: TObject); - procedure chkBRHexAKM2Click(Sender: TObject); - procedure chkBRHexPKClick(Sender: TObject); - private - PBufferData:PByte; - caReadData :array[0..ARRAY_LENGTH] of char; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - function HexConvert(sTextBoxValue:String):TbaReadData; - function ConvertToHex(chkBox: Boolean): string; - public - { Public declarations } - end; - -var - frmBlockReadWrite: TfrmBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmBlockReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockReadWrite.btnBlockReadClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBRBlockAddress.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtBRReadData.Text:=ConvertToHex(chkBRHex.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM1.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM1(pData,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBRReadDataAKM1.Text:=ConvertToHex(chkBRHexAKM1.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM2.SetFocus(); - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM2.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM2(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtBRReadDataAKM2.Text:=ConvertToHex(chkBRHexAKM2.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockReadPKClick(Sender: TObject); -var - pPKKey :PByte; - pData :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; -begin - try - if Trim(txtBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bBlockAddress :=StrToInt(txtBRBlockAddressPK.Text); - pData :=PByte(@caReadData); - pPKKey :=@baPKKey; - - iFResult:=BlockRead_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtBRReadDataPK.Text:=ConvertToHex(chkBRHexPK.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress, - bKeyIndex :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBWBlockAddress.Text); - - if chkBWHex.Checked then - begin - baBufferData :=HexConvert(txtBWWriteData.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM1.Text); - - if chkBWHexAKM1.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM1.Text); - pData :=PByte(@baBufferData); - end - else - pData:=PByte(txtBWWriteDataAKM1.Text); - - iFResult:=BlockWrite_AKM1(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBWBlockWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM2.Text); - - if chkBWHexAKM2.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM2.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite_AKM2(PData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - if chkBWHexPK.Checked then - begin - baBufferData:=HexConvert(txtBWWriteDataPK.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockWrite_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -function TfrmBlockReadWrite.HexConvert(sTextBoxValue: String):TbaReadData; -var - bCount:byte; - bLength:byte; - bHexCounter:byte; - sTextBuffer:String; - bArrayHex:array[0..ARRAY_LENGTH] of byte; - -begin - bCount:=1; - bHexCounter:=0; - bLength:= Length(sTextBoxValue); - try - while bCount;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/BlockReadWrite.~dfm b/uFCoderAdvance_D7/BlockReadWrite.~dfm deleted file mode 100644 index e351235..0000000 --- a/uFCoderAdvance_D7/BlockReadWrite.~dfm +++ /dev/null @@ -1,893 +0,0 @@ -object frmBlockReadWrite: TfrmBlockReadWrite - Left = 310 - Top = 193 - Width = 540 - Height = 420 - Caption = 'BlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 524 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Block Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 524 - Height = 30 - Align = alTop - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbBlockReadWrite: TStatusBar - Left = 0 - Top = 363 - Width = 524 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 524 - Height = 306 - ActivePage = tabBlockRead - Align = alClient - TabOrder = 3 - object tabBlockRead: TTabSheet - Caption = 'BlockRead' - object pnlBlockRead: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBRBlockAddress: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblReadData: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadData: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockRead: TButton - Left = 152 - Top = 30 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadClick - end - object chkBRHex: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexClick - end - end - object pnlBlockReadAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBRBlockAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM1: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM1: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM1: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM1Click - end - object chkBRHexAKM1: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM1Click - end - end - object pnlBlockReadAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBRBlockAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM2: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM2: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM2: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM2Click - end - object chkBRHexAKM2: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM2Click - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBRBlockAddressPK: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataPK: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataPK: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadPK: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadPKClick - end - object chkBRHexPK: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexPKClick - end - end - end - object tabBlockWrite: TTabSheet - Caption = 'BlockWrite' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBWBlockAddress: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteData: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 82 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddress: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWrite: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteClick - end - object txtBWWriteData: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHex: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBWBlockAddressAKM1: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM1: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWiteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM1: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWriteAKM1: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteAKM1Click - end - object txtBWWriteDataAKM1: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM1: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBWBlockAddressAKM2: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM2: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM2: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBWBlockWriteAKM2: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBWBlockWriteAKM2Click - end - object txtBWWriteDataAKM2: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM2: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBWBlockAddressPK: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataPK: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressPK: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWritePK: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWritePKClick - end - object txtBWWriteDataPK: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexPK: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/BlockReadWrite.~pas b/uFCoderAdvance_D7/BlockReadWrite.~pas deleted file mode 100644 index 3efeba8..0000000 --- a/uFCoderAdvance_D7/BlockReadWrite.~pas +++ /dev/null @@ -1,675 +0,0 @@ -unit BlockReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, StdCtrls, ExtCtrls, ComCtrls; - - const - ARRAY_LENGTH=16; -type - TbaReadData=array[0..ARRAY_LENGTH] of byte; - PbaReadData=^TbaReadData; -type - TfrmBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbBlockReadWrite: TStatusBar; - pgBlockReadWrite: TPageControl; - tabBlockRead: TTabSheet; - tabBlockWrite: TTabSheet; - pnlBlockRead: TPanel; - pnlBlockReadAKM1: TPanel; - pnlBlockReadAKM2: TPanel; - pnlBlockReadPK: TPanel; - lblBlockRead: TStaticText; - lblBRAKM1: TStaticText; - lblBRAKM2: TStaticText; - lblBRPK: TStaticText; - lblBRBlockAddress: TLabel; - txtBRBlockAddress: TEdit; - txtBRReadData: TEdit; - lblReadData: TLabel; - btnBlockRead: TButton; - lblBRBlockAddressAKM1: TLabel; - txtBRBlockAddressAKM1: TEdit; - txtBRReadDataAKM1: TEdit; - lblBRReadDataAKM1: TLabel; - btnBlockReadAKM1: TButton; - lblBRBlockAddressAKM2: TLabel; - txtBRBlockAddressAKM2: TEdit; - txtBRReadDataAKM2: TEdit; - lblBRReadDataAKM2: TLabel; - btnBlockReadAKM2: TButton; - lblBRBlockAddressPK: TLabel; - txtBRBlockAddressPK: TEdit; - txtBRReadDataPK: TEdit; - lblBRReadDataPK: TLabel; - btnBlockReadPK: TButton; - pnlBlockWrite: TPanel; - lblBWBlockAddress: TLabel; - lblBWBlockRead: TStaticText; - txtBWBlockAddress: TEdit; - btnBlockWrite: TButton; - pnlBlockWriteAKM1: TPanel; - lblBWBlockWiteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBWWriteData: TLabel; - txtBWWriteData: TEdit; - lblBWBlockAddressAKM1: TLabel; - txtBWBlockAddressAKM1: TEdit; - btnBlockWriteAKM1: TButton; - lblBWWriteDataAKM1: TLabel; - txtBWWriteDataAKM1: TEdit; - lblBWBlockAddressAKM2: TLabel; - txtBWBlockAddressAKM2: TEdit; - btnBWBlockWriteAKM2: TButton; - lblBWWriteDataAKM2: TLabel; - txtBWWriteDataAKM2: TEdit; - lblBWBlockAddressPK: TLabel; - txtBWBlockAddressPK: TEdit; - btnBlockWritePK: TButton; - lblBWWriteDataPK: TLabel; - txtBWWriteDataPK: TEdit; - chkBRHex: TCheckBox; - chkBRHexAKM1: TCheckBox; - chkBRHexAKM2: TCheckBox; - chkBRHexPK: TCheckBox; - chkBWHex: TCheckBox; - chkBWHexAKM1: TCheckBox; - chkBWHexAKM2: TCheckBox; - chkBWHexPK: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure btnBlockReadClick(Sender: TObject); - procedure btnBlockReadAKM1Click(Sender: TObject); - procedure btnBlockReadAKM2Click(Sender: TObject); - procedure btnBlockReadPKClick(Sender: TObject); - procedure btnBlockWriteClick(Sender: TObject); - procedure btnBlockWriteAKM1Click(Sender: TObject); - procedure btnBWBlockWriteAKM2Click(Sender: TObject); - procedure btnBlockWritePKClick(Sender: TObject); - - procedure chkBRHexClick(Sender: TObject); - procedure chkBRHexAKM1Click(Sender: TObject); - procedure chkBRHexAKM2Click(Sender: TObject); - procedure chkBRHexPKClick(Sender: TObject); - private - PBufferData:PByte; - caReadData :array[0..ARRAY_LENGTH] of char; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - function HexConvert(sTextBoxValue:String):TbaReadData; - function ConvertToHex(chkBox: Boolean): string; - public - { Public declarations } - end; - -var - frmBlockReadWrite: TfrmBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmBlockReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockReadWrite.btnBlockReadClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBRBlockAddress.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtBRReadData.Text:=ConvertToHex(chkBRHex.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM1.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM1(pData,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBRReadDataAKM1.Text:=ConvertToHex(chkBRHexAKM1.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM2.SetFocus(); - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM2.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM2(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtBRReadDataAKM2.Text:=ConvertToHex(chkBRHexAKM2.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockReadPKClick(Sender: TObject); -var - pPKKey :PByte; - pData :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; -begin - try - if Trim(txtBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bBlockAddress :=StrToInt(txtBRBlockAddressPK.Text); - pData :=PByte(@caReadData); - pPKKey :=@baPKKey; - - iFResult:=BlockRead_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtBRReadDataPK.Text:=ConvertToHex(chkBRHexPK.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress, - bKeyIndex :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBWBlockAddress.Text); - - if chkBWHex.Checked then - begin - baBufferData :=HexConvert(txtBWWriteData.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM1.Text); - - if chkBWHexAKM1.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM1.Text); - pData :=PByte(@baBufferData); - end - else - pData:=PByte(txtBWWriteDataAKM1.Text); - - iFResult:=BlockWrite_AKM1(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBWBlockWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM2.Text); - - if chkBWHexAKM2.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM2.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite_AKM2(PData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - if chkBWHexPK.Checked then - begin - baBufferData:=HexConvert(txtBWWriteDataPK.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockWrite_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -function TfrmBlockReadWrite.HexConvert(sTextBoxValue: String):TbaReadData; -var - bCount:byte; - bLength:byte; - bHexCounter:byte; - sTextBuffer:String; - bArrayHex:array[0..ARRAY_LENGTH] of byte; - -begin - bCount:=1; - bHexCounter:=0; - bLength:= Length(sTextBoxValue); - try - while bCount&6ZEHvFEOVE; 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 X+om}}j!hpYzngv&bHwPRmht=#xLaxY diff --git a/uFCoderAdvance_D7/Global.pas b/uFCoderAdvance_D7/Global.pas deleted file mode 100644 index a5cefc1..0000000 --- a/uFCoderAdvance_D7/Global.pas +++ /dev/null @@ -1,263 +0,0 @@ -unit Global; -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus, ComCtrls, StdCtrls, ExtCtrls,uFCoder; - - - procedure Errors_Code; - procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); - procedure ShowForm(the_form:TForm;pnlContainer:TPanel); - procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; - key_parent: TPanel;key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent; - OnKey_Exit:TNotifyEvent); - - procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); - procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); - procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); - procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); - procedure OnPK_KEY_Exit(Sender:TObject); - function AuthMode(RadioButton:TRadioButton):Byte; - function MaxBlocks(): Integer; - - const - FERROR_LIGHT = 2; - FERROR_SOUND = 0; //2 - FRES_OK_LIGHT = 4; - FRES_OK_SOUND = 0; //4 - KEY_INDEX = 0; - MAX_KEY_INDEX = 5; - - CONVERT_ERROR ='You must enter a number between 0 and 255 or 0 and FF hexadecimal !'; - APPROPRIATE_FORMAT ='You must enter a number between 0 and 255 !'; - MEMORY_FILL =0; - - // sectors and blocks - MAX_SECTORS_1k = 16; - MAX_SECTORS_4k = 40; - - // max page for NTAG and MIFARE ULTRALIGHT - MAX_PAGE_NTAG203 = 39; - MAX_PAGE_ULTRALIGHT = 15; - MAX_PAGE_ULTRALIGHT_C = 39; - -var - ERROR_CODE:array[0..200] of string; - - - -implementation -uses - uFAdvanced; - - - -function AuthMode(RadioButton:TRadioButton):Byte; -begin - if RadioButton.Checked then - Result:=MIFARE_AUTHENT1A - else - Result:=MIFARE_AUTHENT1B; -end; - - -procedure ShowForm(the_form:TForm;pnlContainer:TPanel); -begin - with the_form do begin - the_form.BorderStyle:=bsNone; - the_form.Align :=alClient; - the_form.Parent :=pnlContainer; - the_form.Show; - end; -end; -procedure Errors_Code; -begin - ERROR_CODE[$00]:='DL_OK '; - ERROR_CODE[$01]:='COMMUNICATION_ERROR '; - ERROR_CODE[$02]:='CHKSUM_ERROR '; - ERROR_CODE[$03]:='READING_ERROR '; - ERROR_CODE[$04]:='WRITING_ERROR '; - ERROR_CODE[$05]:='BUFFER_OVERFLOW '; - ERROR_CODE[$06]:='MAX_ADDRESS_EXCEEDED '; - ERROR_CODE[$07]:='MAX_KEY_INDEX_EXCEEDED '; - ERROR_CODE[$08]:='NO_CARD '; - ERROR_CODE[$09]:='COMMAND_NOT_SUPPORTED '; - ERROR_CODE[$0A]:='FORBIDEN_DIRECT_WRITE_IN_SECTOR_TRAILER '; - ERROR_CODE[$0B]:='ADDRESSED_BLOCK_IS_NOT_SECTOR_TRAILER '; - ERROR_CODE[$0C]:='WRONG_ADDRESS_MODE '; - ERROR_CODE[$0D]:='WRONG_ACCESS_BITS_VALUES '; - ERROR_CODE[$0E]:='AUTH_ERROR '; - ERROR_CODE[$0F]:='PARAMETERS_ERROR '; - ERROR_CODE[$10]:='MAX_SIZE_EXCEEDED '; - ERROR_CODE[$11]:='UNSUPPORTED_CARD_TYPE '; - - ERROR_CODE[$50]:='COMMUNICATION_BREAK '; - ERROR_CODE[$51]:='NO_MEMORY_ERROR '; - ERROR_CODE[$52]:='CAN_NOT_OPEN_READER '; - ERROR_CODE[$53]:='READER_NOT_SUPPORTED '; - ERROR_CODE[$54]:='READER_OPENING_ERROR '; - ERROR_CODE[$55]:='READER_PORT_NOT_OPENED '; - ERROR_CODE[$56]:='CANT_CLOSE_READER_PORT '; - - ERROR_CODE[$70]:='WRITE_VERIFICATION_ERROR '; - ERROR_CODE[$71]:='BUFFER_SIZE_EXCEEDED '; - ERROR_CODE[$72]:='VALUE_BLOCK_INVALID '; - ERROR_CODE[$73]:='VALUE_BLOCK_ADDR_INVALID '; - ERROR_CODE[$74]:='VALUE_BLOCK_MANIPULATION_ERROR '; - ERROR_CODE[$75]:='WRONG_UI_MODE'; - ERROR_CODE[$76]:='KEYS_LOCKED'; - ERROR_CODE[$77]:='KEYS_UNLOCKED'; - ERROR_CODE[$78]:='WRONG_PASSWORD'; - ERROR_CODE[$79]:='CAN_NOT_LOCK_DEVICE'; - ERROR_CODE[$7A]:='CAN_NOT_UNLOCK_DEVICE'; - ERROR_CODE[$7B]:='DEVICE_EEPROM_BUSY'; - ERROR_CODE[$7C]:='RTC_SET_ERROR'; - - ERROR_CODE[$A0]:='FT_STATUS_ERROR_1'; - ERROR_CODE[$A1]:='FT_STATUS_ERROR_2'; - ERROR_CODE[$A2]:='FT_STATUS_ERROR_3'; - ERROR_CODE[$A3]:='FT_STATUS_ERROR_4'; - ERROR_CODE[$A4]:='FT_STATUS_ERROR_5'; - ERROR_CODE[$A5]:='FT_STATUS_ERROR_6'; - ERROR_CODE[$A6]:='FT_STATUS_ERROR_7'; - ERROR_CODE[$A7]:='FT_STATUS_ERROR_8'; - ERROR_CODE[$A8]:='FT_STATUS_ERROR_9'; -end; - -procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); -begin - StatusBar.Panels[1].Text:=HexDisplayPrefix+IntToHex(Result,2); - StatusBar.Panels[2].Text:=ERROR_CODE[Result]; -end; - -function MaxBlocks(): Integer; -var - bTypeOfCard:Byte; -begin - bTypeOfCard:=frmuFrAdvanced.bDLCardType; - - case bTypeOfCard of - DL_NTAG_203 : Result:= MAX_PAGE_NTAG203; - DL_MIFARE_ULTRALIGHT : Result:= MAX_PAGE_ULTRALIGHT; - DL_MIFARE_ULTRALIGHT_C : Result:= MAX_PAGE_ULTRALIGHT_C; - DL_MIFARE_CLASSIC_1k : Result:=(MAX_SECTORS_1k *4); - DL_MIFARE_CLASSIC_4k, - DL_MIFARE_PLUS_S_4K : Result:=((MAX_SECTORS_1k*2)*4)+((MAX_SECTORS_1k-8)*16) ; - end; -end; - - - - -procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; key_parent: TPanel; - key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent;OnKey_Exit:TNotifyEvent); -var - br:Byte; - edit_key:array[0..5] of TEdit; - -begin - for br:=0 to 5 do - begin - edit_key[br] :=TEdit.Create(key_owner); - with edit_key[br] do begin - Height :=key_height; - Width :=key_width; - Top :=key_top; - Left :=key_left+(key_width*br+2); - Name :=key_name+IntToStr(br+1); - CharCase :=ecUpperCase; - Font.Name :='Verdana'; - Font.Style:=[fsBold]; - OnKeyPress:=OnKey_press; - OnExit :=OnKey_Exit; - Text :='255'; - MaxLength :=3; - ReadOnly :=key_read_only; - Parent :=key_parent; - end; - end; -end; -procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case Check_box.Checked of - true:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:= - IntToHex(StrToInt(TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text),2); - end; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:=IntToStr(StrToInt(HexDisplayPrefix+TEdit - (owner.FindComponent(edit_name+IntToStr(br+1))).Text)); - end; - end; - end; -end; -procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case def_check_box.Checked of - true:begin for br:=0 to number_edit do begin - - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:='255'; - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=true; - end; - hex_box.Checked:=false; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=false; - end; - end; - end; -end; -procedure OnPK_KEY_Exit(Sender:TObject); -begin - - if ((sender as TEdit).Text>IntToStr(255)) or ((Sender as TEdit).Text=EmptyStr) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; -end; -procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); -begin - if (Sender as TEdit).Text=EmptyStr then begin - with (Sender as TEdit) do - begin - Undo(); - SetFocus(); - end; - end; - if check_hex_box.Checked then Exit; - if ((sender as TEdit).Text>IntToStr(255)) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; - -end; -procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); -begin - if (check_hex_box.Checked) then - begin - (Sender as TEdit).MaxLength:=2; - if (Key in['0'..'9']) or (Key in['a'..'f']) or (ord(Key)=8) then Exit else Key:=#0; - end - else begin - (Sender as TEdit).MaxLength:=3; - if (Key in['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; - end; -end; - - - - //-----End--- -end. diff --git a/uFCoderAdvance_D7/Global.~pas b/uFCoderAdvance_D7/Global.~pas deleted file mode 100644 index 86cd4ba..0000000 --- a/uFCoderAdvance_D7/Global.~pas +++ /dev/null @@ -1,263 +0,0 @@ -unit Global; -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus, ComCtrls, StdCtrls, ExtCtrls,uFCoder1x; - - - procedure Errors_Code; - procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); - procedure ShowForm(the_form:TForm;pnlContainer:TPanel); - procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; - key_parent: TPanel;key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent; - OnKey_Exit:TNotifyEvent); - - procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); - procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); - procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); - procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); - procedure OnPK_KEY_Exit(Sender:TObject); - function AuthMode(RadioButton:TRadioButton):Byte; - function MaxBlocks(): Integer; - - const - FERROR_LIGHT = 2; - FERROR_SOUND = 0; //2 - FRES_OK_LIGHT = 4; - FRES_OK_SOUND = 0; //4 - KEY_INDEX = 0; - MAX_KEY_INDEX = 5; - - CONVERT_ERROR ='You must enter a number between 0 and 255 or 0 and FF hexadecimal !'; - APPROPRIATE_FORMAT ='You must enter a number between 0 and 255 !'; - MEMORY_FILL =0; - - // sectors and blocks - MAX_SECTORS_1k = 16; - MAX_SECTORS_4k = 40; - - // max page for NTAG and MIFARE ULTRALIGHT - MAX_PAGE_NTAG203 = 39; - MAX_PAGE_ULTRALIGHT = 15; - MAX_PAGE_ULTRALIGHT_C = 39; - -var - ERROR_CODE:array[0..200] of string; - - - -implementation -uses - uFAdvanced; - - - -function AuthMode(RadioButton:TRadioButton):Byte; -begin - if RadioButton.Checked then - Result:=MIFARE_AUTHENT1A - else - Result:=MIFARE_AUTHENT1B; -end; - - -procedure ShowForm(the_form:TForm;pnlContainer:TPanel); -begin - with the_form do begin - the_form.BorderStyle:=bsNone; - the_form.Align :=alClient; - the_form.Parent :=pnlContainer; - the_form.Show; - end; -end; -procedure Errors_Code; -begin - ERROR_CODE[$00]:='DL_OK '; - ERROR_CODE[$01]:='COMMUNICATION_ERROR '; - ERROR_CODE[$02]:='CHKSUM_ERROR '; - ERROR_CODE[$03]:='READING_ERROR '; - ERROR_CODE[$04]:='WRITING_ERROR '; - ERROR_CODE[$05]:='BUFFER_OVERFLOW '; - ERROR_CODE[$06]:='MAX_ADDRESS_EXCEEDED '; - ERROR_CODE[$07]:='MAX_KEY_INDEX_EXCEEDED '; - ERROR_CODE[$08]:='NO_CARD '; - ERROR_CODE[$09]:='COMMAND_NOT_SUPPORTED '; - ERROR_CODE[$0A]:='FORBIDEN_DIRECT_WRITE_IN_SECTOR_TRAILER '; - ERROR_CODE[$0B]:='ADDRESSED_BLOCK_IS_NOT_SECTOR_TRAILER '; - ERROR_CODE[$0C]:='WRONG_ADDRESS_MODE '; - ERROR_CODE[$0D]:='WRONG_ACCESS_BITS_VALUES '; - ERROR_CODE[$0E]:='AUTH_ERROR '; - ERROR_CODE[$0F]:='PARAMETERS_ERROR '; - ERROR_CODE[$10]:='MAX_SIZE_EXCEEDED '; - ERROR_CODE[$11]:='UNSUPPORTED_CARD_TYPE '; - - ERROR_CODE[$50]:='COMMUNICATION_BREAK '; - ERROR_CODE[$51]:='NO_MEMORY_ERROR '; - ERROR_CODE[$52]:='CAN_NOT_OPEN_READER '; - ERROR_CODE[$53]:='READER_NOT_SUPPORTED '; - ERROR_CODE[$54]:='READER_OPENING_ERROR '; - ERROR_CODE[$55]:='READER_PORT_NOT_OPENED '; - ERROR_CODE[$56]:='CANT_CLOSE_READER_PORT '; - - ERROR_CODE[$70]:='WRITE_VERIFICATION_ERROR '; - ERROR_CODE[$71]:='BUFFER_SIZE_EXCEEDED '; - ERROR_CODE[$72]:='VALUE_BLOCK_INVALID '; - ERROR_CODE[$73]:='VALUE_BLOCK_ADDR_INVALID '; - ERROR_CODE[$74]:='VALUE_BLOCK_MANIPULATION_ERROR '; - ERROR_CODE[$75]:='WRONG_UI_MODE'; - ERROR_CODE[$76]:='KEYS_LOCKED'; - ERROR_CODE[$77]:='KEYS_UNLOCKED'; - ERROR_CODE[$78]:='WRONG_PASSWORD'; - ERROR_CODE[$79]:='CAN_NOT_LOCK_DEVICE'; - ERROR_CODE[$7A]:='CAN_NOT_UNLOCK_DEVICE'; - ERROR_CODE[$7B]:='DEVICE_EEPROM_BUSY'; - ERROR_CODE[$7C]:='RTC_SET_ERROR'; - - ERROR_CODE[$A0]:='FT_STATUS_ERROR_1'; - ERROR_CODE[$A1]:='FT_STATUS_ERROR_2'; - ERROR_CODE[$A2]:='FT_STATUS_ERROR_3'; - ERROR_CODE[$A3]:='FT_STATUS_ERROR_4'; - ERROR_CODE[$A4]:='FT_STATUS_ERROR_5'; - ERROR_CODE[$A5]:='FT_STATUS_ERROR_6'; - ERROR_CODE[$A6]:='FT_STATUS_ERROR_7'; - ERROR_CODE[$A7]:='FT_STATUS_ERROR_8'; - ERROR_CODE[$A8]:='FT_STATUS_ERROR_9'; -end; - -procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); -begin - StatusBar.Panels[1].Text:=HexDisplayPrefix+IntToHex(Result,2); - StatusBar.Panels[2].Text:=ERROR_CODE[Result]; -end; - -function MaxBlocks(): Integer; -var - bTypeOfCard:Byte; -begin - bTypeOfCard:=frmuFrAdvanced.bDLCardType; - - case bTypeOfCard of - DL_NTAG_203 : Result:= MAX_PAGE_NTAG203; - DL_MIFARE_ULTRALIGHT : Result:= MAX_PAGE_ULTRALIGHT; - DL_MIFARE_ULTRALIGHT_C : Result:= MAX_PAGE_ULTRALIGHT_C; - DL_MIFARE_CLASSIC_1k : Result:=(MAX_SECTORS_1k *4); - DL_MIFARE_CLASSIC_4k, - DL_MIFARE_PLUS_S_4K : Result:=((MAX_SECTORS_1k*2)*4)+((MAX_SECTORS_1k-8)*16) ; - end; -end; - - - - -procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; key_parent: TPanel; - key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent;OnKey_Exit:TNotifyEvent); -var - br:Byte; - edit_key:array[0..5] of TEdit; - -begin - for br:=0 to 5 do - begin - edit_key[br] :=TEdit.Create(key_owner); - with edit_key[br] do begin - Height :=key_height; - Width :=key_width; - Top :=key_top; - Left :=key_left+(key_width*br+2); - Name :=key_name+IntToStr(br+1); - CharCase :=ecUpperCase; - Font.Name :='Verdana'; - Font.Style:=[fsBold]; - OnKeyPress:=OnKey_press; - OnExit :=OnKey_Exit; - Text :='255'; - MaxLength :=3; - ReadOnly :=key_read_only; - Parent :=key_parent; - end; - end; -end; -procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case Check_box.Checked of - true:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:= - IntToHex(StrToInt(TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text),2); - end; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:=IntToStr(StrToInt(HexDisplayPrefix+TEdit - (owner.FindComponent(edit_name+IntToStr(br+1))).Text)); - end; - end; - end; -end; -procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case def_check_box.Checked of - true:begin for br:=0 to number_edit do begin - - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:='255'; - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=true; - end; - hex_box.Checked:=false; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=false; - end; - end; - end; -end; -procedure OnPK_KEY_Exit(Sender:TObject); -begin - - if ((sender as TEdit).Text>IntToStr(255)) or ((Sender as TEdit).Text=EmptyStr) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; -end; -procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); -begin - if (Sender as TEdit).Text=EmptyStr then begin - with (Sender as TEdit) do - begin - Undo(); - SetFocus(); - end; - end; - if check_hex_box.Checked then Exit; - if ((sender as TEdit).Text>IntToStr(255)) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; - -end; -procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); -begin - if (check_hex_box.Checked) then - begin - (Sender as TEdit).MaxLength:=2; - if (Key in['0'..'9']) or (Key in['a'..'f']) or (ord(Key)=8) then Exit else Key:=#0; - end - else begin - (Sender as TEdit).MaxLength:=3; - if (Key in['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; - end; -end; - - - - //-----End--- -end. diff --git a/uFCoderAdvance_D7/LinearFormatsCard.dcu b/uFCoderAdvance_D7/LinearFormatsCard.dcu deleted file mode 100644 index 12eb1babd6c905b3f1ab4ceac93e23b1d4b16bc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17694 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 diff --git a/uFCoderAdvance_D7/LinearFormatsCard.ddp b/uFCoderAdvance_D7/LinearFormatsCard.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/LinearFormatsCard.dfm b/uFCoderAdvance_D7/LinearFormatsCard.dfm deleted file mode 100644 index 3c91461..0000000 --- a/uFCoderAdvance_D7/LinearFormatsCard.dfm +++ /dev/null @@ -1,780 +0,0 @@ -object frmLinearFormatCard: TfrmLinearFormatCard - Left = 316 - Top = 154 - Width = 529 - Height = 460 - Caption = 'LinearFormatCard' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'LinearFormat Card(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbLinearFormatCard: TStatusBar - Left = 0 - Top = 402 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyConteiner: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 99 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 97 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 97 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object pgLinearFormatsCard: TPageControl - Left = 0 - Top = 155 - Width = 513 - Height = 247 - ActivePage = tabLinearFormat - Align = alClient - TabOrder = 4 - object tabLinearFormat: TTabSheet - Caption = 'LinearFormat ' - object lblBlockAccessBits: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBits: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormatted: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBits: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBits: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormat: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatClick - end - object txtSectorFormatted: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 26 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM1: TTabSheet - Caption = 'LinearFormat AKM1' - ImageIndex = 1 - object lblBlockAccessBitsAKM1: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM1: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM1: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM1: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM1: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM1: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM1: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM1: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM1Click - end - object txtSectorFormattedAKM1: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM2: TTabSheet - Caption = 'LinearFormat AKM2' - ImageIndex = 2 - object lblBlockAccessBitsAKM2: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM2: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM2: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM2: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM2: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM2: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM2: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM2: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM2Click - end - object txtSectorFormattedAKM2: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatPK: TTabSheet - Caption = 'LinearFormat PK' - ImageIndex = 3 - object lblBlockAccessBitsPK: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsPK: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9PK: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedPK: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsPK: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsPK: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9PK: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatPK: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatPKClick - end - object txtSectorFormattedPK: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - end -end diff --git a/uFCoderAdvance_D7/LinearFormatsCard.pas b/uFCoderAdvance_D7/LinearFormatsCard.pas deleted file mode 100644 index b8db279..0000000 --- a/uFCoderAdvance_D7/LinearFormatsCard.pas +++ /dev/null @@ -1,436 +0,0 @@ -unit LinearFormatsCard; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder; - -type - TfrmLinearFormatCard = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbLinearFormatCard: TStatusBar; - pnlKeyConteiner: TPanel; - pnlKeyA: TPanel; - lblKeyA: TStaticText; - chkKeyAHex: TCheckBox; - pnlKeyB: TPanel; - lblKeyB: TStaticText; - chkKeyBHex: TCheckBox; - pgLinearFormatsCard: TPageControl; - tabLinearFormat: TTabSheet; - tabLinearFormatAKM1: TTabSheet; - tabLinearFormatAKM2: TTabSheet; - tabLinearFormatPK: TTabSheet; - lblBlockAccessBits: TLabel; - cboBlockAccessBits: TComboBox; - lblSectorTrailerAccessBits: TLabel; - cboSectorTrailerAccessBits: TComboBox; - lblSectorTrailerByte9: TLabel; - txtSectorTrailerByte9: TEdit; - btnLinearFormat: TButton; - lblSectorFormatted: TLabel; - txtSectorFormatted: TEdit; - lblBlockAccessBitsAKM1: TLabel; - cboBlockAccessBitsAKM1: TComboBox; - lblSectorTrailerAccessBitsAKM1: TLabel; - cboSectorTrailerAccessBitsAKM1: TComboBox; - lblSectorTrailerByte9AKM1: TLabel; - txtSectorTrailerByte9AKM1: TEdit; - btnLinearFormatAKM1: TButton; - lblSectorFormattedAKM1: TLabel; - txtSectorFormattedAKM1: TEdit; - lblBlockAccessBitsAKM2: TLabel; - cboBlockAccessBitsAKM2: TComboBox; - lblSectorTrailerAccessBitsAKM2: TLabel; - cboSectorTrailerAccessBitsAKM2: TComboBox; - lblSectorTrailerByte9AKM2: TLabel; - txtSectorTrailerByte9AKM2: TEdit; - btnLinearFormatAKM2: TButton; - lblSectorFormattedAKM2: TLabel; - txtSectorFormattedAKM2: TEdit; - lblBlockAccessBitsPK: TLabel; - cboBlockAccessBitsPK: TComboBox; - lblSectorTrailerAccessBitsPK: TLabel; - cboSectorTrailerAccessBitsPK: TComboBox; - lblSectorTrailerByte9PK: TLabel; - txtSectorTrailerByte9PK: TEdit; - btnLinearFormatPK: TButton; - lblSectorFormattedPK: TLabel; - txtSectorFormattedPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure btnLinearFormatClick(Sender: TObject); - procedure btnLinearFormatAKM1Click(Sender: TObject); - procedure btnLinearFormatAKM2Click(Sender: TObject); - procedure btnLinearFormatPKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - public - { Public declarations } - end; - -var - frmLinearFormatCard: TfrmLinearFormatCard; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmLinearFormatCard } - -procedure TfrmLinearFormatCard.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmLinearFormatCard.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearFormatCard.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; - -procedure TfrmLinearFormatCard.OnKeyAPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; -procedure TfrmLinearFormatCard.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmLinearFormatCard.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmLinearFormatCard.OnKeyBPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmLinearFormatCard.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyADefaultClick(Sender: TObject); -begin - //CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.chkKeyBDefaultClick(Sender: TObject); -begin - // CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; -end; - - - - -procedure TfrmLinearFormatCard.btnLinearFormatClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAccessBits :=cboBlockAccessBits.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9,pKeyB, - bSectorsFormatted,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM1.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM1.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard_AKM1(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM2.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM2.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - iFResult:=LinearFormatCard_AKM2(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9PK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsPK.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsPK.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9PK.Text); - WriteKeyAB; - PKeyA:=@baKeyA; - PKeyB:=@baKeyB; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - iFResult:=LinearFormatCard_PK(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode,pPKkey); - if iFResult=DL_OK then - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; -finally - pKeyA :=nil; - pKeyB :=nil; - pPKKey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - - - - - - - -end. diff --git a/uFCoderAdvance_D7/LinearFormatsCard.~ddp b/uFCoderAdvance_D7/LinearFormatsCard.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/LinearFormatsCard.~dfm b/uFCoderAdvance_D7/LinearFormatsCard.~dfm deleted file mode 100644 index 1f05ce7..0000000 --- a/uFCoderAdvance_D7/LinearFormatsCard.~dfm +++ /dev/null @@ -1,780 +0,0 @@ -object frmLinearFormatCard: TfrmLinearFormatCard - Left = 316 - Top = 154 - Width = 529 - Height = 460 - Caption = 'LinearFormatCard' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'LinearFormat Card(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbLinearFormatCard: TStatusBar - Left = 0 - Top = 403 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyConteiner: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 99 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 97 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 97 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object pgLinearFormatsCard: TPageControl - Left = 0 - Top = 155 - Width = 513 - Height = 248 - ActivePage = tabLinearFormat - Align = alClient - TabOrder = 4 - object tabLinearFormat: TTabSheet - Caption = 'LinearFormat ' - object lblBlockAccessBits: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBits: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormatted: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBits: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBits: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormat: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatClick - end - object txtSectorFormatted: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 26 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM1: TTabSheet - Caption = 'LinearFormat AKM1' - ImageIndex = 1 - object lblBlockAccessBitsAKM1: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM1: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM1: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM1: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM1: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM1: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM1: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM1: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM1Click - end - object txtSectorFormattedAKM1: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM2: TTabSheet - Caption = 'LinearFormat AKM2' - ImageIndex = 2 - object lblBlockAccessBitsAKM2: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM2: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM2: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM2: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM2: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM2: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM2: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM2: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM2Click - end - object txtSectorFormattedAKM2: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatPK: TTabSheet - Caption = 'LinearFormat PK' - ImageIndex = 3 - object lblBlockAccessBitsPK: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsPK: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9PK: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedPK: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsPK: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsPK: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9PK: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatPK: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatPKClick - end - object txtSectorFormattedPK: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - end -end diff --git a/uFCoderAdvance_D7/LinearFormatsCard.~pas b/uFCoderAdvance_D7/LinearFormatsCard.~pas deleted file mode 100644 index 9fa6408..0000000 --- a/uFCoderAdvance_D7/LinearFormatsCard.~pas +++ /dev/null @@ -1,436 +0,0 @@ -unit LinearFormatsCard; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder1x; - -type - TfrmLinearFormatCard = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbLinearFormatCard: TStatusBar; - pnlKeyConteiner: TPanel; - pnlKeyA: TPanel; - lblKeyA: TStaticText; - chkKeyAHex: TCheckBox; - pnlKeyB: TPanel; - lblKeyB: TStaticText; - chkKeyBHex: TCheckBox; - pgLinearFormatsCard: TPageControl; - tabLinearFormat: TTabSheet; - tabLinearFormatAKM1: TTabSheet; - tabLinearFormatAKM2: TTabSheet; - tabLinearFormatPK: TTabSheet; - lblBlockAccessBits: TLabel; - cboBlockAccessBits: TComboBox; - lblSectorTrailerAccessBits: TLabel; - cboSectorTrailerAccessBits: TComboBox; - lblSectorTrailerByte9: TLabel; - txtSectorTrailerByte9: TEdit; - btnLinearFormat: TButton; - lblSectorFormatted: TLabel; - txtSectorFormatted: TEdit; - lblBlockAccessBitsAKM1: TLabel; - cboBlockAccessBitsAKM1: TComboBox; - lblSectorTrailerAccessBitsAKM1: TLabel; - cboSectorTrailerAccessBitsAKM1: TComboBox; - lblSectorTrailerByte9AKM1: TLabel; - txtSectorTrailerByte9AKM1: TEdit; - btnLinearFormatAKM1: TButton; - lblSectorFormattedAKM1: TLabel; - txtSectorFormattedAKM1: TEdit; - lblBlockAccessBitsAKM2: TLabel; - cboBlockAccessBitsAKM2: TComboBox; - lblSectorTrailerAccessBitsAKM2: TLabel; - cboSectorTrailerAccessBitsAKM2: TComboBox; - lblSectorTrailerByte9AKM2: TLabel; - txtSectorTrailerByte9AKM2: TEdit; - btnLinearFormatAKM2: TButton; - lblSectorFormattedAKM2: TLabel; - txtSectorFormattedAKM2: TEdit; - lblBlockAccessBitsPK: TLabel; - cboBlockAccessBitsPK: TComboBox; - lblSectorTrailerAccessBitsPK: TLabel; - cboSectorTrailerAccessBitsPK: TComboBox; - lblSectorTrailerByte9PK: TLabel; - txtSectorTrailerByte9PK: TEdit; - btnLinearFormatPK: TButton; - lblSectorFormattedPK: TLabel; - txtSectorFormattedPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure btnLinearFormatClick(Sender: TObject); - procedure btnLinearFormatAKM1Click(Sender: TObject); - procedure btnLinearFormatAKM2Click(Sender: TObject); - procedure btnLinearFormatPKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - public - { Public declarations } - end; - -var - frmLinearFormatCard: TfrmLinearFormatCard; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmLinearFormatCard } - -procedure TfrmLinearFormatCard.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmLinearFormatCard.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearFormatCard.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; - -procedure TfrmLinearFormatCard.OnKeyAPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; -procedure TfrmLinearFormatCard.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmLinearFormatCard.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmLinearFormatCard.OnKeyBPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmLinearFormatCard.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyADefaultClick(Sender: TObject); -begin - //CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.chkKeyBDefaultClick(Sender: TObject); -begin - // CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; -end; - - - - -procedure TfrmLinearFormatCard.btnLinearFormatClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAccessBits :=cboBlockAccessBits.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9,pKeyB, - bSectorsFormatted,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM1.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM1.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard_AKM1(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM2.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM2.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - iFResult:=LinearFormatCard_AKM2(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9PK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsPK.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsPK.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9PK.Text); - WriteKeyAB; - PKeyA:=@baKeyA; - PKeyB:=@baKeyB; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - iFResult:=LinearFormatCard_PK(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode,pPKkey); - if iFResult=DL_OK then - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; -finally - pKeyA :=nil; - pKeyB :=nil; - pPKKey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - - - - - - - -end. diff --git a/uFCoderAdvance_D7/LinearReadWrite.dcu b/uFCoderAdvance_D7/LinearReadWrite.dcu deleted file mode 100644 index 002c2bf5e0f2bbaaec666e31fb63bd17ad491e7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27315 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%0A! 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/LinearReadWrite.dfm b/uFCoderAdvance_D7/LinearReadWrite.dfm deleted file mode 100644 index 45dde04..0000000 --- a/uFCoderAdvance_D7/LinearReadWrite.dfm +++ /dev/null @@ -1,1089 +0,0 @@ -object frmLinearReadWrite: TfrmLinearReadWrite - Left = 756 - Top = 224 - Width = 529 - Height = 428 - Caption = 'LinearRead/Write' - Color = clBtnFace - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Linear Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbLinearReadWrite: TStatusBar - Left = 0 - Top = 370 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - TabOrder = 2 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object pgLinearReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 313 - ActivePage = tabLinearRead - Align = alClient - TabOrder = 3 - object tabLinearRead: TTabSheet - Caption = 'LinearRead' - object lblLinearRead: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLReadLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesRead: TLabel - Left = 176 - Top = 244 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearRead: TButton - Left = 328 - Top = 228 - Width = 160 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadClick - end - object txtReadBytes: TEdit - Left = 261 - Top = 242 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearRead: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM12: TTabSheet - Caption = 'LinearRead_AKM1/AKM2' - ImageIndex = 1 - object pgLinearReadAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 285 - ActivePage = tabLinearReadAKM1 - Align = alClient - TabOrder = 0 - object tabLinearReadAKM1: TTabSheet - Caption = 'LinearRead_AKM1' - object lblLRAKM1LinearRead: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRAKM1LinearAddress: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRAKM1DataLength: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM1: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM1Click - end - object txtReadBytesAKM1: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM2: TTabSheet - Caption = 'LinearRead_AKM2' - ImageIndex = 1 - object Label4: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM2: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM2Click - end - object txtReadBytesAKM2: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - end - end - object tabLinearReadPK: TTabSheet - Caption = 'LinearRead_PK' - ImageIndex = 2 - object Label7: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesPK: TLabel - Left = 169 - Top = 250 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadPK: TButton - Left = 322 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadPKClick - end - object txtReadBytesPK: TEdit - Left = 250 - Top = 247 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadPK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearWrite: TTabSheet - Caption = 'LinearWrite' - ImageIndex = 3 - object lblLWLinearWrite: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWritten: TLabel - Left = 171 - Top = 244 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWrite: TButton - Left = 324 - Top = 228 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteClick - end - object txtBytesWritten: TEdit - Left = 256 - Top = 242 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWrite: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteChange - end - end - object tabLinearWriteAKM12: TTabSheet - Caption = 'LinearWrite_AKM1/AKM2' - ImageIndex = 4 - object pgLinearWriteAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 285 - ActivePage = tabLinearWriteAKM1 - Align = alClient - TabOrder = 0 - object tabLinearWriteAKM1: TTabSheet - Caption = 'LinearWrite_AKM1' - object lblLinearWriteAKM1: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM1: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM1: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM1: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM1Click - end - object txtBytesWrittenAKM1: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM1Change - end - end - object tabLinearWriteAKM2: TTabSheet - Caption = 'LinearWrite_AKM2' - ImageIndex = 1 - object lblLinearWriteAKM2: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM2: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM2Click - end - object txtBytesWrittenAKM2: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM2Change - end - end - end - end - object tabLinearWritePK: TTabSheet - Caption = 'LinearWrite_PK' - ImageIndex = 5 - object lblLinearWritePK: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenPK: TLabel - Left = 171 - Top = 249 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWritePK: TButton - Left = 323 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWritePKClick - end - object txtBytesWrittenPK: TEdit - Left = 256 - Top = 246 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWritePK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWritePKChange - end - end - end -end diff --git a/uFCoderAdvance_D7/LinearReadWrite.pas b/uFCoderAdvance_D7/LinearReadWrite.pas deleted file mode 100644 index 762b3d9..0000000 --- a/uFCoderAdvance_D7/LinearReadWrite.pas +++ /dev/null @@ -1,689 +0,0 @@ -unit LinearReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, - Global,uFCoder, ComCtrls, ExtCtrls; - -type - TfrmLinearReadWrite = class(TForm) - lblHeader: TStaticText; - stbLinearReadWrite: TStatusBar; - pnlAuth: TPanel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - lblKeyIndex: TLabel; - cboKeyIndex: TComboBox; - lblPKKey: TLabel; - pgLinearReadWrite: TPageControl; - tabLinearRead: TTabSheet; - tabLinearReadAKM12: TTabSheet; - tabLinearReadPK: TTabSheet; - tabLinearWrite: TTabSheet; - tabLinearWriteAKM12: TTabSheet; - tabLinearWritePK: TTabSheet; - lblLinearRead: TLabel; - lblLReadLinearAddress: TLabel; - txtLRLinearAddress: TEdit; - lblLRDataLength: TLabel; - txtLRDataLength: TEdit; - btnLinearRead: TButton; - pgLinearReadAKM12: TPageControl; - tabLinearReadAKM1: TTabSheet; - tabLinearReadAKM2: TTabSheet; - lblLRAKM1LinearRead: TLabel; - lblLRAKM1LinearAddress: TLabel; - txtLRLinearAddressAKM1: TEdit; - lblLRAKM1DataLength: TLabel; - txtLRDataLengthAKM1: TEdit; - btnLinearReadAKM1: TButton; - Label4: TLabel; - lblLRLinearAddressAKM2: TLabel; - txtLRLinearAddressAKM2: TEdit; - txtLRDataLengthAKM2: TEdit; - btnLinearReadAKM2: TButton; - lblLRDataLengthAKM2: TLabel; - Label7: TLabel; - lblLRLinearAddressPK: TLabel; - txtLRLinearAddressPK: TEdit; - lblLRDataLengthPK: TLabel; - txtLRDataLengthPK: TEdit; - btnLinearReadPK: TButton; - lblLWLinearWrite: TLabel; - lblLWLinearAddress: TLabel; - txtLWLinearAddress: TEdit; - lblLWDataLength: TLabel; - txtLWDataLength: TEdit; - btnLinearWrite: TButton; - lblLinearWritePK: TLabel; - lblLWLinearAddressPK: TLabel; - txtLWLinearAddressPK: TEdit; - lblLWDataLengthPK: TLabel; - txtLWDataLengthPK: TEdit; - btnLinearWritePK: TButton; - pgLinearWriteAKM12: TPageControl; - tabLinearWriteAKM1: TTabSheet; - lblLinearWriteAKM1: TLabel; - lblLWLinearAddressAKM1: TLabel; - lblLWDataLengthAKM1: TLabel; - txtLWLinearAddressAKM1: TEdit; - txtLWDataLengthAKM1: TEdit; - btnLinearWriteAKM1: TButton; - tabLinearWriteAKM2: TTabSheet; - lblLinearWriteAKM2: TLabel; - lblLWLinearAddressAKM2: TLabel; - lblLWDataLengthAKM2: TLabel; - txtLWLinearAddressAKM2: TEdit; - txtLWDataLengthAKM2: TEdit; - btnLinearWriteAKM2: TButton; - lblBytesRead: TLabel; - txtReadBytes: TEdit; - lblReadBytesAKM1: TLabel; - txtReadBytesAKM1: TEdit; - lblReadBytesAKM2: TLabel; - txtReadBytesAKM2: TEdit; - lblReadBytesPK: TLabel; - txtReadBytesPK: TEdit; - lblBytesWritten: TLabel; - txtBytesWritten: TEdit; - lblBytesWrittenAKM1: TLabel; - txtBytesWrittenAKM1: TEdit; - lblBytesWrittenAKM2: TLabel; - txtBytesWrittenAKM2: TEdit; - lblBytesWrittenPK: TLabel; - txtBytesWrittenPK: TEdit; - txtLinearRead: TRichEdit; - txtLinearReadAKM1: TRichEdit; - txtLinearReadAKM2: TRichEdit; - txtLinearReadPK: TRichEdit; - txtLinearWrite: TRichEdit; - txtLinearWritePK: TRichEdit; - txtLinearWriteAKM1: TRichEdit; - txtLinearWriteAKM2: TRichEdit; - procedure FormCreate(Sender: TObject); - procedure btnLinearReadClick(Sender: TObject); - procedure btnLinearReadAKM1Click(Sender: TObject); - procedure btnLinearReadAKM2Click(Sender: TObject); - procedure btnLinearReadPKClick(Sender: TObject); - procedure btnLinearWriteClick(Sender: TObject); - procedure btnLinearWriteAKM1Click(Sender: TObject); - procedure btnLinearWriteAKM2Click(Sender: TObject); - procedure btnLinearWritePKClick(Sender: TObject); - procedure txtLinearWriteChange(Sender: TObject); - procedure txtLinearWriteAKM2Change(Sender: TObject); - procedure txtLinearWriteAKM1Change(Sender: TObject); - procedure txtLinearWritePKChange(Sender: TObject); - private - - procedure OnPKKeyExit(Sender:TObject); - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - public - { Public declarations } - end; - type - TByteArray=array of Byte; -var - frmLinearReadWrite: TfrmLinearReadWrite; - - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmLinearReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmLinearReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmLinearReadWrite.btnLinearReadClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLRDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLRLinearAddress.Text); - wDataLength :=StrToInt(txtLRDataLength.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - - iFResult:=LinearRead(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - txtLinearRead.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(Trim(txtLRLinearAddressAKM1.Text)); - wDataLength :=StrToInt(Trim(txtLRDataLengthAKM1.Text)); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM1(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtLinearReadAKM1.Text:=String(baReadData); - txtReadBytesAKM1.Text :=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM1.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLRDataLengthAKM2.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM2(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtReadBytesAKM2.Text :=IntToStr(wBytesRet); - txtLinearReadAKM2.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM2.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadPKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - bBr :Byte; -begin - try - if Trim(txtLRLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - New(pData); - New(pPKKey); - - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressPK.Text); - wDataLength :=StrToInt(txtLRDataLengthPK.Text); - - SetLength(baReadData,wDataLength); - pData :=PByte(@baReadData[0]); - pPKKEY:=@PKKey; - iFResult:=LinearRead_PK(pData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtLinearReadPK.Text:=String(baReadData); - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWrite.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWrite.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLWDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLWLinearAddress.Text); - wDataLength :=StrToInt(txtLWDataLength.Text); - pData :=PByte(txtLinearWrite.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM1.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM1.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM1.Text); - pData :=PByte(txtLinearWriteAKM1.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM1(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM2.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM2.Text); - pData :=PByte(txtLinearWriteAKM2.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM2(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWritePKClick(Sender: TObject); -var - pPKKEY, - pData :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLinearWritePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWritePK.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressPK.Text); - wDataLength :=StrToInt(txtLWDataLengthPK.Text); - pData :=PByte(txtLinearWritePK.Text); - pPKKEY :=@PKKey; - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_PK(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,pPKKEY); - if iFResult=DL_OK then - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKEY); - frmuFrAdvanced.FunctionStart:=false; - end; - end; - - - -procedure TfrmLinearReadWrite.txtLinearWriteChange(Sender: TObject); -begin - txtLWDataLength.Text:=IntToStr(Length(Trim(txtLinearWrite.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM2Change(Sender: TObject); -begin - txtLWDataLengthAKM2.Text:=IntToStr(Length(Trim(txtLinearWriteAKM2.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM1Change(Sender: TObject); -begin - txtLWDataLengthAKM1.Text:=IntToStr(Length(Trim(txtLinearWriteAKM1.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWritePKChange(Sender: TObject); -begin - txtLWDataLengthPK.Text:=IntToStr(Length(Trim(txtLinearWritePK.Text))); -end; - -end. diff --git a/uFCoderAdvance_D7/LinearReadWrite.~ddp b/uFCoderAdvance_D7/LinearReadWrite.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/LinearReadWrite.~dfm b/uFCoderAdvance_D7/LinearReadWrite.~dfm deleted file mode 100644 index 8b9619c..0000000 --- a/uFCoderAdvance_D7/LinearReadWrite.~dfm +++ /dev/null @@ -1,1089 +0,0 @@ -object frmLinearReadWrite: TfrmLinearReadWrite - Left = 403 - Top = 171 - Width = 529 - Height = 428 - Caption = 'LinearRead/Write' - Color = clBtnFace - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Linear Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbLinearReadWrite: TStatusBar - Left = 0 - Top = 371 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - TabOrder = 2 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object pgLinearReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 314 - ActivePage = tabLinearRead - Align = alClient - TabOrder = 3 - object tabLinearRead: TTabSheet - Caption = 'LinearRead' - object lblLinearRead: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLReadLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesRead: TLabel - Left = 176 - Top = 244 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearRead: TButton - Left = 328 - Top = 228 - Width = 160 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadClick - end - object txtReadBytes: TEdit - Left = 261 - Top = 242 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearRead: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM12: TTabSheet - Caption = 'LinearRead_AKM1/AKM2' - ImageIndex = 1 - object pgLinearReadAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 286 - ActivePage = tabLinearReadAKM1 - Align = alClient - TabOrder = 0 - object tabLinearReadAKM1: TTabSheet - Caption = 'LinearRead_AKM1' - object lblLRAKM1LinearRead: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRAKM1LinearAddress: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRAKM1DataLength: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM1: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM1Click - end - object txtReadBytesAKM1: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM2: TTabSheet - Caption = 'LinearRead_AKM2' - ImageIndex = 1 - object Label4: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM2: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM2Click - end - object txtReadBytesAKM2: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - end - end - object tabLinearReadPK: TTabSheet - Caption = 'LinearRead_PK' - ImageIndex = 2 - object Label7: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesPK: TLabel - Left = 169 - Top = 250 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadPK: TButton - Left = 322 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadPKClick - end - object txtReadBytesPK: TEdit - Left = 250 - Top = 247 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadPK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearWrite: TTabSheet - Caption = 'LinearWrite' - ImageIndex = 3 - object lblLWLinearWrite: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWritten: TLabel - Left = 171 - Top = 244 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWrite: TButton - Left = 324 - Top = 228 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteClick - end - object txtBytesWritten: TEdit - Left = 256 - Top = 242 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWrite: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteChange - end - end - object tabLinearWriteAKM12: TTabSheet - Caption = 'LinearWrite_AKM1/AKM2' - ImageIndex = 4 - object pgLinearWriteAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 286 - ActivePage = tabLinearWriteAKM1 - Align = alClient - TabOrder = 0 - object tabLinearWriteAKM1: TTabSheet - Caption = 'LinearWrite_AKM1' - object lblLinearWriteAKM1: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM1: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM1: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM1: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM1Click - end - object txtBytesWrittenAKM1: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM1Change - end - end - object tabLinearWriteAKM2: TTabSheet - Caption = 'LinearWrite_AKM2' - ImageIndex = 1 - object lblLinearWriteAKM2: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM2: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM2Click - end - object txtBytesWrittenAKM2: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM2Change - end - end - end - end - object tabLinearWritePK: TTabSheet - Caption = 'LinearWrite_PK' - ImageIndex = 5 - object lblLinearWritePK: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenPK: TLabel - Left = 171 - Top = 249 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWritePK: TButton - Left = 323 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWritePKClick - end - object txtBytesWrittenPK: TEdit - Left = 256 - Top = 246 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWritePK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWritePKChange - end - end - end -end diff --git a/uFCoderAdvance_D7/LinearReadWrite.~pas b/uFCoderAdvance_D7/LinearReadWrite.~pas deleted file mode 100644 index 1e5f30a..0000000 --- a/uFCoderAdvance_D7/LinearReadWrite.~pas +++ /dev/null @@ -1,689 +0,0 @@ -unit LinearReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, - Global,uFCoder1x, ComCtrls, ExtCtrls; - -type - TfrmLinearReadWrite = class(TForm) - lblHeader: TStaticText; - stbLinearReadWrite: TStatusBar; - pnlAuth: TPanel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - lblKeyIndex: TLabel; - cboKeyIndex: TComboBox; - lblPKKey: TLabel; - pgLinearReadWrite: TPageControl; - tabLinearRead: TTabSheet; - tabLinearReadAKM12: TTabSheet; - tabLinearReadPK: TTabSheet; - tabLinearWrite: TTabSheet; - tabLinearWriteAKM12: TTabSheet; - tabLinearWritePK: TTabSheet; - lblLinearRead: TLabel; - lblLReadLinearAddress: TLabel; - txtLRLinearAddress: TEdit; - lblLRDataLength: TLabel; - txtLRDataLength: TEdit; - btnLinearRead: TButton; - pgLinearReadAKM12: TPageControl; - tabLinearReadAKM1: TTabSheet; - tabLinearReadAKM2: TTabSheet; - lblLRAKM1LinearRead: TLabel; - lblLRAKM1LinearAddress: TLabel; - txtLRLinearAddressAKM1: TEdit; - lblLRAKM1DataLength: TLabel; - txtLRDataLengthAKM1: TEdit; - btnLinearReadAKM1: TButton; - Label4: TLabel; - lblLRLinearAddressAKM2: TLabel; - txtLRLinearAddressAKM2: TEdit; - txtLRDataLengthAKM2: TEdit; - btnLinearReadAKM2: TButton; - lblLRDataLengthAKM2: TLabel; - Label7: TLabel; - lblLRLinearAddressPK: TLabel; - txtLRLinearAddressPK: TEdit; - lblLRDataLengthPK: TLabel; - txtLRDataLengthPK: TEdit; - btnLinearReadPK: TButton; - lblLWLinearWrite: TLabel; - lblLWLinearAddress: TLabel; - txtLWLinearAddress: TEdit; - lblLWDataLength: TLabel; - txtLWDataLength: TEdit; - btnLinearWrite: TButton; - lblLinearWritePK: TLabel; - lblLWLinearAddressPK: TLabel; - txtLWLinearAddressPK: TEdit; - lblLWDataLengthPK: TLabel; - txtLWDataLengthPK: TEdit; - btnLinearWritePK: TButton; - pgLinearWriteAKM12: TPageControl; - tabLinearWriteAKM1: TTabSheet; - lblLinearWriteAKM1: TLabel; - lblLWLinearAddressAKM1: TLabel; - lblLWDataLengthAKM1: TLabel; - txtLWLinearAddressAKM1: TEdit; - txtLWDataLengthAKM1: TEdit; - btnLinearWriteAKM1: TButton; - tabLinearWriteAKM2: TTabSheet; - lblLinearWriteAKM2: TLabel; - lblLWLinearAddressAKM2: TLabel; - lblLWDataLengthAKM2: TLabel; - txtLWLinearAddressAKM2: TEdit; - txtLWDataLengthAKM2: TEdit; - btnLinearWriteAKM2: TButton; - lblBytesRead: TLabel; - txtReadBytes: TEdit; - lblReadBytesAKM1: TLabel; - txtReadBytesAKM1: TEdit; - lblReadBytesAKM2: TLabel; - txtReadBytesAKM2: TEdit; - lblReadBytesPK: TLabel; - txtReadBytesPK: TEdit; - lblBytesWritten: TLabel; - txtBytesWritten: TEdit; - lblBytesWrittenAKM1: TLabel; - txtBytesWrittenAKM1: TEdit; - lblBytesWrittenAKM2: TLabel; - txtBytesWrittenAKM2: TEdit; - lblBytesWrittenPK: TLabel; - txtBytesWrittenPK: TEdit; - txtLinearRead: TRichEdit; - txtLinearReadAKM1: TRichEdit; - txtLinearReadAKM2: TRichEdit; - txtLinearReadPK: TRichEdit; - txtLinearWrite: TRichEdit; - txtLinearWritePK: TRichEdit; - txtLinearWriteAKM1: TRichEdit; - txtLinearWriteAKM2: TRichEdit; - procedure FormCreate(Sender: TObject); - procedure btnLinearReadClick(Sender: TObject); - procedure btnLinearReadAKM1Click(Sender: TObject); - procedure btnLinearReadAKM2Click(Sender: TObject); - procedure btnLinearReadPKClick(Sender: TObject); - procedure btnLinearWriteClick(Sender: TObject); - procedure btnLinearWriteAKM1Click(Sender: TObject); - procedure btnLinearWriteAKM2Click(Sender: TObject); - procedure btnLinearWritePKClick(Sender: TObject); - procedure txtLinearWriteChange(Sender: TObject); - procedure txtLinearWriteAKM2Change(Sender: TObject); - procedure txtLinearWriteAKM1Change(Sender: TObject); - procedure txtLinearWritePKChange(Sender: TObject); - private - - procedure OnPKKeyExit(Sender:TObject); - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - public - { Public declarations } - end; - type - TByteArray=array of Byte; -var - frmLinearReadWrite: TfrmLinearReadWrite; - - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmLinearReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmLinearReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmLinearReadWrite.btnLinearReadClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLRDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLRLinearAddress.Text); - wDataLength :=StrToInt(txtLRDataLength.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - - iFResult:=LinearRead(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - txtLinearRead.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(Trim(txtLRLinearAddressAKM1.Text)); - wDataLength :=StrToInt(Trim(txtLRDataLengthAKM1.Text)); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM1(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtLinearReadAKM1.Text:=String(baReadData); - txtReadBytesAKM1.Text :=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM1.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLRDataLengthAKM2.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM2(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtReadBytesAKM2.Text :=IntToStr(wBytesRet); - txtLinearReadAKM2.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM2.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadPKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - bBr :Byte; -begin - try - if Trim(txtLRLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - New(pData); - New(pPKKey); - - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressPK.Text); - wDataLength :=StrToInt(txtLRDataLengthPK.Text); - - SetLength(baReadData,wDataLength); - pData :=PByte(@baReadData[0]); - pPKKEY:=@PKKey; - iFResult:=LinearRead_PK(pData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtLinearReadPK.Text:=String(baReadData); - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWrite.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWrite.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLWDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLWLinearAddress.Text); - wDataLength :=StrToInt(txtLWDataLength.Text); - pData :=PByte(txtLinearWrite.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM1.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM1.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM1.Text); - pData :=PByte(txtLinearWriteAKM1.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM1(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM2.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM2.Text); - pData :=PByte(txtLinearWriteAKM2.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM2(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWritePKClick(Sender: TObject); -var - pPKKEY, - pData :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLinearWritePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWritePK.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressPK.Text); - wDataLength :=StrToInt(txtLWDataLengthPK.Text); - pData :=PByte(txtLinearWritePK.Text); - pPKKEY :=@PKKey; - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_PK(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,pPKKEY); - if iFResult=DL_OK then - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKEY); - frmuFrAdvanced.FunctionStart:=false; - end; - end; - - - -procedure TfrmLinearReadWrite.txtLinearWriteChange(Sender: TObject); -begin - txtLWDataLength.Text:=IntToStr(Length(Trim(txtLinearWrite.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM2Change(Sender: TObject); -begin - txtLWDataLengthAKM2.Text:=IntToStr(Length(Trim(txtLinearWriteAKM2.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM1Change(Sender: TObject); -begin - txtLWDataLengthAKM1.Text:=IntToStr(Length(Trim(txtLinearWriteAKM1.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWritePKChange(Sender: TObject); -begin - txtLWDataLengthPK.Text:=IntToStr(Length(Trim(txtLinearWritePK.Text))); -end; - -end. diff --git a/uFCoderAdvance_D7/SectorTrailerWrite.dcu b/uFCoderAdvance_D7/SectorTrailerWrite.dcu deleted file mode 100644 index f8be859138c5d1c14a4d7b807ec6ebd59194e551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10541 zcmeHLeRNc1dVk)BVe)1&NhUbNND&jvrjZUQGaIS8TuUY)fbtQNfZ!@}GjrzyCo{>N z8%$VNgM#J5MdG4WE3T+ju!>@pBP_>*U@c44m93}i+3HqKyFIS!!Lnt~db%Fy^S*b! z?#vz9)4$7M=HB=D{hsG}-{<}MW&Q=AcJ?&@$@I4GY+8HnF~CP*-cWs?7BW(Lzplm; zntqEOH?+1PH60}q=yqT@GAJTom@gPLIt@LMKH2%RuYmqVoc%p&QcF~Cb54m?w3&_b z^<(ElVcutit=y{qK0`I)p?+=D*f{UNP2{{p9ncc9|3d$9#NFSkhU2N=h+(9X+IJs$ zDN@%OyH_pm$Hy*(Nhhf9?30C~wQ8nlbvFMUt7x zHS)WCpVAnqht@H=WcHDCP}LuAoV%5V)uTqW&Q#LSQ;Fj*{LWAP?NKN{{ga`__vd7P#!cHs%$1vp!YozE?uw%8^KCDy-@LQ8}w(A}YI<+|k$H(Z90q z(7qR{Lt*E_L~1}yWbtU#0$oq(={tnqg8x+Si&l2(nrdh_Yh!=6X5^!2t*qi5)VyOz z*V5@{^+OF&E{%({(U$}cyf12AI!CB z)PL#smX9c8y1|YHk@Qw7tr)Vh(;4nYCU>tNYjnDmNo?ADk~#Rb2nC)VMLI; z7E;RW&?k$TIGQn$ekvYe}P*_T%>ie0gC^g1Zwb+AzuJ_XRkm5L}W{ z!&>-WVYd`(S;~k<;vw=%CC5ub_NeisVUFZJ0ZuCnxne}q#}+3IO^>J{ZL`2FRqWN& zu-L%b76DyZ=-Q_lG(R+wV7x27lvdc*67L*kyMQcpSUD7?s2w5E=kyK%Tl%$1O~eJE zS4*mc+7ASNSz+>9l3|*^&_e>SOiHhoj&G#u?GlKkdgf&Py|7z`Xxf))cbzQBl9|Py z2*5J-jtEtZRxeHRh#bPH5=u~uq;yS2Fe(2aDD{Pd=uD*2nw)|61!gHgX2+SUTmL}d zmT^*PyHlZ&^e;*hXAv!&*@GZs&T=}`EkK)==B z7ouYKi|*+|f??@q zZX*ZP(4A2|HIfYfRFEvy7ON_g>a+kYV_2NrklE6cenZ%0h5386A#p}=0a&Jp(gsDY zbd`Xn6#AIwN406su1XrKd7{jHVBIxhubBgHBYT&wMi&p#wVa+OFgi@~SY}-+0%$4( zvPW@ODs*QbDW=YZnoj?@pwV8;_){OVYiwBwBC?93ak(`o`DAkT2*6VqY#E(*D@p=o z&)Ag$p&KKUd~uSNOzs@rO(5--g}OQvi-&T%g>G!waV=*NM{#O!h%{HyXfrF>t3~5< znvLz;`P(nWVUdHSRFqf1!vdmT@v>~x{Ulfcf{XLqVreGp?huoVl zEaU5_W2;m>PRC2G8)WJmORqHId2LCir6feeJZ0r3b>FN#Y2cTk_FU!Q z6KZ5D3%{U7w({^Xxnvdtd_X{Ut-yQK$gHX~><+b?k`5LTKO^^`JJg;Lm~ca=y>g^G zBS&Gb^fg5>v{EDcR{*%Ek^S=l9HExW+xjE=pv`c;`qSZin_*VHJ-n4abK%LB#;LZx z|6b1<_Ou*ijo225v_d;ynJFNA6KcKMK49DOWY5iX!}SQ&JKm#xc?_EQtR_dFmWb51 zK$EjiOOn*CpN=yp5v_iPBh=bdCX|q~riK{5Nd!8F`AE)!NTJr5Wg;w3QjQL@FDpcd zY555DeQ7BZDHOX?gd*`yS99pj@tZ}oMfTA`t+Os2B_l!1NJ~Vd)&I9hK})2imyC4j zkp*)jTXxBjU9!?av(mjH!v9!lx7?iZji$I3TNG|Tvt6OdA6vq(`)1f-bPd zNps&VPKNX@Eu?#=tZ@5kDL46uoiF5$?nTutJ0zBo7l(6=pcgl}eN&C0XzA|tdM5-# zf8mz=#^9~r>-Kqzp^lrE2E6qL-M%TsNYBmQ`nT;p{NDQ0Zl8zB(GeEgHlB=$tJUi~ zUsQjUWD8to0FQv@Vz{t#g;SWIGnzyTcPWd|t_5F0U?}}`_EG41Y zBKS`2a!nVc|cGuPTrdVrgx;2sAlE`mn@)z?>yQ`y^A29hV ziutD9rPlZw@`cM6+w>YH)UM!W-!|3wF3bDM`kHPN1QZos0`9$31l!_ExaMGuZ>kuq zW$h9~YvgV6B&c+Wn(*o3Vb3w`XDFiGgal|uTw+23UN@_?nGkZTBfIEhZt;u4QwN)h z`KI0Fuk}@!i;74c#UwEc6m&&x*;x?#gU~XwK)%DZcC$ckn+PbK1sd8!ZTVRUcx(2W z0j;w@N0IYjZT<|g>s(shArOTz@fFSX~_+UwwWV=aUML6@*drk`qVxsUCR-6do_aWthxGWhb+H zlgD?t?b0W(X2RpEpf1R3#<4fo2zng{Jw8`n$9O$&d+6*nbxlS`cs-|c9H9ujo-;X4 zR%>`Y=RC7rd2QxBdpq*kwfVqO)_Bj3k@Yfb_zbcok7R>pkcoVxoFMU@-GkgWi7qB+ zV0E+Ig#r`KE+vnu0+|PA<2j2dN8s#!UraBgYYChUs5z z!wlRenR!*VPLgb8Sy)nSby-Y$6$`TjSveFdvmvrpg1s~|WSopP8|Sg?j62GCROdynRCmhjQwToanz*l93d2kU4Wi z=CY7d<2GzEyKUH{)jT$AA>kyujD~BFK4nDQbm=M13ag51Bs+&v8P`nqN+_q}S_!2) zCnMy1g{|NmYPskaz}!z#?b1-B<*qAa2{kpZkd+l)lc7!|f&xKTFAc?lZkn{(2|5ds zjVlG6B~nh%mH8>MN+$TO)o5zhw?=m>ix8vi_ zMdJ02*isUIJMI?(rYE*bn4m8vpu;oh>&R64+Hu0PPtE zoba~Bi<9XUzJ2W0HEY7#JTV_NPW)P!e)IM1C+?pu-q?x3sR+*N5!m(E$Q0!C6d#ZL zEaB`U&hFuCoU_k4+sxS)oPEjJ-JCtj*(%QdiL(LD!kn$=>|M@2spm**ebN;_Mh_$2oh4vm|E;&Q5Y>aCVBbS2=r)v)4I0 z#Mw^HmT~qJXFZ(ta@Nn;)0{oS*=o+7<7^*i5zb!X>;PvEaJGxHhdJB8*{z)2#@P^O z8#%j=v#p$M=j=f@jjH-8c00~wW9VaBu$@iNXAj=Wrg6qOo6gw`&KfzJ!&!i{cFtyU z*34N8cPdmP1+SC!xoNI*DKg?ELg74YDbBmDNPF$w!km%~`Y4r2pbfYa#d#{cp-(LpVD1@7{F%1-|= z&U7L=(S@tA7khaE8#rP!Z^i&`k)LK)Gd4KZLd^u?HiU<<1)%=u56@qNNQXYss1Upg zQmbA;2SS5F;b0oA1cd1d1%??4C5A=?YY=8C)GugOa0)_;f?kAH1?v%JDcFGEqo0ov z+7z6QFh{`|2mu8f5!w~11I$&h8R0qwTM%wguoYpRg0m2ARM3YoU%@tnpn`J{x)cl` zbSv17ut>qV2scsX5tb-;1Hv)|=OOeccq2lug7Xpj6$~P*Qm_kQwSwIUw<@>@;WhTmP_ZDQU_U}k!Bq(B6)GSk6ucE7so-r0Lkg}%&=p*VU?@0% zutC8v!l;4~gpCTu5bjoRJ;FT-CJ@FIOd{N;;1I%Q1$Bf66f_XFD!2h*yMm(#4=T73 zVW)z3BkWS}9-0mX#}Rfbcpt)}3T{StOu+{bo=|Wr!jlSaM|euX2N9lDa3{hu3hqL9 zPQix}o>y=;!afBbMR-xc#}Hmp@Ck$i3O_z zd==r{rNVgX08u_h? z@9+K9BuzZe4~lOX7T=XPVm`hv9?$;Cq)p;^rC7-bb&vc&JpA~Gc>Lk5ipRxs0qzx# zfBkvIUyJ7&d|5m?e~$;na}eJUk6}D49$Rqt>ZLeeoP^X7#~Pe@;dasVfQnA1idW!; zIF1uaerAuTJB~qYxG+qg5&Debd;wGU=+k^*i`k^^!8QzBm@u2vKX`;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/SectorTrailerWrite.dfm b/uFCoderAdvance_D7/SectorTrailerWrite.dfm deleted file mode 100644 index bb49d1c..0000000 --- a/uFCoderAdvance_D7/SectorTrailerWrite.dfm +++ /dev/null @@ -1,1117 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 379 - Top = 147 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 521 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 521 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 414 - Width = 521 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 521 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - object chkKeyADefault: TCheckBox - Left = 170 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Default' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = chkKeyADefaultClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 260 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 258 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - object chkKeyBDefault: TCheckBox - Left = 170 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Default' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = chkKeyBDefaultClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 521 - Height = 261 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - end -end diff --git a/uFCoderAdvance_D7/SectorTrailerWrite.pas b/uFCoderAdvance_D7/SectorTrailerWrite.pas deleted file mode 100644 index 1780c30..0000000 --- a/uFCoderAdvance_D7/SectorTrailerWrite.pas +++ /dev/null @@ -1,244 +0,0 @@ -unit SectorTrailerWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyADefault: TCheckBox; - chkKeyBHex: TCheckBox; - chkKeyBDefault: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - private - res:DL_STATUS; - KeyA:array[0..5] of Byte; - KeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - UFRCoder; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',true,OnKeyAPress); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',true,OnKeyBPress); -end; - -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin - CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin - CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - KeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - KeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else begin - for br:=0 to 5 do begin - KeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - KeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - key_index:Byte; - auth_mode:Byte; - addressing_mode:Byte; - block_or_sector_address:Byte; - access_bits0:Byte; - access_bits1:Byte; - access_bits2:Byte; - trailer_access_bits:Byte; - trailer_Byte_9:Byte; - PKeyA:PByte; - PKeyB:PByte; -begin - - PKeyA:=nil; - PKeyB:=nil; - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then begin - MessageDlg('You must enter BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then begin - MessageDlg('You must enter TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - key_index:=cboKeyIndex.ItemIndex; - if rbAUTH1A.Checked then auth_mode:=MIFARE_AUTHENT1A else auth_mode:=MIFARE_AUTHENT1B; - - addressing_mode:=cboAddressingMode.ItemIndex; - block_or_sector_address:=StrToInt(txtBlockSectorAddress.Text); - access_bits0:=cboAccessBits0.ItemIndex; - access_bits1:=cboAccessBits1.ItemIndex; - access_bits2:=cboAccessBits2.ItemIndex; - trailer_access_bits:=cboTrailerAccessBits.ItemIndex; - trailer_Byte_9:=StrToInt(txtTrailerByte9.text); - WriteKeyAB; - PKeyA:=@KeyA; - PKeyB:=@KeyB; - res:=SectorTrailerWrite(addressing_mode,block_or_sector_address,PKeyA,access_bits0,access_bits1, - access_bits2,trailer_access_bits,trailer_Byte_9,PKeyB,auth_mode,key_index); - - if res=DL_OK then begin - ReaderUISignal(RES_OK_LIGHT,RES_OK_SOUND); - Status_Bar_Error_Reporting(stbSectorTrailerWrite,res); - end - else - begin - ReaderUiSignal(ERROR_LIGHT,ERROR_SOUND); - Status_Bar_Error_Reporting(stbSectorTrailerWrite,res); - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; -end; - -end. diff --git a/uFCoderAdvance_D7/SectorTrailersWrite.dcu b/uFCoderAdvance_D7/SectorTrailersWrite.dcu deleted file mode 100644 index 6879d87f9a84097a5fda818c4ba3d850f4886297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20117 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/SectorTrailersWrite.dfm b/uFCoderAdvance_D7/SectorTrailersWrite.dfm deleted file mode 100644 index 26b053b..0000000 --- a/uFCoderAdvance_D7/SectorTrailersWrite.dfm +++ /dev/null @@ -1,1100 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 389 - Top = 154 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 402 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 513 - Height = 249 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM1Click - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM2Click - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWritePKClick - end - end - end -end diff --git a/uFCoderAdvance_D7/SectorTrailersWrite.pas b/uFCoderAdvance_D7/SectorTrailersWrite.pas deleted file mode 100644 index 17e935f..0000000 --- a/uFCoderAdvance_D7/SectorTrailersWrite.pas +++ /dev/null @@ -1,520 +0,0 @@ -unit SectorTrailersWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyBHex: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - procedure btnSectorTrailerWriteAKM1Click(Sender: TObject); - procedure btnSectorTrailerWriteAKM2Click(Sender: TObject); - procedure btnSectorTrailerWritePKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmSectorTrailerWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; -procedure TfrmSectorTrailerWrite.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmSectorTrailerWrite.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - - bAddressingMode :=cboAddressingMode.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddress.Text); - bAccessBits0 :=cboAccessBits0.ItemIndex; - bAccessBits1 :=cboAccessBits1.ItemIndex; - bAccessBits2 :=cboAccessBits2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9.text); - - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM1.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM1.Text); - bAccessBits0 :=cboAccessBits0AKM1.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM1.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM1.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM1.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM1(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM2(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9PK.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=SectorTrailerWrite_PK(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode, - pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA :=nil; - pKeyB :=nil; - pPKkey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - - - - -end. diff --git a/uFCoderAdvance_D7/SectorTrailersWrite.~ddp b/uFCoderAdvance_D7/SectorTrailersWrite.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/SectorTrailersWrite.~dfm b/uFCoderAdvance_D7/SectorTrailersWrite.~dfm deleted file mode 100644 index 1503392..0000000 --- a/uFCoderAdvance_D7/SectorTrailersWrite.~dfm +++ /dev/null @@ -1,1100 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 389 - Top = 154 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 403 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 513 - Height = 250 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM1Click - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM2Click - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWritePKClick - end - end - end -end diff --git a/uFCoderAdvance_D7/SectorTrailersWrite.~pas b/uFCoderAdvance_D7/SectorTrailersWrite.~pas deleted file mode 100644 index d5021db..0000000 --- a/uFCoderAdvance_D7/SectorTrailersWrite.~pas +++ /dev/null @@ -1,520 +0,0 @@ -unit SectorTrailersWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyBHex: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - procedure btnSectorTrailerWriteAKM1Click(Sender: TObject); - procedure btnSectorTrailerWriteAKM2Click(Sender: TObject); - procedure btnSectorTrailerWritePKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmSectorTrailerWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; -procedure TfrmSectorTrailerWrite.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmSectorTrailerWrite.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - - bAddressingMode :=cboAddressingMode.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddress.Text); - bAccessBits0 :=cboAccessBits0.ItemIndex; - bAccessBits1 :=cboAccessBits1.ItemIndex; - bAccessBits2 :=cboAccessBits2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9.text); - - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM1.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM1.Text); - bAccessBits0 :=cboAccessBits0AKM1.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM1.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM1.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM1.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM1(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM2(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9PK.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=SectorTrailerWrite_PK(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode, - pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA :=nil; - pKeyB :=nil; - pPKkey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - - - - -end. diff --git a/uFCoderAdvance_D7/ValueBlock.dcu b/uFCoderAdvance_D7/ValueBlock.dcu deleted file mode 100644 index 3b197f6f921458d9bd4ff72a41f1ecd7149b064b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22405 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlock.dfm b/uFCoderAdvance_D7/ValueBlock.dfm deleted file mode 100644 index 827585c..0000000 --- a/uFCoderAdvance_D7/ValueBlock.dfm +++ /dev/null @@ -1,1093 +0,0 @@ -object frmValueBlockReadWrite: TfrmValueBlockReadWrite - Left = 531 - Top = 222 - Width = 529 - Height = 420 - Caption = 'ValueBlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockReadWrite: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 305 - ActivePage = tavValueBlockRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockRead: TTabSheet - Caption = 'ValueBlock Read' - object pnlValueBlockRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBRValueAddress: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadData: TLabel - Left = 9 - Top = 86 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddress: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBRValueAddress: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 0 - end - object txtVBRReadValue: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockValueRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockValueReadClick - end - object txtVBRBlockAddress: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBRValueAddressAKM1: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM1: TLabel - Left = 9 - Top = 86 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM1: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM1: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM1: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM1: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM1Click - end - object txtVBRBlockAddressAKM1: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBRValueAddressAKM2: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM2: TLabel - Left = 9 - Top = 90 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM2: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM2: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM2: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM2: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM2Click - end - object txtVBRBlockAddressAKM2: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBRValueAddressPK: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValuePK: TLabel - Left = 9 - Top = 90 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressPK: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressPK: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValuePK: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadPK: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadPKClick - end - object txtVBRBlockAddressPK: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - end - object tabValueBlockWrite: TTabSheet - Caption = 'ValueBlock Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBWWriteData: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddress: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddress: TLabel - Left = 9 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 127 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteData: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWrite: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteClick - end - object txtVBWBlockAddress: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddress: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBWWriteDataAKM1: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM1: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM1: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM1: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM1Click - end - object txtVBWBlockAddressAKM1: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM1: TEdit - Left = 114 - Top = 94 - Width = 37 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBWWriteDataAKM2: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWAKM2: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM2: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM2: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 55 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM2Click - end - object txtVBWBlockAddressAKM2: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM2: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label9: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressPK: TLabel - Left = 9 - Top = 100 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWPK: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataPK: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWritePK: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWritePKClick - end - object txtVBWBlockAddressPK: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressPK: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlock.pas b/uFCoderAdvance_D7/ValueBlock.pas deleted file mode 100644 index a8e6919..0000000 --- a/uFCoderAdvance_D7/ValueBlock.pas +++ /dev/null @@ -1,599 +0,0 @@ -unit ValueBlock; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, - Forms,Dialogs,Global,uFCoder, - ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockReadWrite: TStatusBar; - pgValueBlockReadWrite: TPageControl; - tavValueBlockRead: TTabSheet; - pnlValueBlockRead: TPanel; - lblVBRValueAddress: TLabel; - lblVBRReadData: TLabel; - lblVBRBlockAddress: TLabel; - lblVBRead: TStaticText; - txtVBRValueAddress: TEdit; - txtVBRReadValue: TEdit; - btnBlockValueRead: TButton; - txtVBRBlockAddress: TEdit; - pnlValueBlockReadAKM1: TPanel; - lblVBRAKM1: TStaticText; - pnlValueBlockReadAKM2: TPanel; - lblVBRAKM2: TStaticText; - pnlValueBlockReadPK: TPanel; - lblBRPK: TStaticText; - tabValueBlockWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblVBWWriteData: TLabel; - lblVBWBlockAddress: TLabel; - lblBISWBlockWrite: TStaticText; - txtVBWWriteData: TEdit; - btnValueBlockWrite: TButton; - txtVBWBlockAddress: TEdit; - pnlBlockWriteAKM1: TPanel; - lblVBWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblVBWAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblVBWPK: TStaticText; - lblVBRValueAddressAKM1: TLabel; - lblVBRReadValueAKM1: TLabel; - lblVBRBlockAddressAKM1: TLabel; - txtVBRValueAddressAKM1: TEdit; - txtVBRReadValueAKM1: TEdit; - btnValueBlockReadAKM1: TButton; - txtVBRBlockAddressAKM1: TEdit; - lblVBRValueAddressAKM2: TLabel; - lblVBRReadValueAKM2: TLabel; - lblVBRBlockAddressAKM2: TLabel; - txtVBRValueAddressAKM2: TEdit; - txtVBRReadValueAKM2: TEdit; - btnValueBlockReadAKM2: TButton; - txtVBRBlockAddressAKM2: TEdit; - lblVBRValueAddressPK: TLabel; - lblVBRReadValuePK: TLabel; - lblVBRBlockAddressPK: TLabel; - txtVBRValueAddressPK: TEdit; - txtVBRReadValuePK: TEdit; - btnValueBlockReadPK: TButton; - txtVBRBlockAddressPK: TEdit; - lblVBWValueAddress: TLabel; - txtVBWValueAddress: TEdit; - lblVBWWriteDataAKM1: TLabel; - lblVBWBlockAddressAKM1: TLabel; - txtVBWWriteDataAKM1: TEdit; - btnValueBlockWriteAKM1: TButton; - txtVBWBlockAddressAKM1: TEdit; - lblVBWValueAddressAKM1: TLabel; - txtVBWValueAddressAKM1: TEdit; - lblVBWWriteDataAKM2: TLabel; - lblVBWBlockAddressAKM2: TLabel; - txtVBWWriteDataAKM2: TEdit; - btnValueBlockWriteAKM2: TButton; - txtVBWBlockAddressAKM2: TEdit; - txtVBWValueAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - Label9: TLabel; - txtVBWWriteDataPK: TEdit; - btnValueBlockWritePK: TButton; - txtVBWBlockAddressPK: TEdit; - lblVBWValueAddressPK: TLabel; - txtVBWValueAddressPK: TEdit; - lblVBWValueAddressAKM2: TLabel; - procedure FormCreate(Sender: TObject); - procedure btnBlockValueReadClick(Sender: TObject); - procedure btnValueBlockReadAKM1Click(Sender: TObject); - procedure btnValueBlockReadAKM2Click(Sender: TObject); - procedure btnValueBlockReadPKClick(Sender: TObject); - procedure btnValueBlockWriteClick(Sender: TObject); - procedure btnValueBlockWriteAKM1Click(Sender: TObject); - procedure btnValueBlockWriteAKM2Click(Sender: TObject); - procedure btnValueBlockWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockReadWrite: TfrmValueBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockReadWrite } - -procedure TfrmValueBlockReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockReadWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockReadWrite.btnBlockValueReadClick(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead(pData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtVBRValueAddress.Text:=IntToStr(bValueAddress); - txtVBRReadValue.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM1Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressAKM1.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM1(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM1.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM1.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM2Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM2(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM2.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM2.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - pData :PLongint; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressPK.Text); - pData :=@iValueData; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - - iFResult:=ValueBlockRead_PK(pData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtVBRValueAddressPK.Text:=IntToStr(bValueAddress); - txtVBRReadValuePK.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteClick(Sender: TObject); -var - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddress.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBWWriteData.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBWValueAddress.Text); - - iFResult:=ValueBlockWrite(iValueData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM1Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM1.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM1.Text); - - iFResult:=ValueBlockWrite_AKM1(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM2Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM2.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM2.Text); - - iFResult:=ValueBlockWrite_AKM2(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressPK.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataPK.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBWValueAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockWrite_PK(iValueData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_D7/ValueBlock.~ddp b/uFCoderAdvance_D7/ValueBlock.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlock.~dfm b/uFCoderAdvance_D7/ValueBlock.~dfm deleted file mode 100644 index 0b87065..0000000 --- a/uFCoderAdvance_D7/ValueBlock.~dfm +++ /dev/null @@ -1,1093 +0,0 @@ -object frmValueBlockReadWrite: TfrmValueBlockReadWrite - Left = 531 - Top = 222 - Width = 529 - Height = 420 - Caption = 'ValueBlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockReadWrite: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 306 - ActivePage = tavValueBlockRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockRead: TTabSheet - Caption = 'ValueBlock Read' - object pnlValueBlockRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBRValueAddress: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadData: TLabel - Left = 9 - Top = 86 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddress: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBRValueAddress: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 0 - end - object txtVBRReadValue: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockValueRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockValueReadClick - end - object txtVBRBlockAddress: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBRValueAddressAKM1: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM1: TLabel - Left = 9 - Top = 86 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM1: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM1: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM1: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM1: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM1Click - end - object txtVBRBlockAddressAKM1: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBRValueAddressAKM2: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM2: TLabel - Left = 9 - Top = 90 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM2: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM2: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM2: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM2: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM2Click - end - object txtVBRBlockAddressAKM2: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBRValueAddressPK: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValuePK: TLabel - Left = 9 - Top = 90 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressPK: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressPK: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValuePK: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadPK: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadPKClick - end - object txtVBRBlockAddressPK: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - end - object tabValueBlockWrite: TTabSheet - Caption = 'ValueBlock Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBWWriteData: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddress: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddress: TLabel - Left = 9 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 127 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteData: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWrite: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteClick - end - object txtVBWBlockAddress: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddress: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBWWriteDataAKM1: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM1: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM1: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM1: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM1Click - end - object txtVBWBlockAddressAKM1: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM1: TEdit - Left = 114 - Top = 94 - Width = 37 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBWWriteDataAKM2: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWAKM2: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM2: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM2: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 55 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM2Click - end - object txtVBWBlockAddressAKM2: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM2: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label9: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressPK: TLabel - Left = 9 - Top = 100 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWPK: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataPK: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWritePK: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWritePKClick - end - object txtVBWBlockAddressPK: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressPK: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlock.~pas b/uFCoderAdvance_D7/ValueBlock.~pas deleted file mode 100644 index 68ef347..0000000 --- a/uFCoderAdvance_D7/ValueBlock.~pas +++ /dev/null @@ -1,598 +0,0 @@ -unit ValueBlock; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,Global,uFCoder1x, - ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockReadWrite: TStatusBar; - pgValueBlockReadWrite: TPageControl; - tavValueBlockRead: TTabSheet; - pnlValueBlockRead: TPanel; - lblVBRValueAddress: TLabel; - lblVBRReadData: TLabel; - lblVBRBlockAddress: TLabel; - lblVBRead: TStaticText; - txtVBRValueAddress: TEdit; - txtVBRReadValue: TEdit; - btnBlockValueRead: TButton; - txtVBRBlockAddress: TEdit; - pnlValueBlockReadAKM1: TPanel; - lblVBRAKM1: TStaticText; - pnlValueBlockReadAKM2: TPanel; - lblVBRAKM2: TStaticText; - pnlValueBlockReadPK: TPanel; - lblBRPK: TStaticText; - tabValueBlockWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblVBWWriteData: TLabel; - lblVBWBlockAddress: TLabel; - lblBISWBlockWrite: TStaticText; - txtVBWWriteData: TEdit; - btnValueBlockWrite: TButton; - txtVBWBlockAddress: TEdit; - pnlBlockWriteAKM1: TPanel; - lblVBWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblVBWAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblVBWPK: TStaticText; - lblVBRValueAddressAKM1: TLabel; - lblVBRReadValueAKM1: TLabel; - lblVBRBlockAddressAKM1: TLabel; - txtVBRValueAddressAKM1: TEdit; - txtVBRReadValueAKM1: TEdit; - btnValueBlockReadAKM1: TButton; - txtVBRBlockAddressAKM1: TEdit; - lblVBRValueAddressAKM2: TLabel; - lblVBRReadValueAKM2: TLabel; - lblVBRBlockAddressAKM2: TLabel; - txtVBRValueAddressAKM2: TEdit; - txtVBRReadValueAKM2: TEdit; - btnValueBlockReadAKM2: TButton; - txtVBRBlockAddressAKM2: TEdit; - lblVBRValueAddressPK: TLabel; - lblVBRReadValuePK: TLabel; - lblVBRBlockAddressPK: TLabel; - txtVBRValueAddressPK: TEdit; - txtVBRReadValuePK: TEdit; - btnValueBlockReadPK: TButton; - txtVBRBlockAddressPK: TEdit; - lblVBWValueAddress: TLabel; - txtVBWValueAddress: TEdit; - lblVBWWriteDataAKM1: TLabel; - lblVBWBlockAddressAKM1: TLabel; - txtVBWWriteDataAKM1: TEdit; - btnValueBlockWriteAKM1: TButton; - txtVBWBlockAddressAKM1: TEdit; - lblVBWValueAddressAKM1: TLabel; - txtVBWValueAddressAKM1: TEdit; - lblVBWWriteDataAKM2: TLabel; - lblVBWBlockAddressAKM2: TLabel; - txtVBWWriteDataAKM2: TEdit; - btnValueBlockWriteAKM2: TButton; - txtVBWBlockAddressAKM2: TEdit; - txtVBWValueAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - Label9: TLabel; - txtVBWWriteDataPK: TEdit; - btnValueBlockWritePK: TButton; - txtVBWBlockAddressPK: TEdit; - lblVBWValueAddressPK: TLabel; - txtVBWValueAddressPK: TEdit; - lblVBWValueAddressAKM2: TLabel; - procedure FormCreate(Sender: TObject); - procedure btnBlockValueReadClick(Sender: TObject); - procedure btnValueBlockReadAKM1Click(Sender: TObject); - procedure btnValueBlockReadAKM2Click(Sender: TObject); - procedure btnValueBlockReadPKClick(Sender: TObject); - procedure btnValueBlockWriteClick(Sender: TObject); - procedure btnValueBlockWriteAKM1Click(Sender: TObject); - procedure btnValueBlockWriteAKM2Click(Sender: TObject); - procedure btnValueBlockWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockReadWrite: TfrmValueBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockReadWrite } - -procedure TfrmValueBlockReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockReadWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockReadWrite.btnBlockValueReadClick(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead(pData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtVBRValueAddress.Text:=IntToStr(bValueAddress); - txtVBRReadValue.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM1Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressAKM1.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM1(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM1.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM1.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM2Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM2(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM2.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM2.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - pData :PLongint; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressPK.Text); - pData :=@iValueData; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - - iFResult:=ValueBlockRead_PK(pData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtVBRValueAddressPK.Text:=IntToStr(bValueAddress); - txtVBRReadValuePK.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteClick(Sender: TObject); -var - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddress.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBWWriteData.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBWValueAddress.Text); - - iFResult:=ValueBlockWrite(iValueData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM1Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM1.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM1.Text); - - iFResult:=ValueBlockWrite_AKM1(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM2Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM2.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM2.Text); - - iFResult:=ValueBlockWrite_AKM2(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressPK.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataPK.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBWValueAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockWrite_PK(iValueData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_D7/ValueBlockInSector.dcu b/uFCoderAdvance_D7/ValueBlockInSector.dcu deleted file mode 100644 index 47d8e8693ed213841a181e917b801c31aa237b06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26323 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlockInSector.dfm b/uFCoderAdvance_D7/ValueBlockInSector.dfm deleted file mode 100644 index 6cbb651..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSector.dfm +++ /dev/null @@ -1,1265 +0,0 @@ -object frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite - Left = 519 - Top = 130 - Width = 527 - Height = 418 - Caption = 'ValueBlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 511 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read/Write (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 511 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSector: TStatusBar - Left = 0 - Top = 360 - Width = 511 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSector: TPageControl - Left = 0 - Top = 57 - Width = 511 - Height = 303 - ActivePage = tabValueBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorRead: TTabSheet - Caption = 'ValueBlockInSector Read' - object pnlValueBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadData: TLabel - Left = 8 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddress: TLabel - Left = 156 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadData: TEdit - Left = 6 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadClick - end - object txtVBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddress: TEdit - Left = 205 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadDataAKM1: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddressAKM1: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadDataAKM1: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM1Click - end - object txtVBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddressAKM1: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataAKM2: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressAKM2: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM2Click - end - object txtVBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataAKM2: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressAKM2: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataPK: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressPK: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadPKClick - end - object txtVBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataPK: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressPK: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - end - object tabValueBlockInSectorWrite: TTabSheet - Caption = 'ValueBlockInSector Write' - ImageIndex = 1 - object pnlVBISBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM1: TLabel - Left = 10 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM1: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM1: TLabel - Left = 156 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 234 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM1: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM1Click - end - object txtVBISWBlockAddressAKM1: TEdit - Left = 103 - Top = 55 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM1: TEdit - Left = 9 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM1: TEdit - Left = 103 - Top = 29 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM1: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 61 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM2: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM2: TLabel - Left = 9 - Top = 34 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM2: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 234 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM2: TButton - Left = 157 - Top = 28 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM2Click - end - object txtVBISWBlockAddressAKM2: TEdit - Left = 104 - Top = 56 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM2: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM2: TEdit - Left = 104 - Top = 30 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM2: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISWBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataPK: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddressPK: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddressPK: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 212 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWritePK: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWritePKClick - end - object txtVBISWBlockAddressPK: TEdit - Left = 102 - Top = 55 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataPK: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddressPK: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddressPK: TEdit - Left = 102 - Top = 29 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - object pnlVBISBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISWBlockAddress: TLabel - Left = 8 - Top = 62 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteData: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddress: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddress: TLabel - Left = 9 - Top = 36 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 189 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWrite: TButton - Left = 157 - Top = 30 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteClick - end - object txtVBISWBlockAddress: TEdit - Left = 105 - Top = 57 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteData: TEdit - Left = 8 - Top = 102 - Width = 144 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddress: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddress: TEdit - Left = 105 - Top = 31 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlockInSector.pas b/uFCoderAdvance_D7/ValueBlockInSector.pas deleted file mode 100644 index 29bfb28..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSector.pas +++ /dev/null @@ -1,670 +0,0 @@ -unit ValueBlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockInSectorReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSector: TStatusBar; - pgValueBlockInSector: TPageControl; - tabValueBlockInSectorRead: TTabSheet; - pnlValueBlockInSectorRead: TPanel; - lblVBISRSectorAddress: TLabel; - lblVBISRReadData: TLabel; - lblVBISRBlockAddress: TLabel; - lblVBISRead: TStaticText; - txtVBISRSectorAddress: TEdit; - txtVBISRReadData: TEdit; - btnValueBlockInSectorRead: TButton; - txtVBISRBlockAddress: TEdit; - pnlValueBlockInSectorReadAKM1: TPanel; - lblVBISRSectorAddressAKM1: TLabel; - lblVBISRReadDataAKM1: TLabel; - lblVBISRBlockAddressAKM1: TLabel; - lblVBISReadAKM1: TStaticText; - txtVBISRSectorAddressAKM1: TEdit; - txtVBISRReadDataAKM1: TEdit; - btnValueBlockInSectorReadAKM1: TButton; - txtVBISRBlockAddressAKM1: TEdit; - pnlValueBlockInSectorReadAKM2: TPanel; - lblVBISRSectorAddressAKM2: TLabel; - lblVBISRBlockAddressAKM2: TLabel; - lblVBISReadAKM2: TStaticText; - txtVBISRSectorAddressAKM2: TEdit; - btnValueBlockInSectorReadAKM2: TButton; - txtVBISRBlockAddressAKM2: TEdit; - pnlValueBlockReadPK: TPanel; - lblVBISRSectorAddressPK: TLabel; - lblVBISRBlockAddressPK: TLabel; - lblVBISReadPK: TStaticText; - txtVBISRSectorAddressPK: TEdit; - btnValueBlockInSectorReadPK: TButton; - txtVBISRBlockAddressPK: TEdit; - tabValueBlockInSectorWrite: TTabSheet; - pnlVBISBlockWriteAKM1: TPanel; - lblVBISWBlockWriteAKM1: TStaticText; - pnlVBISBlockWriteAKM2: TPanel; - lblVBISWBlockWriteAKM2: TStaticText; - pnlVBISBlockWritePK: TPanel; - lblVBISWBlockWritePK: TStaticText; - lblVBISRValueAddress: TLabel; - txtVBISRValueAddress: TEdit; - lblVBISRValueAddressAKM1: TLabel; - txtVBISRValueAddressAKM1: TEdit; - lblVBISRReadDataAKM2: TLabel; - txtVBISRReadDataAKM2: TEdit; - lblVBISRValueAddressAKM2: TLabel; - txtVBISRValueAddressAKM2: TEdit; - lblVBISRReadDataPK: TLabel; - txtVBISRReadDataPK: TEdit; - lblVBISRValueAddressPK: TLabel; - txtVBISRValueAddressPK: TEdit; - lblVBISWBlockAddressAKM1: TLabel; - btnValueBlockInSectorWriteAKM1: TButton; - txtVBISWBlockAddressAKM1: TEdit; - lblVBISWBlockAddressAKM2: TLabel; - btnValueBlockInSectorWriteAKM2: TButton; - txtVBISWBlockAddressAKM2: TEdit; - lblVBISWBlockAddressPK: TLabel; - btnValueBlockInSectorWritePK: TButton; - txtVBISWBlockAddressPK: TEdit; - pnlVBISBlockWrite: TPanel; - lblVBISWBlockAddress: TLabel; - lblVBISWBlockWrite: TStaticText; - btnValueBlockInSectorWrite: TButton; - txtVBISWBlockAddress: TEdit; - lblVBISWWriteData: TLabel; - txtVBISWWriteData: TEdit; - lblBISRWValueAddress: TLabel; - txtVBISWValueAddress: TEdit; - lblVBISWWriteDataAKM1: TLabel; - txtVBISWWriteDataAKM1: TEdit; - lblVBISWSectorAddress: TLabel; - txtVBISWSectorAddress: TEdit; - lblVBISWSectorAddressAKM1: TLabel; - txtVBISWSectorAddressAKM1: TEdit; - lblBISRWValueAddressAKM1: TLabel; - txtVBISWValueAddressAKM1: TEdit; - lblVBISWWriteDataAKM2: TLabel; - txtVBISWWriteDataAKM2: TEdit; - lblVBISWSectorAddressAKM2: TLabel; - txtVBISWSectorAddressAKM2: TEdit; - lblBISRWValueAddressAKM2: TLabel; - txtVBISWValueAddressAKM2: TEdit; - lblVBISWWriteDataPK: TLabel; - txtVBISWWriteDataPK: TEdit; - lblBISRWValueAddressPK: TLabel; - txtVBISWValueAddressPK: TEdit; - lblVBISWSectorAddressPK: TLabel; - txtVBISWSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorReadClick(Sender: TObject); - procedure btnValueBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorReadPKClick(Sender: TObject); - procedure btnValueBlockInSectorWriteClick(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorWritePKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockInSectorReadWrite } - -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject; - var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadClick(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtVBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddress.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtVBISRReadData.Text :=IntToStr(iValueData); - txtVBISRValueAddress.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM1Click(Sender: TObject); -var - PData :PLongint; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM1.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM1(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM1.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM1.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM2Click(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM2.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM2(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM2.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM2.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - PData :PLongint; - pPKKey :PByte; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress, - bBr :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - pData :=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_PK(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtVBISRReadDataPK.Text :=IntToStr(iValueData); - txtVBISRValueAddressPK.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - - if Trim(txtVBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddress.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBISWWriteData.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBISWValueAddress.Text); - - iFResult:=ValueBlockInSectorWrite(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM1.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM1.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM1.Text); - - iFResult:=ValueBlockInSectorWrite_AKM1(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM2.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM2.Text); - - iFResult:=ValueBlockInSectorWrite_AKM2(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataPK.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorWrite_PK(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pPKKey :=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_D7/ValueBlockInSector.~ddp b/uFCoderAdvance_D7/ValueBlockInSector.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlockInSector.~dfm b/uFCoderAdvance_D7/ValueBlockInSector.~dfm deleted file mode 100644 index 5951382..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSector.~dfm +++ /dev/null @@ -1,1265 +0,0 @@ -object frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite - Left = 519 - Top = 130 - Width = 527 - Height = 418 - Caption = 'ValueBlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 511 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read/Write (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 511 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSector: TStatusBar - Left = 0 - Top = 361 - Width = 511 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSector: TPageControl - Left = 0 - Top = 57 - Width = 511 - Height = 304 - ActivePage = tabValueBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorRead: TTabSheet - Caption = 'ValueBlockInSector Read' - object pnlValueBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadData: TLabel - Left = 8 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddress: TLabel - Left = 156 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadData: TEdit - Left = 6 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadClick - end - object txtVBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddress: TEdit - Left = 205 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadDataAKM1: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddressAKM1: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadDataAKM1: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM1Click - end - object txtVBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddressAKM1: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataAKM2: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressAKM2: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM2Click - end - object txtVBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataAKM2: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressAKM2: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataPK: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressPK: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadPKClick - end - object txtVBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataPK: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressPK: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - end - object tabValueBlockInSectorWrite: TTabSheet - Caption = 'ValueBlockInSector Write' - ImageIndex = 1 - object pnlVBISBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM1: TLabel - Left = 10 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM1: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM1: TLabel - Left = 156 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM1: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM1Click - end - object txtVBISWBlockAddressAKM1: TEdit - Left = 103 - Top = 55 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM1: TEdit - Left = 9 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM1: TEdit - Left = 103 - Top = 29 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM1: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 61 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM2: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM2: TLabel - Left = 9 - Top = 34 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM2: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM2: TButton - Left = 157 - Top = 28 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM2Click - end - object txtVBISWBlockAddressAKM2: TEdit - Left = 104 - Top = 56 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM2: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM2: TEdit - Left = 104 - Top = 30 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM2: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISWBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataPK: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddressPK: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddressPK: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWritePK: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWritePKClick - end - object txtVBISWBlockAddressPK: TEdit - Left = 102 - Top = 55 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataPK: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddressPK: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddressPK: TEdit - Left = 102 - Top = 29 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - object pnlVBISBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISWBlockAddress: TLabel - Left = 8 - Top = 62 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteData: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddress: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddress: TLabel - Left = 9 - Top = 36 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWrite: TButton - Left = 157 - Top = 30 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteClick - end - object txtVBISWBlockAddress: TEdit - Left = 105 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteData: TEdit - Left = 8 - Top = 102 - Width = 144 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddress: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddress: TEdit - Left = 105 - Top = 31 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlockInSector.~pas b/uFCoderAdvance_D7/ValueBlockInSector.~pas deleted file mode 100644 index 43d96e1..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSector.~pas +++ /dev/null @@ -1,670 +0,0 @@ -unit ValueBlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder1x,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockInSectorReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSector: TStatusBar; - pgValueBlockInSector: TPageControl; - tabValueBlockInSectorRead: TTabSheet; - pnlValueBlockInSectorRead: TPanel; - lblVBISRSectorAddress: TLabel; - lblVBISRReadData: TLabel; - lblVBISRBlockAddress: TLabel; - lblVBISRead: TStaticText; - txtVBISRSectorAddress: TEdit; - txtVBISRReadData: TEdit; - btnValueBlockInSectorRead: TButton; - txtVBISRBlockAddress: TEdit; - pnlValueBlockInSectorReadAKM1: TPanel; - lblVBISRSectorAddressAKM1: TLabel; - lblVBISRReadDataAKM1: TLabel; - lblVBISRBlockAddressAKM1: TLabel; - lblVBISReadAKM1: TStaticText; - txtVBISRSectorAddressAKM1: TEdit; - txtVBISRReadDataAKM1: TEdit; - btnValueBlockInSectorReadAKM1: TButton; - txtVBISRBlockAddressAKM1: TEdit; - pnlValueBlockInSectorReadAKM2: TPanel; - lblVBISRSectorAddressAKM2: TLabel; - lblVBISRBlockAddressAKM2: TLabel; - lblVBISReadAKM2: TStaticText; - txtVBISRSectorAddressAKM2: TEdit; - btnValueBlockInSectorReadAKM2: TButton; - txtVBISRBlockAddressAKM2: TEdit; - pnlValueBlockReadPK: TPanel; - lblVBISRSectorAddressPK: TLabel; - lblVBISRBlockAddressPK: TLabel; - lblVBISReadPK: TStaticText; - txtVBISRSectorAddressPK: TEdit; - btnValueBlockInSectorReadPK: TButton; - txtVBISRBlockAddressPK: TEdit; - tabValueBlockInSectorWrite: TTabSheet; - pnlVBISBlockWriteAKM1: TPanel; - lblVBISWBlockWriteAKM1: TStaticText; - pnlVBISBlockWriteAKM2: TPanel; - lblVBISWBlockWriteAKM2: TStaticText; - pnlVBISBlockWritePK: TPanel; - lblVBISWBlockWritePK: TStaticText; - lblVBISRValueAddress: TLabel; - txtVBISRValueAddress: TEdit; - lblVBISRValueAddressAKM1: TLabel; - txtVBISRValueAddressAKM1: TEdit; - lblVBISRReadDataAKM2: TLabel; - txtVBISRReadDataAKM2: TEdit; - lblVBISRValueAddressAKM2: TLabel; - txtVBISRValueAddressAKM2: TEdit; - lblVBISRReadDataPK: TLabel; - txtVBISRReadDataPK: TEdit; - lblVBISRValueAddressPK: TLabel; - txtVBISRValueAddressPK: TEdit; - lblVBISWBlockAddressAKM1: TLabel; - btnValueBlockInSectorWriteAKM1: TButton; - txtVBISWBlockAddressAKM1: TEdit; - lblVBISWBlockAddressAKM2: TLabel; - btnValueBlockInSectorWriteAKM2: TButton; - txtVBISWBlockAddressAKM2: TEdit; - lblVBISWBlockAddressPK: TLabel; - btnValueBlockInSectorWritePK: TButton; - txtVBISWBlockAddressPK: TEdit; - pnlVBISBlockWrite: TPanel; - lblVBISWBlockAddress: TLabel; - lblVBISWBlockWrite: TStaticText; - btnValueBlockInSectorWrite: TButton; - txtVBISWBlockAddress: TEdit; - lblVBISWWriteData: TLabel; - txtVBISWWriteData: TEdit; - lblBISRWValueAddress: TLabel; - txtVBISWValueAddress: TEdit; - lblVBISWWriteDataAKM1: TLabel; - txtVBISWWriteDataAKM1: TEdit; - lblVBISWSectorAddress: TLabel; - txtVBISWSectorAddress: TEdit; - lblVBISWSectorAddressAKM1: TLabel; - txtVBISWSectorAddressAKM1: TEdit; - lblBISRWValueAddressAKM1: TLabel; - txtVBISWValueAddressAKM1: TEdit; - lblVBISWWriteDataAKM2: TLabel; - txtVBISWWriteDataAKM2: TEdit; - lblVBISWSectorAddressAKM2: TLabel; - txtVBISWSectorAddressAKM2: TEdit; - lblBISRWValueAddressAKM2: TLabel; - txtVBISWValueAddressAKM2: TEdit; - lblVBISWWriteDataPK: TLabel; - txtVBISWWriteDataPK: TEdit; - lblBISRWValueAddressPK: TLabel; - txtVBISWValueAddressPK: TEdit; - lblVBISWSectorAddressPK: TLabel; - txtVBISWSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorReadClick(Sender: TObject); - procedure btnValueBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorReadPKClick(Sender: TObject); - procedure btnValueBlockInSectorWriteClick(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorWritePKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockInSectorReadWrite } - -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject; - var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadClick(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtVBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddress.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtVBISRReadData.Text :=IntToStr(iValueData); - txtVBISRValueAddress.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM1Click(Sender: TObject); -var - PData :PLongint; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM1.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM1(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM1.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM1.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM2Click(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM2.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM2(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM2.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM2.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - PData :PLongint; - pPKKey :PByte; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress, - bBr :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - pData :=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_PK(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtVBISRReadDataPK.Text :=IntToStr(iValueData); - txtVBISRValueAddressPK.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - - if Trim(txtVBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddress.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBISWWriteData.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBISWValueAddress.Text); - - iFResult:=ValueBlockInSectorWrite(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM1.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM1.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM1.Text); - - iFResult:=ValueBlockInSectorWrite_AKM1(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM2.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM2.Text); - - iFResult:=ValueBlockInSectorWrite_AKM2(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataPK.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorWrite_PK(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pPKKey :=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.dcu b/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.dcu deleted file mode 100644 index a888f67277e7912d41e865f6e2542373d65ca9f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25077 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 AhyVZp diff --git a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.ddp b/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.dfm b/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.dfm deleted file mode 100644 index 7e065d3..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.dfm +++ /dev/null @@ -1,1067 +0,0 @@ -object frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr - Left = 432 - Top = 198 - Width = 529 - Height = 420 - Caption = 'ValueBlockInSectorInctDecr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Increment/Decrement (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSectorIncrDecr: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSectorIncDecr: TPageControl - Left = 0 - Top = 56 - Width = 513 - Height = 306 - ActivePage = tabValueBlockInSectorIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorIncrement: TTabSheet - Caption = 'ValueBlockInSector Increment' - object pnlValueBlockInSectorIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISIncrValue: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrement: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementClick - end - object txtVBISIncrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM1: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM1Click - end - object txtVBISIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM2: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM2Click - end - object txtVBISIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementPK: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementPKClick - end - object txtVBISIncrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlockInSector Decrement' - ImageIndex = 1 - object pnlVBISDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDec: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrement: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - HelpType = htKeyword - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementClick - end - object txtVBISDecrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM1: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM1Click - end - object txtVBISDecrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM2: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM2Click - end - object txtVBISDecrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecPK: TStaticText - Left = 2 - Top = 2 - Width = 173 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementPK: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementPKClick - end - object txtVBISDecrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.pas b/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.pas deleted file mode 100644 index 7df55a9..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.pas +++ /dev/null @@ -1,623 +0,0 @@ -unit ValueBlockInSectorIncrDecr; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder; - -type - TfrmValueBlockInSectorIncDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSectorIncrDecr: TStatusBar; - pgValueBlockInSectorIncDecr: TPageControl; - tabValueBlockInSectorIncrement: TTabSheet; - pnlValueBlockInSectorIncrement: TPanel; - lblVBISIncrValue: TLabel; - lblVBISIncrBlockAddress: TLabel; - lblVBISIncr: TStaticText; - txtVBISIncrementValue: TEdit; - btnValueBlockInSectorIncrement: TButton; - txtVBISIncrBlockAddress: TEdit; - pnlValueBlockInSectorIncrementAKM1: TPanel; - lblVBISIncrAKM1: TStaticText; - pnlValueBlockInSectorIncrementAKM2: TPanel; - lblVBISIncrAKM2: TStaticText; - pnlValueBlockInSectorIncrementPK: TPanel; - lblVBISIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - pnlVBISDecrement: TPanel; - lblVBISDecrementValue: TLabel; - lblVBISDecBlockAddress: TLabel; - lblVBISDec: TStaticText; - txtVBISDecrementValue: TEdit; - btnValueBlockInSectorDecrement: TButton; - txtVBISDecrBlockAddress: TEdit; - pnlVBISDecrementAKM1: TPanel; - lblVBISDecAKM1: TStaticText; - pnlVBISDecrementAKM2: TPanel; - lblVBISDecAKM2: TStaticText; - pnlVBISDecrementPK: TPanel; - lblVBISDecPK: TStaticText; - lblVBISIncSectorAddress: TLabel; - txtVBISIncrSectorAddress: TEdit; - lblVBISIncrValueAKM1: TLabel; - lblVBISIncrBlockAddressAKM1: TLabel; - txtVBISIncrementValueAKM1: TEdit; - btnValueBlockInSectorIncrementAKM1: TButton; - txtVBISIncrBlockAddressAKM1: TEdit; - lblVBISIncSectorAddressAKM1: TLabel; - txtVBISIncrSectorAddressAKM1: TEdit; - lblVBISIncrValueAKM2: TLabel; - lblVBISIncrBlockAddressAKM2: TLabel; - txtVBISIncrementValueAKM2: TEdit; - btnValueBlockInSectorIncrementAKM2: TButton; - txtVBISIncrBlockAddressAKM2: TEdit; - lblVBISIncSectorAddressAKM2: TLabel; - txtVBISIncrSectorAddressAKM2: TEdit; - lblVBISIncrValuePK: TLabel; - lblVBISIncrBlockAddressPK: TLabel; - txtVBISIncrementValuePK: TEdit; - btnValueBlockInSectorIncrementPK: TButton; - txtVBISIncrBlockAddressPK: TEdit; - lblVBISIncSectorAddressPK: TLabel; - txtVBISIncrSectorAddressPK: TEdit; - lblVBISDecrSectorAddress: TLabel; - txtVBISDecrSectorAddress: TEdit; - lblVBISDecrementValueAKM1: TLabel; - lblVBISDecBlockAddressAKM1: TLabel; - txtVBISDecrementValueAKM1: TEdit; - btnValueBlockInSectorDecrementAKM1: TButton; - txtVBISDecrBlockAddressAKM1: TEdit; - lblVBISDecrSectorAddressAKM1: TLabel; - txtVBISDecrSectorAddressAKM1: TEdit; - lblVBISDecrementValueAKM2: TLabel; - lblVBISDecBlockAddressAKM2: TLabel; - txtVBISDecrementValueAKM2: TEdit; - btnValueBlockInSectorDecrementAKM2: TButton; - txtVBISDecrBlockAddressAKM2: TEdit; - lblVBISDecrSectorAddressAKM2: TLabel; - txtVBISDecrSectorAddressAKM2: TEdit; - lblVBISDecrementValuePK: TLabel; - lblVBISDecBlockAddressPK: TLabel; - txtVBISDecrementValuePK: TEdit; - btnValueBlockInSectorDecrementPK: TButton; - txtVBISDecrBlockAddressPK: TEdit; - lblVBISDecrSectorAddressPK: TLabel; - txtVBISDecrSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorIncrementClick(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementPKClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementPKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockInSectorIncDecr.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBISIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddress.Text); - - iFResult:=ValueBlockInSectorIncrement(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM1(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM2(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorIncrement_PK(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBISDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddress.Text); - - iFResult:=ValueBlockInSectorDecrement(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM1(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM2(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; - -begin - try - if Trim(txtVBISDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorDecrement_PK(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - - - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~ddp b/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~dfm b/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~dfm deleted file mode 100644 index 7b8f18f..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~dfm +++ /dev/null @@ -1,1067 +0,0 @@ -object frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr - Left = 432 - Top = 198 - Width = 529 - Height = 420 - Caption = 'ValueBlockInSectorInctDecr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Increment/Decrement (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSectorIncrDecr: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSectorIncDecr: TPageControl - Left = 0 - Top = 56 - Width = 513 - Height = 307 - ActivePage = tabValueBlockInSectorIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorIncrement: TTabSheet - Caption = 'ValueBlockInSector Increment' - object pnlValueBlockInSectorIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISIncrValue: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrement: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementClick - end - object txtVBISIncrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM1: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM1Click - end - object txtVBISIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM2: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM2Click - end - object txtVBISIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementPK: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementPKClick - end - object txtVBISIncrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlockInSector Decrement' - ImageIndex = 1 - object pnlVBISDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDec: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrement: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - HelpType = htKeyword - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementClick - end - object txtVBISDecrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM1: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM1Click - end - object txtVBISDecrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM2: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM2Click - end - object txtVBISDecrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecPK: TStaticText - Left = 2 - Top = 2 - Width = 173 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementPK: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementPKClick - end - object txtVBISDecrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~pas b/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~pas deleted file mode 100644 index c3b673d..0000000 --- a/uFCoderAdvance_D7/ValueBlockInSectorIncrDecr.~pas +++ /dev/null @@ -1,623 +0,0 @@ -unit ValueBlockInSectorIncrDecr; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder1x; - -type - TfrmValueBlockInSectorIncDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSectorIncrDecr: TStatusBar; - pgValueBlockInSectorIncDecr: TPageControl; - tabValueBlockInSectorIncrement: TTabSheet; - pnlValueBlockInSectorIncrement: TPanel; - lblVBISIncrValue: TLabel; - lblVBISIncrBlockAddress: TLabel; - lblVBISIncr: TStaticText; - txtVBISIncrementValue: TEdit; - btnValueBlockInSectorIncrement: TButton; - txtVBISIncrBlockAddress: TEdit; - pnlValueBlockInSectorIncrementAKM1: TPanel; - lblVBISIncrAKM1: TStaticText; - pnlValueBlockInSectorIncrementAKM2: TPanel; - lblVBISIncrAKM2: TStaticText; - pnlValueBlockInSectorIncrementPK: TPanel; - lblVBISIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - pnlVBISDecrement: TPanel; - lblVBISDecrementValue: TLabel; - lblVBISDecBlockAddress: TLabel; - lblVBISDec: TStaticText; - txtVBISDecrementValue: TEdit; - btnValueBlockInSectorDecrement: TButton; - txtVBISDecrBlockAddress: TEdit; - pnlVBISDecrementAKM1: TPanel; - lblVBISDecAKM1: TStaticText; - pnlVBISDecrementAKM2: TPanel; - lblVBISDecAKM2: TStaticText; - pnlVBISDecrementPK: TPanel; - lblVBISDecPK: TStaticText; - lblVBISIncSectorAddress: TLabel; - txtVBISIncrSectorAddress: TEdit; - lblVBISIncrValueAKM1: TLabel; - lblVBISIncrBlockAddressAKM1: TLabel; - txtVBISIncrementValueAKM1: TEdit; - btnValueBlockInSectorIncrementAKM1: TButton; - txtVBISIncrBlockAddressAKM1: TEdit; - lblVBISIncSectorAddressAKM1: TLabel; - txtVBISIncrSectorAddressAKM1: TEdit; - lblVBISIncrValueAKM2: TLabel; - lblVBISIncrBlockAddressAKM2: TLabel; - txtVBISIncrementValueAKM2: TEdit; - btnValueBlockInSectorIncrementAKM2: TButton; - txtVBISIncrBlockAddressAKM2: TEdit; - lblVBISIncSectorAddressAKM2: TLabel; - txtVBISIncrSectorAddressAKM2: TEdit; - lblVBISIncrValuePK: TLabel; - lblVBISIncrBlockAddressPK: TLabel; - txtVBISIncrementValuePK: TEdit; - btnValueBlockInSectorIncrementPK: TButton; - txtVBISIncrBlockAddressPK: TEdit; - lblVBISIncSectorAddressPK: TLabel; - txtVBISIncrSectorAddressPK: TEdit; - lblVBISDecrSectorAddress: TLabel; - txtVBISDecrSectorAddress: TEdit; - lblVBISDecrementValueAKM1: TLabel; - lblVBISDecBlockAddressAKM1: TLabel; - txtVBISDecrementValueAKM1: TEdit; - btnValueBlockInSectorDecrementAKM1: TButton; - txtVBISDecrBlockAddressAKM1: TEdit; - lblVBISDecrSectorAddressAKM1: TLabel; - txtVBISDecrSectorAddressAKM1: TEdit; - lblVBISDecrementValueAKM2: TLabel; - lblVBISDecBlockAddressAKM2: TLabel; - txtVBISDecrementValueAKM2: TEdit; - btnValueBlockInSectorDecrementAKM2: TButton; - txtVBISDecrBlockAddressAKM2: TEdit; - lblVBISDecrSectorAddressAKM2: TLabel; - txtVBISDecrSectorAddressAKM2: TEdit; - lblVBISDecrementValuePK: TLabel; - lblVBISDecBlockAddressPK: TLabel; - txtVBISDecrementValuePK: TEdit; - btnValueBlockInSectorDecrementPK: TButton; - txtVBISDecrBlockAddressPK: TEdit; - lblVBISDecrSectorAddressPK: TLabel; - txtVBISDecrSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorIncrementClick(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementPKClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementPKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockInSectorIncDecr.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBISIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddress.Text); - - iFResult:=ValueBlockInSectorIncrement(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM1(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM2(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorIncrement_PK(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBISDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddress.Text); - - iFResult:=ValueBlockInSectorDecrement(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM1(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM2(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; - -begin - try - if Trim(txtVBISDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorDecrement_PK(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - - - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_D7/ValueBlockIncDec.dcu b/uFCoderAdvance_D7/ValueBlockIncDec.dcu deleted file mode 100644 index 52f863af160960e9614aaced696e1aea3b4f9fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21006 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 F{|8E&f+qj~ diff --git a/uFCoderAdvance_D7/ValueBlockIncDec.ddp b/uFCoderAdvance_D7/ValueBlockIncDec.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlockIncDec.dfm b/uFCoderAdvance_D7/ValueBlockIncDec.dfm deleted file mode 100644 index 61c1b59..0000000 --- a/uFCoderAdvance_D7/ValueBlockIncDec.dfm +++ /dev/null @@ -1,881 +0,0 @@ -object frmValueBlockIncrDecr: TfrmValueBlockIncrDecr - Left = 343 - Top = 186 - Width = 529 - Height = 420 - Caption = 'ValueBlockIncr/Decr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment/Decrement(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockIncrDecr: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockIncDecr: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 305 - ActivePage = tavValueBlockIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockIncrement: TTabSheet - Caption = 'ValueBlock Increment' - object pnlValueBlockIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBIncrValue: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementClick - end - object txtVBIncrBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM1Click - end - object txtVBIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM2Click - end - object txtVBIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementPKClick - end - object txtVBIncrBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlock Decrement' - ImageIndex = 1 - object pnlVBDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDec: TStaticText - Left = 2 - Top = 2 - Width = 168 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementClick - end - object txtVBDecBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM1Click - end - object txtVBDecBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM2Click - end - object txtVBDecBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecPK: TStaticText - Left = 2 - Top = 2 - Width = 191 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementPKClick - end - object txtVBDecBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlockIncDec.pas b/uFCoderAdvance_D7/ValueBlockIncDec.pas deleted file mode 100644 index 67a8ae0..0000000 --- a/uFCoderAdvance_D7/ValueBlockIncDec.pas +++ /dev/null @@ -1,542 +0,0 @@ -unit ValueBlockIncDec; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockIncrDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockIncrDecr: TStatusBar; - pgValueBlockIncDecr: TPageControl; - tavValueBlockIncrement: TTabSheet; - pnlValueBlockIncrement: TPanel; - lblVBIncrValue: TLabel; - lblVBIncrBlockAddress: TLabel; - lblVBIncr: TStaticText; - txtVBIncrementValue: TEdit; - btnValueBlockIncrement: TButton; - txtVBIncrBlockAddress: TEdit; - pnlValueBlockIncrAKM1: TPanel; - lblVBIncrAKM1: TStaticText; - pnlValueBlockIncrAKM2: TPanel; - lblVBIncrAKM2: TStaticText; - pnlValueBlockIncrPK: TPanel; - lblVBIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - lblVBIncrValueAKM1: TLabel; - lblVBIncrBlockAddressAKM1: TLabel; - txtVBIncrementValueAKM1: TEdit; - btnValueBlockIncrementAKM1: TButton; - txtVBIncrBlockAddressAKM1: TEdit; - lblVBIncrValueAKM2: TLabel; - lblVBIncrBlockAddressAKM2: TLabel; - txtVBIncrementValueAKM2: TEdit; - btnValueBlockIncrementAKM2: TButton; - txtVBIncrBlockAddressAKM2: TEdit; - lblVBIncrValuePK: TLabel; - lblVBIncrBlockAddressPK: TLabel; - txtVBIncrementValuePK: TEdit; - btnValueBlockIncrementPK: TButton; - txtVBIncrBlockAddressPK: TEdit; - pnlVBDecrement: TPanel; - lblVBDecrementValue: TLabel; - lblVBDecBlockAddress: TLabel; - lblVBDec: TStaticText; - txtVBDecrementValue: TEdit; - btnValueBlockDecrement: TButton; - txtVBDecBlockAddress: TEdit; - pnlVBDecrementAKM1: TPanel; - lblVBDecrementValueAKM1: TLabel; - lblVBDecBlockAddressAKM1: TLabel; - lblVBDecAKM1: TStaticText; - txtVBDecrementValueAKM1: TEdit; - btnValueBlockDecrementAKM1: TButton; - txtVBDecBlockAddressAKM1: TEdit; - pnlVBDecrementAKM2: TPanel; - lblVBDecrementValueAKM2: TLabel; - lblVBDecBlockAddressAKM2: TLabel; - lblVBDecAKM2: TStaticText; - txtVBDecrementValueAKM2: TEdit; - btnValueBlockDecrementAKM2: TButton; - txtVBDecBlockAddressAKM2: TEdit; - pnlVBDecrementPK: TPanel; - lblVBDecrementValuePK: TLabel; - lblVBDecBlockAddressPK: TLabel; - lblVBDecPK: TStaticText; - txtVBDecrementValuePK: TEdit; - btnValueBlockDecrementPK: TButton; - txtVBDecBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockIncrementClick(Sender: TObject); - procedure btnValueBlockIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockIncrementPKClick(Sender: TObject); - procedure btnValueBlockDecrementClick(Sender: TObject); - procedure btnValueBlockDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockDecrementPKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockIncrDecr: TfrmValueBlockIncrDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockIncrDecr.FormCreate(Sender: TObject); -begin - - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddress.Text); - - iFResult:=ValueBlockIncrement(iIncrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM1.Text); - - iFResult:=ValueBlockIncrement_AKM1(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM2.Text); - - iFResult:=ValueBlockIncrement_AKM2(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - - iFResult:=ValueBlockIncrement_PK(iIncrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddress.Text); - - iFResult:=ValueBlockDecrement(iDecrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM1.Text); - - iFResult:=ValueBlockDecrement_AKM1(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM2.Text); - - iFResult:=ValueBlockDecrement_AKM2(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressPK.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - iFResult:=ValueBlockDecrement_PK(iDecrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -end. diff --git a/uFCoderAdvance_D7/ValueBlockIncDec.~ddp b/uFCoderAdvance_D7/ValueBlockIncDec.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ValueBlockIncDec.~dfm b/uFCoderAdvance_D7/ValueBlockIncDec.~dfm deleted file mode 100644 index b4551b9..0000000 --- a/uFCoderAdvance_D7/ValueBlockIncDec.~dfm +++ /dev/null @@ -1,881 +0,0 @@ -object frmValueBlockIncrDecr: TfrmValueBlockIncrDecr - Left = 343 - Top = 186 - Width = 529 - Height = 420 - Caption = 'ValueBlockIncr/Decr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment/Decrement(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockIncrDecr: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockIncDecr: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 306 - ActivePage = tavValueBlockIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockIncrement: TTabSheet - Caption = 'ValueBlock Increment' - object pnlValueBlockIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBIncrValue: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementClick - end - object txtVBIncrBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM1Click - end - object txtVBIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM2Click - end - object txtVBIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementPKClick - end - object txtVBIncrBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlock Decrement' - ImageIndex = 1 - object pnlVBDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDec: TStaticText - Left = 2 - Top = 2 - Width = 168 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementClick - end - object txtVBDecBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM1Click - end - object txtVBDecBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM2Click - end - object txtVBDecBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecPK: TStaticText - Left = 2 - Top = 2 - Width = 191 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementPKClick - end - object txtVBDecBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_D7/ValueBlockIncDec.~pas b/uFCoderAdvance_D7/ValueBlockIncDec.~pas deleted file mode 100644 index 2988528..0000000 --- a/uFCoderAdvance_D7/ValueBlockIncDec.~pas +++ /dev/null @@ -1,542 +0,0 @@ -unit ValueBlockIncDec; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder1x,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockIncrDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockIncrDecr: TStatusBar; - pgValueBlockIncDecr: TPageControl; - tavValueBlockIncrement: TTabSheet; - pnlValueBlockIncrement: TPanel; - lblVBIncrValue: TLabel; - lblVBIncrBlockAddress: TLabel; - lblVBIncr: TStaticText; - txtVBIncrementValue: TEdit; - btnValueBlockIncrement: TButton; - txtVBIncrBlockAddress: TEdit; - pnlValueBlockIncrAKM1: TPanel; - lblVBIncrAKM1: TStaticText; - pnlValueBlockIncrAKM2: TPanel; - lblVBIncrAKM2: TStaticText; - pnlValueBlockIncrPK: TPanel; - lblVBIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - lblVBIncrValueAKM1: TLabel; - lblVBIncrBlockAddressAKM1: TLabel; - txtVBIncrementValueAKM1: TEdit; - btnValueBlockIncrementAKM1: TButton; - txtVBIncrBlockAddressAKM1: TEdit; - lblVBIncrValueAKM2: TLabel; - lblVBIncrBlockAddressAKM2: TLabel; - txtVBIncrementValueAKM2: TEdit; - btnValueBlockIncrementAKM2: TButton; - txtVBIncrBlockAddressAKM2: TEdit; - lblVBIncrValuePK: TLabel; - lblVBIncrBlockAddressPK: TLabel; - txtVBIncrementValuePK: TEdit; - btnValueBlockIncrementPK: TButton; - txtVBIncrBlockAddressPK: TEdit; - pnlVBDecrement: TPanel; - lblVBDecrementValue: TLabel; - lblVBDecBlockAddress: TLabel; - lblVBDec: TStaticText; - txtVBDecrementValue: TEdit; - btnValueBlockDecrement: TButton; - txtVBDecBlockAddress: TEdit; - pnlVBDecrementAKM1: TPanel; - lblVBDecrementValueAKM1: TLabel; - lblVBDecBlockAddressAKM1: TLabel; - lblVBDecAKM1: TStaticText; - txtVBDecrementValueAKM1: TEdit; - btnValueBlockDecrementAKM1: TButton; - txtVBDecBlockAddressAKM1: TEdit; - pnlVBDecrementAKM2: TPanel; - lblVBDecrementValueAKM2: TLabel; - lblVBDecBlockAddressAKM2: TLabel; - lblVBDecAKM2: TStaticText; - txtVBDecrementValueAKM2: TEdit; - btnValueBlockDecrementAKM2: TButton; - txtVBDecBlockAddressAKM2: TEdit; - pnlVBDecrementPK: TPanel; - lblVBDecrementValuePK: TLabel; - lblVBDecBlockAddressPK: TLabel; - lblVBDecPK: TStaticText; - txtVBDecrementValuePK: TEdit; - btnValueBlockDecrementPK: TButton; - txtVBDecBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockIncrementClick(Sender: TObject); - procedure btnValueBlockIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockIncrementPKClick(Sender: TObject); - procedure btnValueBlockDecrementClick(Sender: TObject); - procedure btnValueBlockDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockDecrementPKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockIncrDecr: TfrmValueBlockIncrDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockIncrDecr.FormCreate(Sender: TObject); -begin - - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddress.Text); - - iFResult:=ValueBlockIncrement(iIncrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM1.Text); - - iFResult:=ValueBlockIncrement_AKM1(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM2.Text); - - iFResult:=ValueBlockIncrement_AKM2(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - - iFResult:=ValueBlockIncrement_PK(iIncrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddress.Text); - - iFResult:=ValueBlockDecrement(iDecrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM1.Text); - - iFResult:=ValueBlockDecrement_AKM1(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM2.Text); - - iFResult:=ValueBlockDecrement_AKM2(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressPK.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - iFResult:=ValueBlockDecrement_PK(iDecrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -end. diff --git a/uFCoderAdvance_D7/ViewAll.dcu b/uFCoderAdvance_D7/ViewAll.dcu deleted file mode 100644 index 094ccfacc3b98767f3d9e3a37183bb609af5c697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10086 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ViewAll.dfm b/uFCoderAdvance_D7/ViewAll.dfm deleted file mode 100644 index 4e284ef..0000000 --- a/uFCoderAdvance_D7/ViewAll.dfm +++ /dev/null @@ -1,198 +0,0 @@ -object frmViewAll: TfrmViewAll - Left = 329 - Top = 138 - Width = 529 - Height = 436 - Caption = 'ViewAll' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - DesignSize = ( - 513 - 397) - PixelsPerInch = 96 - TextHeight = 13 - object lblKeyIndex: TLabel - Left = 159 - Top = 318 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'View All' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbViewAll: TStatusBar - Left = 0 - Top = 378 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object sgrdViewAll: TStringGrid - Left = 0 - Top = 26 - Width = 513 - Height = 277 - Cursor = crHandPoint - Ctl3D = True - DefaultColWidth = 40 - DefaultRowHeight = 20 - RowCount = 2 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - OnDrawCell = sgrdViewAllDrawCell - end - object rbHexView: TRadioButton - Left = 271 - Top = 343 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'HEX' - TabOrder = 3 - end - object btnReadData: TButton - Left = 331 - Top = 316 - Width = 177 - Height = 41 - Cursor = crHandPoint - Anchors = [akLeft, akBottom] - Caption = 'READ DATA' - TabOrder = 4 - OnClick = btnReadDataClick - end - object cboKeyIndex: TComboBox - Left = 168 - Top = 338 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object pbBar: TProgressBar - Left = 331 - Top = 361 - Width = 177 - Height = 13 - BorderWidth = 1 - Smooth = True - TabOrder = 6 - Visible = False - end - object rbgrpRadioButtonGroup: TRadioGroup - Left = 8 - Top = 305 - Width = 97 - Height = 61 - ItemIndex = 0 - Items.Strings = ( - 'AUTH 1A' - 'AUTH 1B') - TabOrder = 7 - end - object rbAscii: TRadioButton - Left = 271 - Top = 316 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'ASCII' - Checked = True - TabOrder = 8 - TabStop = True - end -end diff --git a/uFCoderAdvance_D7/ViewAll.pas b/uFCoderAdvance_D7/ViewAll.pas deleted file mode 100644 index 63d7719..0000000 --- a/uFCoderAdvance_D7/ViewAll.pas +++ /dev/null @@ -1,273 +0,0 @@ -unit ViewAll; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder, - Grids, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmViewAll = class(TForm) - lblHeader: TStaticText; - stbViewAll: TStatusBar; - sgrdViewAll: TStringGrid; - rbHexView: TRadioButton; - btnReadData: TButton; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - pbBar: TProgressBar; - rbgrpRadioButtonGroup: TRadioGroup; - rbAscii: TRadioButton; - procedure sgrdViewAllDrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect; State: TGridDrawState); - procedure btnReadDataClick(Sender: TObject); - private - procedure Draw1k4kGrid; - procedure Draw1k4kCardData; - procedure DrawNTAGCardData; - public - { Public declarations } - end; - -var - frmViewAll: TfrmViewAll; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmViewAll.Draw1k4kGrid; -var - bBr :Byte; -begin - - with sgrdViewAll do - begin - ColCount := 19; - // FixedRows := 3; - Cells[0, 0] := 'S'; - Cells[1, 0] := 'BiS'; - Cells[2, 0] := 'Blo'; - for bBr := 0 to 15 do - Cells[bBr + 3, 0] := IntToStr(bBr); - end; - -end; - -procedure TfrmViewAll.sgrdViewAllDrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState); -begin - if sgrdViewAll.Cells[0,aRow]='SCT' then - begin - with sgrdViewAll.Canvas do - begin - Brush.Color := $02aaaaaa; - FillRect(Rect); - Font.Color := clBlack; - TextOut(Rect.Left+2,Rect.Top+2,sgrdViewAll.Cells[aCol,aRow]); - end; -end; -end; - - -procedure TfrmViewAll.btnReadDataClick(Sender: TObject); -var - cardType:Byte; -begin - cardType:=frmuFrAdvanced.bDLCardType; - if (cardType = DL_NTAG_203) or (cardType = DL_MIFARE_ULTRALIGHT) or - (cardType = DL_MIFARE_ULTRALIGHT_C) then - DrawNTAGCardData - else - if (cardType = DL_MIFARE_CLASSIC_1K) or (cardType = DL_MIFARE_CLASSIC_4K) or - (cardType = DL_MIFARE_PLUS_S_4K) then - Draw1k4kCardData; -end; - -procedure TfrmViewAll.Draw1k4kCardData; -var - chaBlockData :array[0..15] of Char; - pData :PByte; - bBlockCount :Integer; - bBISCounter, - bBISCount, - bBr, - bSectorsCounter :Byte; - iMaxBlocks :Integer; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - try - frmuFrAdvanced.FunctionStart := true; - Draw1k4kGrid; - bSectorsCounter :=0; - bBISCount :=0; - bBISCounter :=3; - bBlockCount :=0; - New(pData); - bKeyIndex :=cboKeyIndex.ItemIndex; - iMaxBlocks :=MaxBlocks(); - pbBar.Max :=iMaxBlocks; - pbBar.Visible :=true; - - if rbgrpRadioButtonGroup.ItemIndex=0 then bAuthMode :=MIFARE_AUTHENT1A - else - bAuthMode :=MIFARE_AUTHENT1B; - - sgrdViewAll.RowCount:=iMaxBlocks+1; - - while bBlockCount=31) and (bBlockCount mod 16 =0) then - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - bBISCounter:=15; - end - else - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - end; - end; - sgrdViewAll.Repaint; - if iFResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - pbBar.Visible := false; - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmViewAll.DrawNTAGCardData; -var - pData :PByte; - pPKKey :PByte; - pageData :array[0..10] of Byte; - authMode :Byte; - blockAddress :Byte; - bCounter,i :Byte; - maxBlock :integer; - bAuthMode, - bKeyIndex :Byte; - fnResult :DL_STATUS; -begin - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - - try - frmuFrAdvanced.FunctionStart := true; - maxBlock := MaxBlocks(); - - with sgrdViewAll do - begin - FixedCols :=1; - FixedRows :=1; - ColCount :=5; - RowCount :=maxBlock-2; - DefaultColWidth:=35; - Cells[0,0] :='PAGE'; - for i:=1 to 4 do - Cells[i,0]:=IntToStr(i); - end; - New(pData); - if rbgrpRadioButtonGroup.ItemIndex=0 then - authMode :=MIFARE_AUTHENT1A - else - authMode :=MIFARE_AUTHENT1B; - - bKeyIndex :=StrToInt(cboKeyIndex.Text); - pbBar.Visible :=true; - pbBar.Max :=maxBlock+2; - bcounter :=4; - while (bcounter<=maxBlock) do - begin - pData := PByte(@pageData); - fnResult := BlockRead(pData,bcounter,authMode,bKeyIndex); - if not fnResult = DL_OK then break; - - sgrdViewAll.Cells[0,bcounter-3] := IntToStr(bcounter); - for i:=0 to 3 do - begin - if rbHexView.Checked then - sgrdViewAll.Cells[i+1,bcounter-3]:='$'+IntToHex(Byte(pageData[i]),2) - else - sgrdViewAll.Cells[i+1,bcounter-3]:=chr(pageData[i]); - end; - - pbBar.Position:=bcounter; - Application.ProcessMessages; - Inc(bcounter); - end; - if fnResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,fnResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,fnResult); - end; - finally - pbBar.Visible:=false; - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart := false; - end; - -end; - - - -end. - diff --git a/uFCoderAdvance_D7/ViewAll.~ddp b/uFCoderAdvance_D7/ViewAll.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/ViewAll.~dfm b/uFCoderAdvance_D7/ViewAll.~dfm deleted file mode 100644 index 80567da..0000000 --- a/uFCoderAdvance_D7/ViewAll.~dfm +++ /dev/null @@ -1,198 +0,0 @@ -object frmViewAll: TfrmViewAll - Left = 329 - Top = 138 - Width = 529 - Height = 436 - Caption = 'ViewAll' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - DesignSize = ( - 513 - 398) - PixelsPerInch = 96 - TextHeight = 13 - object lblKeyIndex: TLabel - Left = 159 - Top = 318 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'View All' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbViewAll: TStatusBar - Left = 0 - Top = 379 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object sgrdViewAll: TStringGrid - Left = 0 - Top = 26 - Width = 513 - Height = 277 - Cursor = crHandPoint - Ctl3D = True - DefaultColWidth = 40 - DefaultRowHeight = 20 - RowCount = 2 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - OnDrawCell = sgrdViewAllDrawCell - end - object rbHexView: TRadioButton - Left = 271 - Top = 343 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'HEX' - TabOrder = 3 - end - object btnReadData: TButton - Left = 331 - Top = 316 - Width = 177 - Height = 41 - Cursor = crHandPoint - Anchors = [akLeft, akBottom] - Caption = 'READ DATA' - TabOrder = 4 - OnClick = btnReadDataClick - end - object cboKeyIndex: TComboBox - Left = 168 - Top = 338 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object pbBar: TProgressBar - Left = 331 - Top = 361 - Width = 177 - Height = 13 - BorderWidth = 1 - Smooth = True - TabOrder = 6 - Visible = False - end - object rbgrpRadioButtonGroup: TRadioGroup - Left = 8 - Top = 305 - Width = 97 - Height = 61 - ItemIndex = 0 - Items.Strings = ( - 'AUTH 1A' - 'AUTH 1B') - TabOrder = 7 - end - object rbAscii: TRadioButton - Left = 271 - Top = 316 - Width = 54 - Height = 16 - Cursor = crHandPoint - Caption = 'ASCII' - Checked = True - TabOrder = 8 - TabStop = True - end -end diff --git a/uFCoderAdvance_D7/ViewAll.~pas b/uFCoderAdvance_D7/ViewAll.~pas deleted file mode 100644 index 0fb5b59..0000000 --- a/uFCoderAdvance_D7/ViewAll.~pas +++ /dev/null @@ -1,273 +0,0 @@ -unit ViewAll; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder1x, - Grids, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmViewAll = class(TForm) - lblHeader: TStaticText; - stbViewAll: TStatusBar; - sgrdViewAll: TStringGrid; - rbHexView: TRadioButton; - btnReadData: TButton; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - pbBar: TProgressBar; - rbgrpRadioButtonGroup: TRadioGroup; - rbAscii: TRadioButton; - procedure sgrdViewAllDrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect; State: TGridDrawState); - procedure btnReadDataClick(Sender: TObject); - private - procedure Draw1k4kGrid; - procedure Draw1k4kCardData; - procedure DrawNTAGCardData; - public - { Public declarations } - end; - -var - frmViewAll: TfrmViewAll; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmViewAll.Draw1k4kGrid; -var - bBr :Byte; -begin - - with sgrdViewAll do - begin - ColCount := 19; - // FixedRows := 3; - Cells[0, 0] := 'S'; - Cells[1, 0] := 'BiS'; - Cells[2, 0] := 'Blo'; - for bBr := 0 to 15 do - Cells[bBr + 3, 0] := IntToStr(bBr); - end; - -end; - -procedure TfrmViewAll.sgrdViewAllDrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState); -begin - if sgrdViewAll.Cells[0,aRow]='SCT' then - begin - with sgrdViewAll.Canvas do - begin - Brush.Color := $02aaaaaa; - FillRect(Rect); - Font.Color := clBlack; - TextOut(Rect.Left+2,Rect.Top+2,sgrdViewAll.Cells[aCol,aRow]); - end; -end; -end; - - -procedure TfrmViewAll.btnReadDataClick(Sender: TObject); -var - cardType:Byte; -begin - cardType:=frmuFrAdvanced.bDLCardType; - if (cardType = uFCoder1x.DL_NTAG_203) or (cardType = uFCoder1x.DL_MIFARE_ULTRALIGHT) or - (cardType = uFCoder1x.DL_MIFARE_ULTRALIGHT_C) then - DrawNTAGCardData - else - if (cardType = uFCoder1x.DL_MIFARE_CLASSIC_1K) or (cardType = uFCoder1x.DL_MIFARE_CLASSIC_4K) or - (cardType = uFCoder1x.DL_MIFARE_PLUS_S_4K) then - Draw1k4kCardData; -end; - -procedure TfrmViewAll.Draw1k4kCardData; -var - chaBlockData :array[0..15] of Char; - pData :PByte; - bBlockCount :Integer; - bBISCounter, - bBISCount, - bBr, - bSectorsCounter :Byte; - iMaxBlocks :Integer; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - try - frmuFrAdvanced.FunctionStart := true; - Draw1k4kGrid; - bSectorsCounter :=0; - bBISCount :=0; - bBISCounter :=3; - bBlockCount :=0; - New(pData); - bKeyIndex :=cboKeyIndex.ItemIndex; - iMaxBlocks :=MaxBlocks(); - pbBar.Max :=iMaxBlocks; - pbBar.Visible :=true; - - if rbgrpRadioButtonGroup.ItemIndex=0 then bAuthMode :=MIFARE_AUTHENT1A - else - bAuthMode :=MIFARE_AUTHENT1B; - - sgrdViewAll.RowCount:=iMaxBlocks+1; - - while bBlockCount=31) and (bBlockCount mod 16 =0) then - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - bBISCounter:=15; - end - else - begin - for bBr:=0 to 2 do - begin - sgrdViewAll.Cells[bBr,bBlockCount]:='SCT'; - end; - Inc(bSectorsCounter); - end; - end; - sgrdViewAll.Repaint; - if iFResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - pbBar.Visible := false; - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmViewAll.DrawNTAGCardData; -var - pData :PByte; - pPKKey :PByte; - pageData :array[0..10] of Byte; - authMode :Byte; - blockAddress :Byte; - bCounter,i :Byte; - maxBlock :integer; - bAuthMode, - bKeyIndex :Byte; - fnResult :DL_STATUS; -begin - if (frmuFrAdvanced.FunctionStart) or (frmuFrAdvanced.ReaderStart) then Exit; - - try - frmuFrAdvanced.FunctionStart := true; - maxBlock := MaxBlocks(); - - with sgrdViewAll do - begin - FixedCols :=1; - FixedRows :=1; - ColCount :=5; - RowCount :=maxBlock-2; - DefaultColWidth:=35; - Cells[0,0] :='PAGE'; - for i:=1 to 4 do - Cells[i,0]:=IntToStr(i); - end; - New(pData); - if rbgrpRadioButtonGroup.ItemIndex=0 then - authMode :=MIFARE_AUTHENT1A - else - authMode :=MIFARE_AUTHENT1B; - - bKeyIndex :=StrToInt(cboKeyIndex.Text); - pbBar.Visible :=true; - pbBar.Max :=maxBlock+2; - bcounter :=4; - while (bcounter<=maxBlock) do - begin - pData := PByte(@pageData); - fnResult := BlockRead(pData,bcounter,authMode,bKeyIndex); - if not fnResult = DL_OK then break; - - sgrdViewAll.Cells[0,bcounter-3] := IntToStr(bcounter); - for i:=0 to 3 do - begin - if rbHexView.Checked then - sgrdViewAll.Cells[i+1,bcounter-3]:='$'+IntToHex(Byte(pageData[i]),2) - else - sgrdViewAll.Cells[i+1,bcounter-3]:=chr(pageData[i]); - end; - - pbBar.Position:=bcounter; - Application.ProcessMessages; - Inc(bcounter); - end; - if fnResult=DL_OK then - begin - ReaderUiSignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbViewAll,fnResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbViewAll,fnResult); - end; - finally - pbBar.Visible:=false; - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart := false; - end; - -end; - - - -end. - diff --git a/uFCoderAdvance_D7/uFAdvanced.dcu b/uFCoderAdvance_D7/uFAdvanced.dcu deleted file mode 100644 index 865a4f026ca84f353557b7ce6b10a75a4d37723f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18761 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/uFAdvanced.dfm b/uFCoderAdvance_D7/uFAdvanced.dfm deleted file mode 100644 index 1c5c97d..0000000 --- a/uFCoderAdvance_D7/uFAdvanced.dfm +++ /dev/null @@ -1,523 +0,0 @@ -object frmuFrAdvanced: TfrmuFrAdvanced - Left = 639 - Top = 184 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'uFr Advance' - ClientHeight = 668 - ClientWidth = 541 - Color = clWindow - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - KeyPreview = True - Menu = mnuMeni - OldCreateOrder = False - Position = poDesktopCenter - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object stbCard: TStatusBar - Left = 0 - Top = 649 - Width = 541 - Height = 19 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'CARD STATUS' - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlReader: TPanel - Left = 0 - Top = 0 - Width = 541 - Height = 256 - Align = alTop - Ctl3D = True - ParentCtl3D = False - TabOrder = 1 - object lblReaderType: TLabel - Left = 37 - Top = 16 - Width = 72 - Height = 13 - Caption = 'Reader Type' - end - object lblReaderSerial: TLabel - Left = 37 - Top = 40 - Width = 78 - Height = 13 - Caption = 'Reader Serial' - end - object lblCardType: TLabel - Left = 292 - Top = 16 - Width = 59 - Height = 13 - Caption = 'Card Type' - end - object lblCardSerial: TLabel - Left = 293 - Top = 40 - Width = 65 - Height = 13 - Caption = 'Card Serial' - end - object Bevel1: TBevel - Left = 25 - Top = 65 - Width = 504 - Height = 5 - end - object lblLightMode: TLabel - Left = 41 - Top = 82 - Width = 61 - Height = 13 - Caption = 'Light Mode' - end - object lblSoundMode: TLabel - Left = 41 - Top = 105 - Width = 70 - Height = 13 - Caption = 'Sound Mode' - end - object lblCardUIDSize: TLabel - Left = 421 - Top = 17 - Width = 50 - Height = 13 - Caption = 'UID Size' - end - object stbReader: TStatusBar - Left = 1 - Top = 234 - Width = 539 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object cboLightMode: TComboBox - Left = 133 - Top = 78 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 1 - Text = 'None' - Items.Strings = ( - 'None' - 'Long Green' - 'LongRed' - 'Alternation' - 'Flash') - end - object cboSoundMode: TComboBox - Left = 133 - Top = 102 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 2 - Text = 'None' - Items.Strings = ( - 'None' - 'Short' - 'Long' - 'Double Short' - 'Tripple Short' - 'Tripplet Melody') - end - object btnReaderUiSignal: TButton - Left = 276 - Top = 79 - Width = 110 - Height = 44 - Cursor = crHandPoint - Caption = 'Reader Ui Signal' - TabOrder = 3 - OnClick = btnReaderUiSignalClick - end - object btnSoftRestart: TButton - Left = 392 - Top = 77 - Width = 125 - Height = 23 - Cursor = crHandPoint - Caption = 'Soft Restart' - TabOrder = 4 - OnClick = btnSoftRestartClick - end - object btnReaderReset: TButton - Left = 392 - Top = 101 - Width = 125 - Height = 23 - Caption = 'Reader Reset' - TabOrder = 5 - OnClick = btnReaderResetClick - end - object pgReaderKeyUserData: TPageControl - Left = 39 - Top = 131 - Width = 481 - Height = 97 - ActivePage = tabReaderKey - TabOrder = 6 - object tabReaderKey: TTabSheet - Caption = 'Reader Key' - object pnlReaderKey: TPanel - Left = 2 - Top = 0 - Width = 470 - Height = 67 - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 260 - Top = 48 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object chkReaderHex: TCheckBox - Left = 26 - Top = 38 - Width = 54 - Height = 15 - Caption = 'Hex' - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - OnClick = chkReaderHexClick - end - object cboKeyIndex: TComboBox - Left = 272 - Top = 13 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object btnSaveReaderKey: TButton - Left = 332 - Top = 12 - Width = 125 - Height = 33 - Caption = 'Save ' - TabOrder = 2 - OnClick = btnSaveKeyIndexClick - end - end - end - object tabUserData: TTabSheet - Caption = 'User Data' - ImageIndex = 1 - object lblUserData: TLabel - Left = 9 - Top = 16 - Width = 57 - Height = 13 - Caption = 'User Data' - end - object lblNewUserData: TLabel - Left = 202 - Top = 16 - Width = 85 - Height = 13 - Caption = 'New User Data' - end - object txtUserData: TEdit - Left = 10 - Top = 32 - Width = 183 - Height = 21 - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 0 - end - object txtNewUserData: TEdit - Left = 203 - Top = 32 - Width = 174 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object btnWriteUserData: TButton - Left = 387 - Top = 21 - Width = 81 - Height = 32 - Cursor = crHandPoint - Caption = 'Save' - TabOrder = 2 - OnClick = btnSaveUserDataClick - end - end - end - object txtReaderType: TEdit - Left = 126 - Top = 15 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 7 - end - object txtReaderSerial: TEdit - Left = 126 - Top = 39 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 8 - end - object txtCardType: TEdit - Left = 369 - Top = 14 - Width = 33 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 9 - end - object txtCardUIDSize: TEdit - Left = 480 - Top = 14 - Width = 33 - Height = 19 - Hint = 'Card UID Size' - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ParentShowHint = False - ReadOnly = True - ShowHint = False - TabOrder = 10 - end - object txtCardSerial: TEdit - Left = 369 - Top = 38 - Width = 144 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 11 - end - end - object pnlContainer: TPanel - Left = 0 - Top = 256 - Width = 541 - Height = 393 - Align = alClient - TabOrder = 2 - end - object mnuMeni: TMainMenu - Left = 480 - Top = 616 - object mnuFunctionsItem: TMenuItem - Caption = 'Functions' - object mnuLinearReadWriteItems: TMenuItem - Caption = 'Linear Read/Write' - OnClick = mnuLinearReadWriteItemsClick - end - object SEP1: TMenuItem - Caption = '-' - end - object mnuBlockReadWriteItems: TMenuItem - Caption = 'Block Read/Write' - OnClick = mnuBlockReadWriteItemsClick - end - object mnuBlockInSectorReadWriteItem: TMenuItem - Caption = 'BlockInSector Read/Write' - OnClick = mnuBlockInSectorReadWriteItemClick - end - object SEP2: TMenuItem - Caption = '-' - end - object mnuValueBlockReadWriteItem: TMenuItem - Caption = 'ValueBlock Read/Write' - OnClick = mnuValueBlockReadWriteItemClick - end - object mnuValueBlockIncrementDecrementItem: TMenuItem - Caption = 'ValueBlock Increment/Decrement' - OnClick = mnuValueBlockIncrementDecrementItemClick - end - object SEP3: TMenuItem - Caption = '-' - end - object mnuValueBlockInSectorReadWriteItem: TMenuItem - Caption = 'ValueBlockInSector Read/Write' - OnClick = mnuValueBlockInSectorReadWriteItemClick - end - object mnuValueBlockInSectorIncrDecrItems: TMenuItem - Caption = 'ValueBlockInSector Increment/Decrement' - OnClick = mnuValueBlockInSectorIncrDecrItemsClick - end - object SEP4: TMenuItem - Caption = '-' - end - object mnuSectorTrailerWriteItem: TMenuItem - Caption = 'SectorTrailer Write' - OnClick = mnuSectorTrailerWriteItemClick - end - object mnuLinearFormatCardItem: TMenuItem - Caption = 'LinearFormat Card' - OnClick = mnuLinearFormatCardItemClick - end - object SEP5: TMenuItem - Caption = '-' - end - object mnuReaderHardwareFirmwareversionItem: TMenuItem - Caption = 'Reader Hardware/Firmware version' - OnClick = mnuReaderHardwareFirmwareversionItemClick - end - object mnuExitItem: TMenuItem - Caption = 'Exit' - ShortCut = 16465 - OnClick = mnuExitItemClick - end - end - object mnuViewAlItems: TMenuItem - Caption = 'View All' - OnClick = mnuViewAlItemsClick - end - end - object Timer: TTimer - Interval = 500 - OnTimer = TimerTimer - Left = 480 - Top = 584 - end -end diff --git a/uFCoderAdvance_D7/uFAdvanced.pas b/uFCoderAdvance_D7/uFAdvanced.pas deleted file mode 100644 index 95b36e1..0000000 --- a/uFCoderAdvance_D7/uFAdvanced.pas +++ /dev/null @@ -1,476 +0,0 @@ - -unit uFAdvanced; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus,ComCtrls, StdCtrls, ExtCtrls, - uFCoder, - Global, - LinearReadWrite, - BlockReadWrite, - BlockInSector, - ValueBlock, - ValueBlockIncDec, - ValueBlockInSector, - ValueBlockInSectorIncrDecr, - SectorTrailersWrite, - LinearFormatsCard, - ViewAll; - - -type - TfrmuFrAdvanced = class(TForm) - stbCard: TStatusBar; - mnuMeni: TMainMenu; - mnuFunctionsItem: TMenuItem; - mnuLinearReadWriteItems: TMenuItem; - pnlReader: TPanel; - lblReaderType: TLabel; - lblReaderSerial: TLabel; - lblCardType: TLabel; - lblCardSerial: TLabel; - Bevel1: TBevel; - Timer: TTimer; - stbReader: TStatusBar; - lblLightMode: TLabel; - cboLightMode: TComboBox; - lblSoundMode: TLabel; - cboSoundMode: TComboBox; - btnReaderUiSignal: TButton; - btnSoftRestart: TButton; - btnReaderReset: TButton; - pnlContainer: TPanel; - SEP1: TMenuItem; - mnuBlockReadWriteItems: TMenuItem; - mnuBlockInSectorReadWriteItem: TMenuItem; - SEP2: TMenuItem; - mnuValueBlockReadWriteItem: TMenuItem; - mnuValueBlockIncrementDecrementItem: TMenuItem; - SEP3: TMenuItem; - mnuExitItem: TMenuItem; - SEP4: TMenuItem; - mnuValueBlockInSectorReadWriteItem: TMenuItem; - mnuValueBlockInSectorIncrDecrItems: TMenuItem; - mnuSectorTrailerWriteItem: TMenuItem; - SEP5: TMenuItem; - mnuViewAlItems: TMenuItem; - mnuLinearFormatCardItem: TMenuItem; - pgReaderKeyUserData: TPageControl; - tabUserData: TTabSheet; - lblUserData: TLabel; - lblNewUserData: TLabel; - txtUserData: TEdit; - txtNewUserData: TEdit; - btnWriteUserData: TButton; - tabReaderKey: TTabSheet; - pnlReaderKey: TPanel; - chkReaderHex: TCheckBox; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - btnSaveReaderKey: TButton; - lblCardUIDSize: TLabel; - txtReaderType: TEdit; - txtReaderSerial: TEdit; - txtCardType: TEdit; - txtCardUIDSize: TEdit; - txtCardSerial: TEdit; - mnuReaderHardwareFirmwareversionItem: TMenuItem; - procedure FormCreate(Sender: TObject); - procedure btnSaveUserDataClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure chkReaderHexClick(Sender: TObject); - procedure btnSaveKeyIndexClick(Sender: TObject); - procedure mnuBlockReadWriteItemsClick(Sender: TObject); - procedure mnuLinearReadWriteItemsClick(Sender: TObject); - procedure mnuBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockIncrementDecrementItemClick(Sender: TObject); - procedure mnuExitItemClick(Sender: TObject); - procedure mnuValueBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockInSectorIncrDecrItemsClick(Sender: TObject); - procedure mnuSectorTrailerWriteItemClick(Sender: TObject); - procedure mnuViewAlItemsClick(Sender: TObject); - procedure mnuLinearFormatCardItemClick(Sender: TObject); - procedure btnSoftRestartClick(Sender: TObject); - procedure btnReaderResetClick(Sender: TObject); - procedure btnReaderUiSignalClick(Sender: TObject); - procedure TimerTimer(Sender: TObject); - procedure mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); - private - boCONN, - boFunctionStart, - boReaderStart :Boolean; - procedure MainLoop; - procedure OnReaderKeyPress(Sender:TObject;var Key:Char); - procedure OnReaderExit(Sender:TObject); - - procedure SetMenuItems(const aValue:Boolean); //set menu items (enabled ?) - function GetFunctStart: Boolean; - function GetReaderStart: Boolean; - public - bDLCardType:Byte; - procedure SetFunctStart(const Value: Boolean); - procedure SetReaderStart(const Value: Boolean); - property FunctionStart:Boolean read GetFunctStart write SetFunctStart; - property ReaderStart :Boolean read GetReaderStart write SetReaderStart; - end; - -var - frmuFrAdvanced: TfrmuFrAdvanced; - -implementation - -{$R *.dfm} - -procedure TfrmuFrAdvanced.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,33,13,24,pnlReaderKey,'txtReaderKey',false,OnReaderKeyPress,OnReaderExit); - -end; -procedure TfrmuFrAdvanced.OnReaderExit(Sender: TObject); -begin - OnMyExit(Sender,chkReaderHex); -end; - -procedure TfrmuFrAdvanced.OnReaderKeyPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkReaderHex,Key); -end; - -procedure TfrmuFrAdvanced.btnSaveUserDataClick(Sender: TObject); -var - pUserData :PByte; - iFResult :DL_STATUS; -begin - if (txtNewUserData.Text=EmptyStr) then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtNewUserData.SetFocus; - Exit; - end; - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - New(pUserData); - - pUserData:=PByte(txtNewUserData.Text); - iFResult :=WriteUserData(pUserData); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end - else - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end; - finally - pUserData:=nil; - Dispose(pUserData); - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.FormShow(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.chkReaderHexClick(Sender: TObject); -begin - CheckHex(self,5,chkReaderHex,'txtReaderKey'); -end; - -procedure TfrmuFrAdvanced.btnSaveKeyIndexClick(Sender: TObject); -var - bCounter :Byte; - PReaderKey :PByte; - bKeyIndex :Byte; - baReaderKey:array[0..5] of Byte; - s:string; - iFResult :DL_STATUS; -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - bKeyIndex:=cboKeyIndex.ItemIndex; - New(PReaderKey); - for bCounter:=0 to 5 do - begin - if chkReaderHex.Checked then - baReaderKey[bCounter]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text) - else - baReaderKey[bCounter]:=StrToInt(TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text); - end; - PReaderKey:=@baReaderKey; - iFResult :=ReaderKeyWrite(PReaderKey,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbReader,iFResult); - end - else - begin - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbReader,iFResult); - end; - finally - SetFunctStart(false); - PReaderKey:=nil; - Dispose(PReaderKey); - end; -end; - -procedure TfrmuFrAdvanced.mnuBlockReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuBlockInSectorReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockIncrementDecrementItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockIncrDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuExitItemClick(Sender: TObject); -begin - Close; -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorReadWriteItemClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorIncrDecrItemsClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorIncDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuSectorTrailerWriteItemClick(Sender: TObject); -begin - ShowForm(frmSectorTrailerWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuViewAlItemsClick(Sender: TObject); -begin - ShowForm(frmViewAll,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearFormatCardItemClick(Sender: TObject); -begin - ShowForm(frmLinearFormatCard,pnlContainer); -end; - -procedure TfrmuFrAdvanced.btnSoftRestartClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderSoftRestart(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderResetClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderReset(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderUiSignalClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderUISignal(cboLightMode.ItemIndex,cboSoundMode.ItemIndex); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.MainLoop; -var - iRResult, - iCResult, - iReaderType, - iReaderSerial, - iCardSerial, - iUDResult :DL_STATUS; - bCardUIDSize, - bCardType, - bBr :Byte; - caUserData :array[0..16] of Char; - baCardUID :array[0..9] of Byte; - pUserData :PByte; - sBuffer :string; -begin - SetReaderStart(true); - sBuffer:=''; - New(pUserData); - if not boCONN then - begin - iRResult:=ReaderOpen(); - if iRResult=DL_OK then - begin - boCONN:=true; - stbReader.Panels[0].Text:='CONNECTED'; - end - else - begin - stbReader.Panels[0].Text:='NOT CONNECTED'; - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - cboLightMode.ItemIndex:=0; - cboSoundMode.ItemIndex:=0; - SetStatusBar(stbReader,iRResult); - end; - end; - if boCONN then - begin - iRResult:=GetReaderType(iReaderType); - if iRResult=DL_OK then - begin - txtReaderType.Text:='$'+IntToHex(iReaderType,8); - SetStatusBar(stbReader,iRResult); - end - else - begin - boCONN:=false; - ReaderClose(); - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - SetStatusBar(stbReader,iRResult); - end; - - iRResult:=GetReaderSerialNumber(iReaderSerial); - if iRResult=DL_OK then - txtReaderSerial.Text:='$'+IntToHex(iReaderSerial,8); - - iCResult:=GetDlogicCardType(bDLCardType); - if iCResult=DL_OK then - begin - if bDLCardType<=DL_NTAG_216 then - SetMenuItems(false) - else - SetMenuItems(true); - GetCardIdEx(bCardType,baCardUID[0],bCardUIDSize); - for bBr:=0 to bCardUIDSize -1 do - begin - sBuffer:=sBuffer+IntToHex(baCardUID[bBr],2); - end; - txtCardType.Text :='$'+IntToHex(bDLCardType,2); - txtCardUIDSize.Text:='$'+IntToHex(bCardUIDSize,2); - txtCardSerial.Text :='$'+sBuffer; - SetStatusBar(stbCard,iCResult); - end - else - begin - SetMenuItems(true); - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - SetStatusBar(stbCard,iCResult); - end; - - pUserData:=PByte(@caUserData); - iUDResult:=ReadUserData(pUserData); - if iUDResult=DL_OK then - txtUserData.Text:=String(caUserData) - else - txtUserData.Text:=#0; - end; - SetReaderStart(false); - pUserData:=0; - FreeAndNil(pUserData); -end; - -function TfrmuFrAdvanced.GetFunctStart: Boolean; -begin - Result:=boFunctionStart; -end; - -function TfrmuFrAdvanced.GetReaderStart: Boolean; -begin - Result:=boReaderStart; -end; - -procedure TfrmuFrAdvanced.SetFunctStart(const Value: Boolean); -begin - boFunctionStart:=Value; -end; - -procedure TfrmuFrAdvanced.SetReaderStart(const Value: Boolean); -begin - boReaderStart:=Value; -end; - - - - -procedure TfrmuFrAdvanced.TimerTimer(Sender: TObject); -begin - if FunctionStart then Exit; - MainLoop; -end; - -procedure TfrmuFrAdvanced.mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); -var - bRHMajor, - bRHMinor, - bRFMajor, - bRFMinor : Byte; -begin - GetReaderHardwareVersion(bRHMajor,bRHMinor); - GetReaderFirmwareVersion(bRFMajor,bRFMinor); - MessageDlg('Hardware version : ' + IntToStr(bRHMajor) + '.' + IntToStr(bRHMinor) +#13+ - 'Firmware version : ' + IntToStr(bRFMajor) + '.' + IntToStr(bRFMinor),mtInformation,[mbOK],0); - -end; - -procedure TfrmuFrAdvanced.SetMenuItems(const aValue: Boolean); -begin - mnuValueBlockReadWriteItem.Enabled :=aValue; - mnuValueBlockIncrementDecrementItem.Enabled :=aValue; - mnuBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorIncrDecrItems.Enabled :=aValue; - mnuLinearFormatCardItem.Enabled :=aValue; - mnuSectorTrailerWriteItem.Enabled :=aValue; -end; - -end. diff --git a/uFCoderAdvance_D7/uFAdvanced.~ddp b/uFCoderAdvance_D7/uFAdvanced.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/uFAdvanced.~dfm b/uFCoderAdvance_D7/uFAdvanced.~dfm deleted file mode 100644 index b82cc69..0000000 --- a/uFCoderAdvance_D7/uFAdvanced.~dfm +++ /dev/null @@ -1,523 +0,0 @@ -object frmuFrAdvanced: TfrmuFrAdvanced - Left = 331 - Top = 3 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'uFr Advance' - ClientHeight = 668 - ClientWidth = 541 - Color = clWindow - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - KeyPreview = True - Menu = mnuMeni - OldCreateOrder = False - Position = poDesktopCenter - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object stbCard: TStatusBar - Left = 0 - Top = 649 - Width = 541 - Height = 19 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'CARD STATUS' - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlReader: TPanel - Left = 0 - Top = 0 - Width = 541 - Height = 256 - Align = alTop - Ctl3D = True - ParentCtl3D = False - TabOrder = 1 - object lblReaderType: TLabel - Left = 37 - Top = 16 - Width = 73 - Height = 13 - Caption = 'Reader Type' - end - object lblReaderSerial: TLabel - Left = 37 - Top = 40 - Width = 78 - Height = 13 - Caption = 'Reader Serial' - end - object lblCardType: TLabel - Left = 292 - Top = 16 - Width = 60 - Height = 13 - Caption = 'Card Type' - end - object lblCardSerial: TLabel - Left = 293 - Top = 40 - Width = 65 - Height = 13 - Caption = 'Card Serial' - end - object Bevel1: TBevel - Left = 25 - Top = 65 - Width = 504 - Height = 5 - end - object lblLightMode: TLabel - Left = 41 - Top = 82 - Width = 61 - Height = 13 - Caption = 'Light Mode' - end - object lblSoundMode: TLabel - Left = 41 - Top = 105 - Width = 70 - Height = 13 - Caption = 'Sound Mode' - end - object lblCardUIDSize: TLabel - Left = 421 - Top = 17 - Width = 50 - Height = 13 - Caption = 'UID Size' - end - object stbReader: TStatusBar - Left = 1 - Top = 234 - Width = 539 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object cboLightMode: TComboBox - Left = 133 - Top = 78 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 1 - Text = 'None' - Items.Strings = ( - 'None' - 'Long Green' - 'LongRed' - 'Alternation' - 'Flash') - end - object cboSoundMode: TComboBox - Left = 133 - Top = 102 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 2 - Text = 'None' - Items.Strings = ( - 'None' - 'Short' - 'Long' - 'Double Short' - 'Tripple Short' - 'Tripplet Melody') - end - object btnReaderUiSignal: TButton - Left = 276 - Top = 79 - Width = 110 - Height = 44 - Cursor = crHandPoint - Caption = 'Reader Ui Signal' - TabOrder = 3 - OnClick = btnReaderUiSignalClick - end - object btnSoftRestart: TButton - Left = 392 - Top = 77 - Width = 125 - Height = 23 - Cursor = crHandPoint - Caption = 'Soft Restart' - TabOrder = 4 - OnClick = btnSoftRestartClick - end - object btnReaderReset: TButton - Left = 392 - Top = 101 - Width = 125 - Height = 23 - Caption = 'Reader Reset' - TabOrder = 5 - OnClick = btnReaderResetClick - end - object pgReaderKeyUserData: TPageControl - Left = 39 - Top = 131 - Width = 481 - Height = 97 - ActivePage = tabReaderKey - TabOrder = 6 - object tabReaderKey: TTabSheet - Caption = 'Reader Key' - object pnlReaderKey: TPanel - Left = 2 - Top = 0 - Width = 470 - Height = 67 - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 260 - Top = 48 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object chkReaderHex: TCheckBox - Left = 26 - Top = 38 - Width = 54 - Height = 15 - Caption = 'Hex' - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - OnClick = chkReaderHexClick - end - object cboKeyIndex: TComboBox - Left = 272 - Top = 13 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object btnSaveReaderKey: TButton - Left = 332 - Top = 12 - Width = 125 - Height = 33 - Caption = 'Save ' - TabOrder = 2 - OnClick = btnSaveKeyIndexClick - end - end - end - object tabUserData: TTabSheet - Caption = 'User Data' - ImageIndex = 1 - object lblUserData: TLabel - Left = 9 - Top = 16 - Width = 57 - Height = 13 - Caption = 'User Data' - end - object lblNewUserData: TLabel - Left = 202 - Top = 16 - Width = 85 - Height = 13 - Caption = 'New User Data' - end - object txtUserData: TEdit - Left = 10 - Top = 32 - Width = 183 - Height = 21 - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 0 - end - object txtNewUserData: TEdit - Left = 203 - Top = 32 - Width = 174 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object btnWriteUserData: TButton - Left = 387 - Top = 21 - Width = 81 - Height = 32 - Cursor = crHandPoint - Caption = 'Save' - TabOrder = 2 - OnClick = btnSaveUserDataClick - end - end - end - object txtReaderType: TEdit - Left = 126 - Top = 15 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 7 - end - object txtReaderSerial: TEdit - Left = 126 - Top = 39 - Width = 100 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 8 - end - object txtCardType: TEdit - Left = 369 - Top = 14 - Width = 33 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 9 - end - object txtCardUIDSize: TEdit - Left = 480 - Top = 14 - Width = 33 - Height = 19 - Hint = 'Card UID Size' - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ParentShowHint = False - ReadOnly = True - ShowHint = False - TabOrder = 10 - end - object txtCardSerial: TEdit - Left = 369 - Top = 38 - Width = 144 - Height = 19 - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 11 - end - end - object pnlContainer: TPanel - Left = 0 - Top = 256 - Width = 541 - Height = 393 - Align = alClient - TabOrder = 2 - end - object mnuMeni: TMainMenu - Left = 480 - Top = 616 - object mnuFunctionsItem: TMenuItem - Caption = 'Functions' - object mnuLinearReadWriteItems: TMenuItem - Caption = 'Linear Read/Write' - OnClick = mnuLinearReadWriteItemsClick - end - object SEP1: TMenuItem - Caption = '-' - end - object mnuBlockReadWriteItems: TMenuItem - Caption = 'Block Read/Write' - OnClick = mnuBlockReadWriteItemsClick - end - object mnuBlockInSectorReadWriteItem: TMenuItem - Caption = 'BlockInSector Read/Write' - OnClick = mnuBlockInSectorReadWriteItemClick - end - object SEP2: TMenuItem - Caption = '-' - end - object mnuValueBlockReadWriteItem: TMenuItem - Caption = 'ValueBlock Read/Write' - OnClick = mnuValueBlockReadWriteItemClick - end - object mnuValueBlockIncrementDecrementItem: TMenuItem - Caption = 'ValueBlock Increment/Decrement' - OnClick = mnuValueBlockIncrementDecrementItemClick - end - object SEP3: TMenuItem - Caption = '-' - end - object mnuValueBlockInSectorReadWriteItem: TMenuItem - Caption = 'ValueBlockInSector Read/Write' - OnClick = mnuValueBlockInSectorReadWriteItemClick - end - object mnuValueBlockInSectorIncrDecrItems: TMenuItem - Caption = 'ValueBlockInSector Increment/Decrement' - OnClick = mnuValueBlockInSectorIncrDecrItemsClick - end - object SEP4: TMenuItem - Caption = '-' - end - object mnuSectorTrailerWriteItem: TMenuItem - Caption = 'SectorTrailer Write' - OnClick = mnuSectorTrailerWriteItemClick - end - object mnuLinearFormatCardItem: TMenuItem - Caption = 'LinearFormat Card' - OnClick = mnuLinearFormatCardItemClick - end - object SEP5: TMenuItem - Caption = '-' - end - object mnuReaderHardwareFirmwareversionItem: TMenuItem - Caption = 'Reader Hardware/Firmware version' - OnClick = mnuReaderHardwareFirmwareversionItemClick - end - object mnuExitItem: TMenuItem - Caption = 'Exit' - ShortCut = 16465 - OnClick = mnuExitItemClick - end - end - object mnuViewAlItems: TMenuItem - Caption = 'View All' - OnClick = mnuViewAlItemsClick - end - end - object Timer: TTimer - Interval = 500 - OnTimer = TimerTimer - Left = 480 - Top = 584 - end -end diff --git a/uFCoderAdvance_D7/uFAdvanced.~pas b/uFCoderAdvance_D7/uFAdvanced.~pas deleted file mode 100644 index 93adf92..0000000 --- a/uFCoderAdvance_D7/uFAdvanced.~pas +++ /dev/null @@ -1,476 +0,0 @@ - -unit uFAdvanced; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus,ComCtrls, StdCtrls, ExtCtrls, - uFCoder1x, - Global, - LinearReadWrite, - BlockReadWrite, - BlockInSector, - ValueBlock, - ValueBlockIncDec, - ValueBlockInSector, - ValueBlockInSectorIncrDecr, - SectorTrailersWrite, - LinearFormatsCard, - ViewAll; - - -type - TfrmuFrAdvanced = class(TForm) - stbCard: TStatusBar; - mnuMeni: TMainMenu; - mnuFunctionsItem: TMenuItem; - mnuLinearReadWriteItems: TMenuItem; - pnlReader: TPanel; - lblReaderType: TLabel; - lblReaderSerial: TLabel; - lblCardType: TLabel; - lblCardSerial: TLabel; - Bevel1: TBevel; - Timer: TTimer; - stbReader: TStatusBar; - lblLightMode: TLabel; - cboLightMode: TComboBox; - lblSoundMode: TLabel; - cboSoundMode: TComboBox; - btnReaderUiSignal: TButton; - btnSoftRestart: TButton; - btnReaderReset: TButton; - pnlContainer: TPanel; - SEP1: TMenuItem; - mnuBlockReadWriteItems: TMenuItem; - mnuBlockInSectorReadWriteItem: TMenuItem; - SEP2: TMenuItem; - mnuValueBlockReadWriteItem: TMenuItem; - mnuValueBlockIncrementDecrementItem: TMenuItem; - SEP3: TMenuItem; - mnuExitItem: TMenuItem; - SEP4: TMenuItem; - mnuValueBlockInSectorReadWriteItem: TMenuItem; - mnuValueBlockInSectorIncrDecrItems: TMenuItem; - mnuSectorTrailerWriteItem: TMenuItem; - SEP5: TMenuItem; - mnuViewAlItems: TMenuItem; - mnuLinearFormatCardItem: TMenuItem; - pgReaderKeyUserData: TPageControl; - tabUserData: TTabSheet; - lblUserData: TLabel; - lblNewUserData: TLabel; - txtUserData: TEdit; - txtNewUserData: TEdit; - btnWriteUserData: TButton; - tabReaderKey: TTabSheet; - pnlReaderKey: TPanel; - chkReaderHex: TCheckBox; - cboKeyIndex: TComboBox; - lblKeyIndex: TLabel; - btnSaveReaderKey: TButton; - lblCardUIDSize: TLabel; - txtReaderType: TEdit; - txtReaderSerial: TEdit; - txtCardType: TEdit; - txtCardUIDSize: TEdit; - txtCardSerial: TEdit; - mnuReaderHardwareFirmwareversionItem: TMenuItem; - procedure FormCreate(Sender: TObject); - procedure btnSaveUserDataClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure chkReaderHexClick(Sender: TObject); - procedure btnSaveKeyIndexClick(Sender: TObject); - procedure mnuBlockReadWriteItemsClick(Sender: TObject); - procedure mnuLinearReadWriteItemsClick(Sender: TObject); - procedure mnuBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockIncrementDecrementItemClick(Sender: TObject); - procedure mnuExitItemClick(Sender: TObject); - procedure mnuValueBlockInSectorReadWriteItemClick(Sender: TObject); - procedure mnuValueBlockInSectorIncrDecrItemsClick(Sender: TObject); - procedure mnuSectorTrailerWriteItemClick(Sender: TObject); - procedure mnuViewAlItemsClick(Sender: TObject); - procedure mnuLinearFormatCardItemClick(Sender: TObject); - procedure btnSoftRestartClick(Sender: TObject); - procedure btnReaderResetClick(Sender: TObject); - procedure btnReaderUiSignalClick(Sender: TObject); - procedure TimerTimer(Sender: TObject); - procedure mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); - private - boCONN, - boFunctionStart, - boReaderStart :Boolean; - procedure MainLoop; - procedure OnReaderKeyPress(Sender:TObject;var Key:Char); - procedure OnReaderExit(Sender:TObject); - - procedure SetMenuItems(const aValue:Boolean); //set menu items (enabled ?) - function GetFunctStart: Boolean; - function GetReaderStart: Boolean; - public - bDLCardType:Byte; - procedure SetFunctStart(const Value: Boolean); - procedure SetReaderStart(const Value: Boolean); - property FunctionStart:Boolean read GetFunctStart write SetFunctStart; - property ReaderStart :Boolean read GetReaderStart write SetReaderStart; - end; - -var - frmuFrAdvanced: TfrmuFrAdvanced; - -implementation - -{$R *.dfm} - -procedure TfrmuFrAdvanced.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,33,13,24,pnlReaderKey,'txtReaderKey',false,OnReaderKeyPress,OnReaderExit); - -end; -procedure TfrmuFrAdvanced.OnReaderExit(Sender: TObject); -begin - OnMyExit(Sender,chkReaderHex); -end; - -procedure TfrmuFrAdvanced.OnReaderKeyPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkReaderHex,Key); -end; - -procedure TfrmuFrAdvanced.btnSaveUserDataClick(Sender: TObject); -var - pUserData :PByte; - iFResult :DL_STATUS; -begin - if (txtNewUserData.Text=EmptyStr) then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtNewUserData.SetFocus; - Exit; - end; - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - New(pUserData); - - pUserData:=PByte(txtNewUserData.Text); - iFResult :=WriteUserData(pUserData); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end - else - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - end; - finally - pUserData:=nil; - Dispose(pUserData); - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.FormShow(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.chkReaderHexClick(Sender: TObject); -begin - CheckHex(self,5,chkReaderHex,'txtReaderKey'); -end; - -procedure TfrmuFrAdvanced.btnSaveKeyIndexClick(Sender: TObject); -var - bCounter :Byte; - PReaderKey :PByte; - bKeyIndex :Byte; - baReaderKey:array[0..5] of Byte; - s:string; - iFResult :DL_STATUS; -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - bKeyIndex:=cboKeyIndex.ItemIndex; - New(PReaderKey); - for bCounter:=0 to 5 do - begin - if chkReaderHex.Checked then - baReaderKey[bCounter]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text) - else - baReaderKey[bCounter]:=StrToInt(TEdit(FindComponent('txtReaderKey'+IntToStr(bCounter+1))).Text); - end; - PReaderKey:=@baReaderKey; - iFResult :=ReaderKeyWrite(PReaderKey,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbReader,iFResult); - end - else - begin - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbReader,iFResult); - end; - finally - SetFunctStart(false); - PReaderKey:=nil; - Dispose(PReaderKey); - end; -end; - -procedure TfrmuFrAdvanced.mnuBlockReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearReadWriteItemsClick(Sender: TObject); -begin - ShowForm(frmLinearReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuBlockInSectorReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockReadWriteItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockIncrementDecrementItemClick(Sender: TObject); -begin - ShowForm(frmValueBlockIncrDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuExitItemClick(Sender: TObject); -begin - Close; -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorReadWriteItemClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorReadWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuValueBlockInSectorIncrDecrItemsClick( - Sender: TObject); -begin - ShowForm(frmValueBlockInSectorIncDecr,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuSectorTrailerWriteItemClick(Sender: TObject); -begin - ShowForm(frmSectorTrailerWrite,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuViewAlItemsClick(Sender: TObject); -begin - ShowForm(frmViewAll,pnlContainer); -end; - -procedure TfrmuFrAdvanced.mnuLinearFormatCardItemClick(Sender: TObject); -begin - ShowForm(frmLinearFormatCard,pnlContainer); -end; - -procedure TfrmuFrAdvanced.btnSoftRestartClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderSoftRestart(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderResetClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderReset(); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.btnReaderUiSignalClick(Sender: TObject); -begin - if FunctionStart or ReaderStart then Exit; - try - SetFunctStart(true); - ReaderUISignal(cboLightMode.ItemIndex,cboSoundMode.ItemIndex); - finally - SetFunctStart(false); - end; -end; - -procedure TfrmuFrAdvanced.MainLoop; -var - iRResult, - iCResult, - iReaderType, - iReaderSerial, - iCardSerial, - iUDResult :DL_STATUS; - bCardUIDSize, - bCardType, - bBr :Byte; - caUserData :array[0..16] of Char; - baCardUID :array[0..9] of Byte; - pUserData :PByte; - sBuffer :string; -begin - SetReaderStart(true); - sBuffer:=''; - New(pUserData); - if not boCONN then - begin - iRResult:=ReaderOpen(); - if iRResult=DL_OK then - begin - boCONN:=true; - stbReader.Panels[0].Text:='CONNECTED'; - end - else - begin - stbReader.Panels[0].Text:='NOT CONNECTED'; - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - cboLightMode.ItemIndex:=0; - cboSoundMode.ItemIndex:=0; - SetStatusBar(stbReader,iRResult); - end; - end; - if boCONN then - begin - iRResult:=GetReaderType(iReaderType); - if iRResult=DL_OK then - begin - txtReaderType.Text:='$'+IntToHex(iReaderType,8); - SetStatusBar(stbReader,iRResult); - end - else - begin - boCONN:=false; - ReaderClose(); - txtReaderType .Clear; - txtReaderSerial.Clear; - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - txtUserData .Clear; - txtNewUserData .Clear; - SetStatusBar(stbReader,iRResult); - end; - - iRResult:=GetReaderSerialNumber(iReaderSerial); - if iRResult=DL_OK then - txtReaderSerial.Text:='$'+IntToHex(iReaderSerial,8); - - iCResult:=GetDlogicCardType(bDLCardType); - if iCResult=DL_OK then - begin - if bDLCardType<=uFCoder1x.DL_NTAG_216 then - SetMenuItems(false) - else - SetMenuItems(true); - GetCardIdEx(bCardType,baCardUID[0],bCardUIDSize); - for bBr:=0 to bCardUIDSize -1 do - begin - sBuffer:=sBuffer+IntToHex(baCardUID[bBr],2); - end; - txtCardType.Text :='$'+IntToHex(bDLCardType,2); - txtCardUIDSize.Text:='$'+IntToHex(bCardUIDSize,2); - txtCardSerial.Text :='$'+sBuffer; - SetStatusBar(stbCard,iCResult); - end - else - begin - SetMenuItems(true); - txtCardType .Clear; - txtCardSerial .Clear; - txtCardUIDSize .Clear; - SetStatusBar(stbCard,iCResult); - end; - - pUserData:=PByte(@caUserData); - iUDResult:=ReadUserData(pUserData); - if iUDResult=DL_OK then - txtUserData.Text:=String(caUserData) - else - txtUserData.Text:=#0; - end; - SetReaderStart(false); - pUserData:=0; - FreeAndNil(pUserData); -end; - -function TfrmuFrAdvanced.GetFunctStart: Boolean; -begin - Result:=boFunctionStart; -end; - -function TfrmuFrAdvanced.GetReaderStart: Boolean; -begin - Result:=boReaderStart; -end; - -procedure TfrmuFrAdvanced.SetFunctStart(const Value: Boolean); -begin - boFunctionStart:=Value; -end; - -procedure TfrmuFrAdvanced.SetReaderStart(const Value: Boolean); -begin - boReaderStart:=Value; -end; - - - - -procedure TfrmuFrAdvanced.TimerTimer(Sender: TObject); -begin - if FunctionStart then Exit; - MainLoop; -end; - -procedure TfrmuFrAdvanced.mnuReaderHardwareFirmwareversionItemClick(Sender: TObject); -var - bRHMajor, - bRHMinor, - bRFMajor, - bRFMinor : Byte; -begin - GetReaderHardwareVersion(bRHMajor,bRHMinor); - GetReaderFirmwareVersion(bRFMajor,bRFMinor); - MessageDlg('Hardware version : ' + IntToStr(bRHMajor) + '.' + IntToStr(bRHMinor) +#13+ - 'Firmware version : ' + IntToStr(bRFMajor) + '.' + IntToStr(bRFMinor),mtInformation,[mbOK],0); - -end; - -procedure TfrmuFrAdvanced.SetMenuItems(const aValue: Boolean); -begin - mnuValueBlockReadWriteItem.Enabled :=aValue; - mnuValueBlockIncrementDecrementItem.Enabled :=aValue; - mnuBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorReadWriteItem.Enabled :=aValue; - mnuValueBlockInSectorIncrDecrItems.Enabled :=aValue; - mnuLinearFormatCardItem.Enabled :=aValue; - mnuSectorTrailerWriteItem.Enabled :=aValue; -end; - -end. diff --git a/uFCoderAdvance_D7/uFCoder-x86.dll b/uFCoderAdvance_D7/uFCoder-x86.dll deleted file mode 100644 index 9cfd3557545a2f76eef924dfb23b28ea473a9a42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226304 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 diff --git a/uFCoderAdvance_D7/uFCoder.pas b/uFCoderAdvance_D7/uFCoder.pas deleted file mode 100644 index 671d6a3..0000000 --- a/uFCoderAdvance_D7/uFCoder.pas +++ /dev/null @@ -1,640 +0,0 @@ -unit uFCoder; - -interface - -const DLL_NAME ='uFCoder-x86.dll'; -const - MIFARE_AUTHENT1A = $60; - MIFARE_AUTHENT1B = $61; - DL_OK = 0; -type - DL_STATUS = LongInt; - -//DLOGIC CARD TYPE -const DL_MIFARE_ULTRALIGHT = $01; -const DL_MIFARE_ULTRALIGHT_EV1_11 = $02; -const DL_MIFARE_ULTRALIGHT_EV1_21 = $03; -const DL_MIFARE_ULTRALIGHT_C = $04; -const DL_NTAG_203 = $05; -const DL_NTAG_210 = $06; -const DL_NTAG_212 = $07; -const DL_NTAG_213 = $08; -const DL_NTAG_215 = $09; -const DL_NTAG_216 = $0A; - -const DL_MIFARE_MINI = $20; -const DL_MIFARE_CLASSIC_1K = $21; -const DL_MIFARE_CLASSIC_4K = $22; -const DL_MIFARE_PLUS_S_2K = $23; -const DL_MIFARE_PLUS_S_4K = $24; -const DL_MIFARE_PLUS_X_2K = $25; -const DL_MIFARE_PLUS_X_4K = $26; -const DL_MIFARE_DESFIRE = $27; -const DL_MIFARE_DESFIRE_EV1_2K = $28; -const DL_MIFARE_DESFIRE_EV1_4K = $29; -const DL_MIFARE_DESFIRE_EV1_8K = $2A; - - - -function ReaderOpen: DL_STATUS stdcall; - -function ReaderReset: DL_STATUS stdcall; - -function ReaderClose: DL_STATUS stdcall; - -function ReaderSoftRestart: DL_STATUS stdcall; - -function GetReaderType(var lpulReaderType: LongInt): DL_STATUS stdcall; - -function GetReaderSerialNumber(var lpulSerialNumber: LongInt): DL_STATUS stdcall ; - -function ReaderUISignal(light_signal_mode: Byte;beep_signal_mode: Byte): DL_STATUS stdcall; - -function GetCardId(var lpucCardType: Byte;var lpulCardSerial: LongInt): DL_STATUS stdcall; - -function GetCardIdEx(var bCardType : Byte; - var bCardUID : Byte; - var bCardUIDSize : Byte): DL_STATUS stdcall; - -function GetDlogicCardType(var pCardType:Byte):DL_STATUS stdcall; - -function LinearRead(aucData:PByte; - usLinearAddress: Word; - usDataLength: Word; - var lpusBytesReturned: Word; - ucKeyMode: Byte; - ucReaderKeyIndex: Byte): DL_STATUS stdcall; - - -function LinearWrite(const aucData:PByte; - usLinearAddress: Word; - usDataLength: Word; - var lpusBytesWritten: Word; - ucKeyMode: Byte; - ucReaderKeyIndex: Byte): DL_STATUS stdcall; - -function LinearFormatCard(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var SectorsFormatted:Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - -function ReaderKeysLock(const bPassword:PByte):DL_STATUS stdcall; -function ReaderKeysUnlock(const bPassword:PByte):DL_STATUS stdcall; - - -function ReaderKeyWrite(const aucKey:PByte;ucKeyIndex: Byte): DL_STATUS stdcall; - -function ReadUserData(aucData:PByte): DL_STATUS stdcall; - -function WriteUserData(const aucData: PByte): DL_STATUS stdcall; - - - -function BlockRead(data:PByte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockWrite(const data: PByte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockInSectorRead(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockInSectorWrite(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function SectorTrailerWrite(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B: PByte; - auth_mode:Byte; - key_index:Byte): DL_STATUS stdcall; - -function SectorTrailerWriteUnsafe(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockRead(value:PLongint; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead(value:PLongint; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockWrite(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite(value: LongInt; - value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockIncrement(increment_value: LongInt; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function ValueBlockDecrement(decrement_value:LongInt; - block_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall ; - - -function ValueBlockInSectorDecrement(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - key_index: Byte): DL_STATUS stdcall; - - -function BlockRead_AKM1(data:PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockWrite_AKM1(const data: PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockInSectorRead_AKM1(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockInSectorWrite_AKM1(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearRead_AKM1(data:PByte; - linear_address: Word; - length: Word; - var bytes_returned: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearWrite_AKM1(const data: PByte; - linear_address: Word; - length: Word; - var bytes_written: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearFormatCard_AKM1(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var sector_formatted:Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function SectorTrailerWrite_AKM1(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B: PByte; - auth_mode:Byte): DL_STATUS stdcall; - -function SectorTrailerWriteUnsafe_AKM1(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockRead_AKM1(value: PLongInt; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead_AKM1(value:PLongInt; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockWrite_AKM1(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite_AKM1(value: LongInt; - value_addr: Byte; - sector_address: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockIncrement_AKM1(increment_value: LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement_AKM1(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockDecrement_AKM1(decrement_value: LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorDecrement_AKM1(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockRead_AKM2(data:PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockWrite_AKM2(const data: PByte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockInSectorRead_AKM2(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall ; - - -function BlockInSectorWrite_AKM2(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearRead_AKM2(data: PByte; - linear_address: Word; - length: Word; - var bytes_returned: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearWrite_AKM2(const data: PByte; - linear_address: Word; - length: Word; - var bytes_written: Word; - auth_mode: Byte): DL_STATUS stdcall; - - -function LinearFormatCard_AKM2(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var sector_formatted:Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function SectorTrailerWrite_AKM2(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B: PByte; - auth_mode:Byte): DL_STATUS stdcall ; - -function SectorTrailerWriteUnsafe_AKM2(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockRead_AKM2(value: pLongInt; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead_AKM2(value:PLongInt; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockWrite_AKM2(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite_AKM2(value: LongInt; - value_addr: Byte; - sector_address: Byte; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockIncrement_AKM2(increment_value:LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement_AKM2(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockDecrement_AKM2(decrement_value:LongInt; - block_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function ValueBlockInSectorDecrement_AKM2(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte): DL_STATUS stdcall; - - -function BlockRead_PK(data:PByte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function BlockWrite_PK(const data: PByte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function BlockInSectorRead_PK(data:PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function BlockInSectorWrite_PK(const data: PByte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function LinearRead_PK(data:PByte; - linear_address: Word; - length: Word; - var bytes_returned: Word; - auth_mode: Byte; - const key:PByte): DL_STATUS stdcall; - - -function LinearWrite_PK(const data: PByte; - linear_address: Word; - length: Word; - var bytes_written: Word; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function LinearFormatCard_PK(const new_key_A: PByte; - blocks_access_bits: Byte; - sector_trailers_access_bits: Byte; - sector_trailers_byte9: Byte; - const new_key_B: PByte; - var sector_formatted:Byte; - auth_mode: Byte; - const key:PByte): DL_STATUS stdcall; - -function SectorTrailerWrite_PK(addressing_mode: Byte; - address: Byte; - const new_key_A: PByte; - block0_access_bits: Byte; - block1_access_bits: Byte; - block2_access_bits: Byte; - sector_trailer_access_bits: Byte; - sector_trailer_byte9:Byte; - const new_key_B:PByte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - -function SectorTrailerWriteUnsafe_PK(addressing_mode: Byte; - address: Byte; - const sector_trailer: PByte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockRead_PK(value:PLongInt; - var value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorRead_PK(value: PLongInt; - var value_addr: Byte; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockWrite_PK(value: LongInt; - value_addr: Byte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorWrite_PK(value:LongInt; - value_addr: Byte; - sector_address: Byte; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockIncrement_PK(increment_value:LongInt; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorIncrement_PK(increment_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockDecrement_PK(decrement_value:LongInt; - block_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - - -function ValueBlockInSectorDecrement_PK(decrement_value: LongInt; - sector_address: Byte; - block_in_sector_address: Byte; - auth_mode: Byte; - const key: PByte): DL_STATUS stdcall; - -function GetReaderHardwareVersion(var bMajor:Byte; - var bMinor:Byte):DL_STATUS stdcall; - -function GetReaderFirmwareVersion(var bMajor:Byte; - var bMinor:Byte):DL_STATUS stdcall; - - - -implementation - -function ReaderOpen; external DLL_NAME; -function ReaderReset; external DLL_NAME; -function ReaderClose; external DLL_NAME; -function ReaderSoftRestart; external DLL_NAME; -function GetReaderType; external DLL_NAME; -function GetReaderSerialNumber; external DLL_NAME; -function ReaderKeyWrite; external DLL_NAME; -function ReaderUISignal; external DLL_NAME; -function ReadUserData; external DLL_NAME; -function WriteUserData; external DLL_NAME; -function GetCardId; external DLL_NAME; -function GetCardIdEx; external DLL_NAME; -function GetDlogicCardType; external DLL_NAME; -function ReaderKeysLock; external DLL_NAME; -function ReaderKeysUnlock; external DLL_NAME; -function BlockRead; external DLL_NAME; -function BlockWrite; external DLL_NAME; -function BlockInSectorRead; external DLL_NAME; -function BlockInSectorWrite; external DLL_NAME; -function LinearRead; external DLL_NAME; -function LinearWrite; external DLL_NAME; -function LinearFormatCard; external DLL_NAME; -function SectorTrailerWrite; external DLL_NAME; -function SectorTrailerWriteUnsafe; external DLL_NAME; -function ValueBlockRead; external DLL_NAME; -function ValueBlockInSectorRead; external DLL_NAME; -function ValueBlockWrite; external DLL_NAME; -function ValueBlockInSectorWrite; external DLL_NAME; -function ValueBlockIncrement; external DLL_NAME; -function ValueBlockInSectorIncrement; external DLL_NAME; -function ValueBlockDecrement; external DLL_NAME; -function ValueBlockInSectorDecrement; external DLL_NAME; -function BlockRead_AKM1; external DLL_NAME; -function BlockWrite_AKM1; external DLL_NAME; -function BlockInSectorRead_AKM1; external DLL_NAME; -function BlockInSectorWrite_AKM1; external DLL_NAME; -function LinearRead_AKM1; external DLL_NAME; -function LinearWrite_AKM1; external DLL_NAME; -function LinearFormatCard_AKM1; external DLL_NAME; -function SectorTrailerWrite_AKM1; external DLL_NAME; -function SectorTrailerWriteUnsafe_AKM1; external DLL_NAME; -function ValueBlockRead_AKM1; external DLL_NAME; -function ValueBlockInSectorRead_AKM1; external DLL_NAME; -function ValueBlockWrite_AKM1; external DLL_NAME; -function ValueBlockInSectorWrite_AKM1; external DLL_NAME; -function ValueBlockIncrement_AKM1; external DLL_NAME; -function ValueBlockInSectorIncrement_AKM1; external DLL_NAME; -function ValueBlockDecrement_AKM1; external DLL_NAME; -function ValueBlockInSectorDecrement_AKM1; external DLL_NAME; -function BlockRead_AKM2; external DLL_NAME; -function BlockWrite_AKM2; external DLL_NAME; -function BlockInSectorRead_AKM2; external DLL_NAME; -function BlockInSectorWrite_AKM2; external DLL_NAME; -function LinearRead_AKM2; external DLL_NAME; -function LinearWrite_AKM2; external DLL_NAME; -function LinearFormatCard_AKM2; external DLL_NAME; -function SectorTrailerWrite_AKM2; external DLL_NAME; -function SectorTrailerWriteUnsafe_AKM2; external DLL_NAME; -function ValueBlockRead_AKM2; external DLL_NAME; -function ValueBlockInSectorRead_AKM2; external DLL_NAME; -function ValueBlockWrite_AKM2; external DLL_NAME; -function ValueBlockInSectorWrite_AKM2; external DLL_NAME; -function ValueBlockIncrement_AKM2; external DLL_NAME; -function ValueBlockInSectorIncrement_AKM2; external DLL_NAME; -function ValueBlockDecrement_AKM2; external DLL_NAME; -function ValueBlockInSectorDecrement_AKM2; external DLL_NAME; -function BlockRead_PK; external DLL_NAME; -function BlockWrite_PK; external DLL_NAME; -function BlockInSectorRead_PK; external DLL_NAME; -function BlockInSectorWrite_PK; external DLL_NAME; -function LinearRead_PK; external DLL_NAME; -function LinearWrite_PK; external DLL_NAME; -function LinearFormatCard_PK; external DLL_NAME; -function SectorTrailerWrite_PK; external DLL_NAME; -function SectorTrailerWriteUnsafe_PK; external DLL_NAME; -function ValueBlockRead_PK; external DLL_NAME; -function ValueBlockInSectorRead_PK; external DLL_NAME; -function ValueBlockWrite_PK; external DLL_NAME; -function ValueBlockInSectorWrite_PK; external DLL_NAME; -function ValueBlockIncrement_PK; external DLL_NAME; -function ValueBlockInSectorIncrement_PK; external DLL_NAME; -function ValueBlockDecrement_PK; external DLL_NAME; -function ValueBlockInSectorDecrement_PK; external DLL_NAME; -function GetReaderHardwareVersion; external DLL_NAME; -function GetReaderFirmwareVersion; external DLL_NAME; - - -end. \ No newline at end of file diff --git a/uFCoderAdvance_D7/uFCoder_coff.lib b/uFCoderAdvance_D7/uFCoder_coff.lib deleted file mode 100644 index a19ca838a13f2d8c2d119af07b0f3d669bc709ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244806 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 b;Y;G+U2*s}wblEsI8z}rtCl%R=cxY=cB>V4 diff --git a/uFCoderAdvance_D7/uFCoder_omf.lib b/uFCoderAdvance_D7/uFCoder_omf.lib deleted file mode 100644 index 9e6fdd316db9d4c106b9b8e16093f6ac79813d76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48640 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_D7/uFrAdvanced.dfm b/uFCoderAdvance_D7/uFrAdvanced.dfm deleted file mode 100644 index fe9b064..0000000 --- a/uFCoderAdvance_D7/uFrAdvanced.dfm +++ /dev/null @@ -1,501 +0,0 @@ -object frmuFrAdvanced: TfrmuFrAdvanced - Left = 423 - Top = 15 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'uFr Advanced' - ClientHeight = 668 - ClientWidth = 529 - Color = clWindow - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - KeyPreview = True - Menu = mnuMeni - OldCreateOrder = False - Position = poScreenCenter - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object stbCard: TStatusBar - Left = 0 - Top = 649 - Width = 529 - Height = 19 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'CARD STATUS' - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlReader: TPanel - Left = 0 - Top = 0 - Width = 529 - Height = 256 - Align = alTop - Ctl3D = True - ParentCtl3D = False - TabOrder = 1 - object lblReaderType: TLabel - Left = 24 - Top = 16 - Width = 73 - Height = 13 - Caption = 'Reader Type' - end - object lblReaderSerial: TLabel - Left = 24 - Top = 40 - Width = 78 - Height = 13 - Caption = 'Reader Serial' - end - object lblCardType: TLabel - Left = 277 - Top = 16 - Width = 60 - Height = 13 - Caption = 'Card Type' - end - object lblCardSerial: TLabel - Left = 277 - Top = 40 - Width = 65 - Height = 13 - Caption = 'Card Serial' - end - object Bevel1: TBevel - Left = 25 - Top = 65 - Width = 478 - Height = 5 - end - object lblLightMode: TLabel - Left = 25 - Top = 83 - Width = 61 - Height = 13 - Caption = 'Light Mode' - end - object lblSoundMode: TLabel - Left = 25 - Top = 106 - Width = 70 - Height = 13 - Caption = 'Sound Mode' - end - object txtReaderType: TStaticText - Left = 116 - Top = 15 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtReaderSerial: TStaticText - Left = 116 - Top = 39 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object txtCardType: TStaticText - Left = 365 - Top = 15 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 2 - end - object txtCardSerial: TStaticText - Left = 365 - Top = 39 - Width = 137 - Height = 19 - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSunken - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object stbReader: TStatusBar - Left = 1 - Top = 234 - Width = 527 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Width = 110 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object cboLightMode: TComboBox - Left = 117 - Top = 79 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 5 - Text = 'None' - Items.Strings = ( - 'None' - 'Long Green' - 'LongRed' - 'Alternation' - 'Flash') - end - object cboSoundMode: TComboBox - Left = 117 - Top = 103 - Width = 137 - Height = 21 - ItemHeight = 13 - ItemIndex = 0 - TabOrder = 6 - Text = 'None' - Items.Strings = ( - 'None' - 'Short' - 'Long' - 'Double Short' - 'Tripple Short' - 'Tripplet Melody') - end - object btnReaderUiSignal: TButton - Left = 260 - Top = 80 - Width = 110 - Height = 44 - Cursor = crHandPoint - Caption = 'Reader Ui Signal' - TabOrder = 7 - OnClick = btnReaderUiSignalClick - end - object btnSoftRestart: TButton - Left = 376 - Top = 78 - Width = 125 - Height = 23 - Cursor = crHandPoint - Caption = 'Soft Restart' - TabOrder = 8 - OnClick = btnSoftRestartClick - end - object btnReaderReset: TButton - Left = 376 - Top = 102 - Width = 125 - Height = 23 - Caption = 'Reader Reset' - TabOrder = 9 - OnClick = btnReaderResetClick - end - object pgReaderKeyUserData: TPageControl - Left = 24 - Top = 131 - Width = 481 - Height = 97 - ActivePage = tabReaderKey - TabOrder = 10 - object tabReaderKey: TTabSheet - Caption = 'Reader Key' - object pnlReaderKey: TPanel - Left = 2 - Top = 0 - Width = 470 - Height = 67 - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 260 - Top = 48 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object chkReaderHex: TCheckBox - Left = 26 - Top = 38 - Width = 54 - Height = 15 - Caption = 'Hex' - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - OnClick = chkReaderHexClick - end - object cboKeyIndex: TComboBox - Left = 272 - Top = 13 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - object btnSaveReaderKey: TButton - Left = 332 - Top = 12 - Width = 125 - Height = 33 - Caption = 'Save ' - TabOrder = 2 - OnClick = btnSaveKeyIndexClick - end - end - end - object tabUserData: TTabSheet - Caption = 'User Data' - ImageIndex = 1 - object lblUserData: TLabel - Left = 9 - Top = 16 - Width = 57 - Height = 13 - Caption = 'User Data' - end - object lblNewUserData: TLabel - Left = 202 - Top = 16 - Width = 85 - Height = 13 - Caption = 'New User Data' - end - object txtUserData: TEdit - Left = 10 - Top = 32 - Width = 183 - Height = 21 - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 0 - end - object txtNewUserData: TEdit - Left = 203 - Top = 32 - Width = 174 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object btnWriteUserData: TButton - Left = 387 - Top = 21 - Width = 81 - Height = 32 - Cursor = crHandPoint - Caption = 'Save' - TabOrder = 2 - OnClick = btnSaveUserDataClick - end - end - end - end - object pnlContainer: TPanel - Left = 0 - Top = 256 - Width = 529 - Height = 393 - Align = alClient - TabOrder = 2 - end - object mnuMeni: TMainMenu - Left = 480 - Top = 616 - object mnuFunctionsItem: TMenuItem - Caption = 'Functions' - object mnuLinearReadWriteItems: TMenuItem - Caption = 'Linear Read/Write' - OnClick = mnuLinearReadWriteItemsClick - end - object SEP1: TMenuItem - Caption = '-' - end - object mnuBlockReadWriteItems: TMenuItem - Caption = 'Block Read/Write' - OnClick = mnuBlockReadWriteItemsClick - end - object mnuBlockInSectorReadWriteItem: TMenuItem - Caption = 'BlockInSector Read/Write' - OnClick = mnuBlockInSectorReadWriteItemClick - end - object SEP2: TMenuItem - Caption = '-' - end - object mnuValueBlockReadWriteItem: TMenuItem - Caption = 'ValueBlock Read/Write' - OnClick = mnuValueBlockReadWriteItemClick - end - object mnuValueBlockIncrementDecrementItem: TMenuItem - Caption = 'ValueBlock Increment/Decrement' - OnClick = mnuValueBlockIncrementDecrementItemClick - end - object SEP3: TMenuItem - Caption = '-' - end - object mnuValueBlockInSectorReadWriteItem: TMenuItem - Caption = 'ValueBlockInSector Read/Write' - OnClick = mnuValueBlockInSectorReadWriteItemClick - end - object mnuValueBlockInSectorIncrDecrItems: TMenuItem - Caption = 'ValueBlockInSector Increment/Decrement' - OnClick = mnuValueBlockInSectorIncrDecrItemsClick - end - object SEP4: TMenuItem - Caption = '-' - end - object mnuSectorTrailerWriteItem: TMenuItem - Caption = 'SectorTrailer Write' - OnClick = mnuSectorTrailerWriteItemClick - end - object mnuLinearFormatCardItem: TMenuItem - Caption = 'LinearFormat Card' - OnClick = mnuLinearFormatCardItemClick - end - object SEP5: TMenuItem - Caption = '-' - end - object mnuExitItem: TMenuItem - Caption = 'Exit' - ShortCut = 16465 - OnClick = mnuExitItemClick - end - end - object mnuViewAlItems: TMenuItem - Caption = 'View All' - OnClick = mnuViewAlItemsClick - end - end - object Timer: TTimer - Interval = 500 - OnTimer = TimerTimer - Left = 480 - Top = 584 - end -end diff --git a/uFCoderAdvance_D7/uFrAdvanced.dof b/uFCoderAdvance_D7/uFrAdvanced.dof deleted file mode 100644 index 305eb3d..0000000 --- a/uFCoderAdvance_D7/uFrAdvanced.dof +++ /dev/null @@ -1,136 +0,0 @@ -[FileVersion] -Version=7.0 -[Compiler] -A=8 -B=0 -C=1 -D=1 -E=0 -F=0 -G=1 -H=1 -I=1 -J=0 -K=0 -L=1 -M=0 -N=1 -O=1 -P=1 -Q=0 -R=0 -S=0 -T=0 -U=0 -V=1 -W=0 -X=1 -Y=1 -Z=1 -ShowHints=1 -ShowWarnings=1 -UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -NamespacePrefix= -SymbolDeprecated=1 -SymbolLibrary=1 -SymbolPlatform=1 -UnitLibrary=1 -UnitPlatform=1 -UnitDeprecated=1 -HResultCompat=1 -HidingMember=1 -HiddenVirtual=1 -Garbage=1 -BoundsError=1 -ZeroNilCompat=1 -StringConstTruncated=1 -ForLoopVarVarPar=1 -TypedConstVarPar=1 -AsgToTypedConst=1 -CaseLabelRange=1 -ForVariable=1 -ConstructingAbstract=1 -ComparisonFalse=1 -ComparisonTrue=1 -ComparingSignedUnsigned=1 -CombiningSignedUnsigned=1 -UnsupportedConstruct=1 -FileOpen=1 -FileOpenUnitSrc=1 -BadGlobalSymbol=1 -DuplicateConstructorDestructor=1 -InvalidDirective=1 -PackageNoLink=1 -PackageThreadVar=1 -ImplicitImport=1 -HPPEMITIgnored=1 -NoRetVal=1 -UseBeforeDef=1 -ForLoopVarUndef=1 -UnitNameMismatch=1 -NoCFGFileFound=1 -MessageDirective=1 -ImplicitVariants=1 -UnicodeToLocale=1 -LocaleToUnicode=1 -ImagebaseMultiple=1 -SuspiciousTypecast=1 -PrivatePropAccessor=1 -UnsafeType=0 -UnsafeCode=0 -UnsafeCast=0 -[Linker] -MapFile=0 -OutputObjs=0 -ConsoleApp=1 -DebugInfo=0 -RemoteSymbols=0 -MinStackSize=16384 -MaxStackSize=1048576 -ImageBase=4194304 -ExeDescription= -[Directories] -OutputDir= -UnitOutputDir= -PackageDLLOutputDir= -PackageDCPOutputDir= -SearchPath= -Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;FLabel -Conditionals= -DebugSourceDirs= -UsePackages=0 -[Parameters] -RunParams= -HostApplication= -Launcher= -UseLauncher=0 -DebugCWD= -[Language] -ActiveLang= -ProjectLang= -RootDir= -[Version Info] -IncludeVerInfo=1 -AutoIncBuild=0 -MajorVer=2 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=2074 -CodePage=1250 -[Version Info Keys] -CompanyName=D-Logic -FileDescription=Advanced version.Support for 4k -FileVersion=2.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=2.0.0.0 -Comments= diff --git a/uFCoderAdvance_D7/uFrAdvanced.dpr b/uFCoderAdvance_D7/uFrAdvanced.dpr deleted file mode 100644 index a3742ca..0000000 --- a/uFCoderAdvance_D7/uFrAdvanced.dpr +++ /dev/null @@ -1,36 +0,0 @@ -program uFrAdvanced; - -uses - Forms, - uFAdvanced in 'uFAdvanced.pas' {frmuFrAdvanced}, - Global in 'Global.pas', - uFCoder in 'uFCoder.pas', - LinearReadWrite in 'LinearReadWrite.pas' {frmLinearReadWrite}, - BlockInSector in 'BlockInSector.pas' {frmBlockInSectorReadWrite}, - ValueBlock in 'ValueBlock.pas' {frmValueBlockReadWrite}, - ValueBlockIncDec in 'ValueBlockIncDec.pas' {frmValueBlockIncrDecr}, - ValueBlockInSector in 'ValueBlockInSector.pas' {frmValueBlockInSectorReadWrite}, - ValueBlockInSectorIncrDecr in 'ValueBlockInSectorIncrDecr.pas' {frmValueBlockInSectorIncDecr}, - SectorTrailersWrite in 'SectorTrailersWrite.pas' {frmSectorTrailerWrite}, - ViewAll in 'ViewAll.pas' {frmViewAll}, - LinearFormatsCard in 'LinearFormatsCard.pas' {frmLinearFormatCard}, - BlockReadWrite in 'BlockReadWrite.pas' {frmBlockReadWrite}; - -{$R *.res} - -begin - Application.Initialize; - Application.Title := 'uFr Advanced'; - Application.CreateForm(TfrmuFrAdvanced, frmuFrAdvanced); - Application.CreateForm(TfrmLinearReadWrite, frmLinearReadWrite); - Application.CreateForm(TfrmBlockInSectorReadWrite, frmBlockInSectorReadWrite); - Application.CreateForm(TfrmValueBlockReadWrite, frmValueBlockReadWrite); - Application.CreateForm(TfrmValueBlockIncrDecr, frmValueBlockIncrDecr); - Application.CreateForm(TfrmValueBlockInSectorReadWrite, frmValueBlockInSectorReadWrite); - Application.CreateForm(TfrmValueBlockInSectorIncDecr, frmValueBlockInSectorIncDecr); - Application.CreateForm(TfrmSectorTrailerWrite, frmSectorTrailerWrite); - Application.CreateForm(TfrmViewAll, frmViewAll); - Application.CreateForm(TfrmLinearFormatCard, frmLinearFormatCard); - Application.CreateForm(TfrmBlockReadWrite, frmBlockReadWrite); - Application.Run; -end. diff --git a/uFCoderAdvance_D7/uFrAdvanced.exe b/uFCoderAdvance_D7/uFrAdvanced.exe deleted file mode 100644 index 92ae6548e796b1be37a087c78b5643e221460d3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794112 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%0DNpzM)iw zn|G*sI6@{fwb}e~qO^JvwX7W2;7ceLzb$ zEnptx;%;ke{3GEvZy_6^>AguhSM?2JKc@f5){f0P0jM#Og3!XvyBsW8?oqo9RyVNr z308lw%7byC@tY4ic$(V!c52On=hD;$=}b@Zxd-;+GT0rP+XVCpnGR6|O}YqHlc6vkdLy1&dq;{W@*t|`q`GhN_ik~fyYCh3*ENkxaEn|hd_;A*r#ZNLd zl|QV=8nt9Vd;~6hB0$DD@t271nAtz#y%dIH!ZP}RCQrpw?1B~Y#;e)u>6QN}&u0p@ zzmNUy#v%AU&#I^wBsJhKx~R{OhUx2m^Hd5T@=R&b1Ga=t8}PgYsr0u5Dul$}Z&in= zU#osZpyI#uGMhwUU5#TPRBa-~4XK4&8qyU&foqr!674lJ8 zv6dip73=tQo8(nitk+%}`0d1~x3XfR{;uISo>Wv;Y|-Df2Hsj(v0Z=fly9hFu~QKU zNLuKiV2bT~aqUpw(qlxX(o~P@Qq1D*TS$gJO^C40RrwUq>RqwCl+0qt?WH@!vu9;Jpn^%SzpKEyFSwz&93bYNT5 z5)FC?Q0U6(83bTe2<@||^175^IrKM>s+4{%c@K!i7@|PLt2%raZ_kDSWiTMTCVXeV z^UNU_55rmY*ZE}k3w`d82hsK@FA8SX4o+Dlt3!Yae-%#{7uph*JTGB*Q~Lc04uKgF z0wM}xw>TY}^vUvi!e|fN_96=h@IhdtTOFiFk2JE=K$p(`emsMXH)JnEE3h;jf%XGMMaZX_dT zMQ3EM&Pc0S)p`q25Ns@8B)x^5o+pUs#N3#1O4-~*7x$j8zLzkbe`dJ4o|dnV?{jCf ztVv1t;9P{nS_sQIgFjFyvq?oWi&5prIxRXaeaQZPj1K%?$X5?5aeo?LoaWx=qj7eF zMMGzEC>jlUw=18sNJ&HCAP0O1aOIrDN#?x7Qi;EFzB%CkJqh4cmsNlKHD4ko<@&Ni zJxfmKE#@A}5t^X^R*#ippRXkb8X6fgV##$|#HB0|#`U2Dbv0aQ)sM5bHLhC7X1S>o zy%(<6CRmkdGaa5($MTmPW@1GTofKq^YFt8olDP7I^(xw(n*Jp8Xy)F7tW&s5HIHGYV{NxK?Gjsj?3zU-C(&ij0cdN6m6Cl#7<&Yn+f zImD)((xF_#f6a-mMFV}4hCd{Z9=>sx(8y|i1((Rqif>r1FE>;We@{4kt%&r&zNEHG8 zYhIAadfBNLS!J5oR(^k~%bzTD(kcbL=Lx5ZCQB9V;M2YN$wk@gl5({hj2l7<$S`lH%OCAA85IS~1brm)I#s?}SHGvg^y-7dw^fYW? z*}jr$74w>Sm<(*eqpqTs-!57tY}emA%{L-pm;SEj7s?V1Pc{WsNVZoWlpMrA0j+?1 z!#sWNqdJc=ePdE~n@(6YfVzt1{2GZPD`0gMtN0~4$UmvS*9tsPA;`j&E2M;1&k^!} zdR)lMw?lrVCLiI=>nZPmt`aqNG5M~Lq!|5zBKd}0uf`5GrqIiT-nAciV4ae&Cw;tm zSHiBl^#=jt-9YEbX20(*2b`B~tRU-Me)6JZuT38{QCA3pm6UDTSDAEkpAy3w>4&VO6v~u{J@fE>Q@o{H zTD@G~AhDJXZgoB3cDVWx+vlnDAoigo^ zbZLjANjoG(+94?shs@s=Z=XRsW|d(%jU-=HppU^YQa@z5X1l!KK%c*6r*U}J?7~q# zT>NAFDY6c7f!rmzrXCMw>3nNv&2GL~C`jE@22phrjJ0^X&?mp?@j`5VcVqiK={R;{ou@XD2Yp_nl=YSV zMbhVJ)s+PiLa3zWu?}DY#p*!wO~%g`jUSm(7q16f@KlL`aM3^$8cVtj*d6{7gQ8ld z3b*Y+{Dz3g2CfDun;9QVkKMRQ1L0Pqal#oj$1`~Y z%l-G*Q1>eL&<+!@Se}vE#_b){z0n>UTx+k``jRQH7AniybG<62pc$-H4}R5wCa8S; zSYv&;JuCr&)I)mnLe^+h4Nj)Wawmoi`Se(iu~vbevL5F6t(@cgjo`N~O1J*&5FVr_ zu!9e$ADe%{cjk*pdUCjjjL~1jWO>t%E%?BCMK8ITGb7RaWemE9K%Pm7UJx*g66fZ~ zK3In`5TZNOVuxt@Z7mDr&8qqD^5Z{WKF|41m_!|BG+}ZPe{{-pUY<%>ClifA`@L$$ zR`zZp$BjQ&D2EQ$ER>nyqH9qiU3is~^C#38>={rwkiBsb^5uaC;KR9e2(n?;_ zLthLc-1S>(C$276{gyn#9)<_me&uCMCuEw;useq2guS{|LI!iyt%QsVI$1BN_~$)Cu>OBfTI+a*({SiLCu#=v@?mLbv_|k5VPJ@ z^Nvq5g%Ro{JCVJ@S`mwBk2*q0m*LSbD?PMe z16`$TUiR2zU*jTa5zhI>-VdxeY&J>C7RWZr!{nkOoV=tGyX;y#%5ae1Cs2xGLD&uX z-{7R-?ZtQ4c2lR>ynsI7T|Cn1GpW;KvA#3MPZ%$Kv|hVqN~cyn%DPBvtna7#3;>+Q ze~54}{zy<$(IuCR$ADMlo}vNu>0kch&zdpun`BB-*P-TnVF=l2>!b#gLV3qklE*yo zZ1m%Nz04<5Y{BTJG2~o}B1vw|+EORxV76Hix=9kDA4CsCeBU3n!mkF!?e}M||KzBD#Q3SobV!`4j0!F^NblERp;ld6p7)9k* z$0jd-d1;cQi1)6pEZ-KJ>u(HQI{kX}=@WV;u%h-40-S!ade`=7Pf|jG8VZ$3rbCzI zjvxJl$8^ES{TkQ#zh=f$P<+*!&PYW~g_PRzS!6eq>G^|=cqNf$3qASfJRX@!B?daI zPd>%3pt(j)IVum+D!rsX3Syht^B0VuV0h(Tr2X_6e^>&dj8isgoIVEU_Zmlmvq^B| zh~%>aHzyn5zX1M0PE$U6>E^D+>qYUB9XXlf8cOV)OKb(2(m^QA7D{qP_u0!fpKX9k zB$(`+%RFq;L`h^{135LiSSClR`SkJ` z_P2)pZN>F`hy5)zqUUFpl2aH=+Q5A_P!zok@GBUIikF>WVtkhv|1bugkMv^K5Q2o6 z69Lmpr7P=0YYv6lb)jj0k$Z1C;huR};bo3)w9uW&U%$eE{i4^XWnFN}%=R_HIksD9 z6=O)TUOO!2L)}M-yIp6Zx&&G|zzIx_NjVo!ueRXN6-V2c?XZ|5D%)<%|mfs^S zFySqy1s?Gx#CQRe+@M{kaj1XcLe5-<)mTle zqO(Mg|C^(Da{`=)YI!@dS?!g|S`fZc8mjfWt)#-V^9)@vP1KrIXC~KEHS@E}u|qvd zAgey^9oiHZ$AH~PO_9tPhw5UXdZFy#NSt?fL~m7_LDw(5Run-YQlDMPa%7X?QG`;k zan#*XpZ3UIRe4);owtQ~coQXe{6Bch zyWgmywXw6=%$X7^X&LiJrpIlvD%EsIaurIol9sS=`u)1y-Rf=R7< zV~!+r4WLl7W<1uEDBpNBk-RZu=bpTqtd{3uRwp9r&?ro@&f)!H2HyG^c_c`@j2#ZK z$;(g>+!qDUY6W5o0p(6=JS1h4_Y*`PDz-GMHqV`Qi;;|ao8t|pL12fV*sF`K|-d!m-vtT=;Ca;`)mGP9< zr79?6?({Ld6b4HtqflzW6`K$qoqJxQX@Z&DXNjCic{9SQ@@PosU7kY4Qee_npA z%b!V*n`tBFRqDa|;Y!twoux{!DvRA#!VV4w39l#co^^^43_#F2Lp32B<%w$skpi&? zlB{>ea;%5t-dGkVc)6MJAosyAqztMnp`!;&R(3h%BPBD)>Qr9q*(?#L$An0$oy?mIh@ zl{qO+XQS@X->ExtdJ&H-w0Rc7Nh1kanbXgz(;FUNLo{lUUX=Z$zSS3YWJGnJ^egX3 zwV@9{U@IpjPsPjbXHIIKYLo5loPMewkR=~bo#?F*R@1REz`UExK~uZ$b=(AW{PTK^ z)v({#F#Qd@+hZmH*DREk8}n!X?{dC3w<)GLY+G3~v-jN8%Q@b**hvQkGim9xW; z{JS7oObd7uRd;+ty>U_eF77iEq-M_8CqRO&QM%PccAFXQbOth9aL`j^ZUP7r9JfnU zviVrK0BZf!D>!r0i86V4FzoGP1#O0?9w*hm+sf*v#y}^0L!a{d`?&o5XdPK;fh;@n zKNA`bX%!X-s!zl+>GgLuVMV`>S*o6=Fu!QUcVs`+Cc&8TWF#8&7_z6rY(1urYiVuW0Pf9MzVE>`}0FtXR;!^>;Xy2 z=8XV|Y{cz)$e&`p$qEn9-%4%P`n&7zpgLcJ{dOc#)262hF4V4p8t*?d6Od^WsnB{3 z@SXmvHCB$6Q7uS=vFc%pg{2&kR97}QX?t(Maq;LC@gQXxvt^!ju|{Xn)Lww=3yK_5 zKOSsMmq@>gK!yX+6TQm_5^OwMp#Nn_M++kOM25O<fr%);t!>@@IpVP}B19lMP0E!Yj%8?jr#TaWGHdo6Y@5_1)H8~)3&Yx!P= z-3z))uv@^JkKKU34|^&04D1yA3$gR~z7=~icD{T=XB4&vI~%(RykXeOp*IA36zLj> zoeh2(b|Ucpuvh=xT|gaUAX7l{yTBIZ2axGm)riexOdw4TX5&u^hIlHsExA`ccEQw8*r!E z?)A72*f{HOkFx2k#a(REc@nqV#$ScI&33QEU2Eek$34t;SBu-mS%!O`O@ArwwYGmD z?q0V4WZbvf@zSQG%>?#2jVK&n&6I#MPmIoMR^e2e=ylY_BmCUWq_t)uwYRA!RcG~B z@=t`^9>$e5vO}y_N~|7k@qAf4hZ2w0&9QpO91pK8#HDAUmx)VHUM~=ro|vB{F4@>n-NaQZuI@8&Z4uYE47nox z%W?`j*jV>-x)uG7wO#(M{Z9FpUn1onQ<_neOIM@{5%4ub-oy0(uCn1%$bie2tc!7T zDxuVukXNHW;b+vR{9N@ve(w8kRFnx|1sliNQBrYq&U(HzXfEyx=G$+C&b4iyZO?J$ z1&bG?xL7yxCDg=ZxXMCj6v>lx{K(sM=AJ9{FDTx&EtP#~@}tr0drNG0qU;sg?i6t& zUxe*GjbwZAfj5t$OPqbCIpTX)=kwX6)DbT}^5E1e_dg@@~ zOeBq7c|-dl#lBn1j%)0{og)5$xb{#9oJT>J=nMc>HP!wy7FB&jUY@yGvxI4u@Q*V{8o+gw=sRN9V3=K{)1r zXVt*?KG1(O(mZz9YZD;jDqWWg}D)u{0_Xc3UuPdX{quM4Nhy@s}K( z^7c}NGOPU{66LRSlx^yN%)^3>uiw(1<5YbQ6#RKYe66Pt-*c}<;%k}KA-=F3UxkkE zmhX=*H9CJY{__Kc+?Rudo|v<0GXkSUtM)7kSm!ZSm354>6biyY-E^Fv-Q1qX6j@`K zVfQJ;wq0o3lbt?BRDa$GE6OO7*6eKe9U{IjYu{bkw@h*|Onm>Mee1RFGV#q8U%78%(wg1cw^e-e#dneR zZP31j^f@(!;yX?I?$f^Y;_DONaoYEQ_8mq$u2~|!!?o{0?YmBVmy7R(+E;1c{%~Z? zTJaTqu}N#1wC_ss-6+1tz7^kQ?dyS)YPO5-C)&3KUuFZdXH1>q_YMB(rG+zQ$hgsd z`6sJbUOUU5H-|+Q@f$N0U0Jbb`?Q_O(Hi+4=f6YSJZhqC9`Dljb%i*9kDhJtGG`h4 z#u5|9#MwB2XU&{r@Q37-%$_;UCt&d(d*b)dj_~X$zNrx(p))V?rNfVyJ$pvP2lxoy z1d{Kpd4|68Ep#M4=Uc*w9F^YbYYM9{JgBg;UpT&%(u#CEu1`ep-^{X*^PZxBV@l)I zKbUg{t9Qw}Gp(}6X1T)s^haaA3sJ`u@5b|R^?<^8n1PrW$+G=dYwVmW@%Pw%R_zA9 zMqqyEuL+n8$Z8l2j=G9F4>7l5CS&q3ONV5*@;jQCIi#N_vFr* zu9cWH+${q$w8`gtsKBugU{24^@|XH%&!oKMbtvJEYWJrZu7vLaNSYJ7Nt!)2dZ|ms z4fDbOu|I)JUY4Tl_hWfEKz@39ZPJnF=*+uJ2Tl@)z)v-f9!?yR+brklC#yF5vmeig z!2i#2IIo21Y*@AHP7;T}Pc@D+oP5}2m05C^jwMn3cs>OFe~x3sltOAo_a5@z<(!km zA@Ea;BT^s4aUHMk&9%#F_etUq_^HOx%PFhOl9DO&c!lcjsf9Wk_;*<2kC&Ig|KG)v z#gkV)^S~tWtUXCQ0zcJwQl0$JdtWzm&I~6no7zsQ>M?FY?;PfeAhc}?h`DE3G! zZ$`x;8$&PmVQoM*hGes-OMqi!b?UF$Pj%QV;=uOmT$V7DTc_!ulculVBu)GBqSCZS zr|F>CHhX)#By0)rP{>@;r00{8lAkn1=U0~4)H>O<)A=1F`JE!P%c5ytLKw;K1Woo5 zA$yYiZjFjX^7|G$@h9f@pW5%c`5nb_l1kNSlKi$xnog56HQgAM-#VQpJHHqw#L} z?82vWn@?==lHW^^7*{+&4&W?T*Cj9c7DwYXAgiGa{u-Cy63)GqMJ)C2IZn=MktgbR zZ;-Qpi~;L*!EY7(e2w3_`halNGaA3uDdoEa|3SgORAaTQmL*!XRAaS(l_uqtDOi&Q z%cHTHSMQd%@6cGHaJ*Eo&JwJv1?wXc%y#JNHYxjI8mkGciS&Bvf4jg+6|5~9ORW}_ zV%1Y)DX_K()|-O$`Dn0ytFaEQmL+4=JX>-rJaVh#_9?;I30A07P8{r$48EaJ%6;3=60AhcRO^w+bg{db>4mK+V0e67;0Dd zmkivmDb_+!hBa!AP#g!v$cS18xhNE= zHB^l3bMY~deYlV?4mUT2;(bZ%$ZoUVQmc;;; z4YGu;>SsCJuv9W%`8r8mN9>WL#y1;2Uo=({Rv-xzJ~!tR9wGx=dKqKh`=kGmI~f>^$(|7CYv>dTx4PG4RwOJ&Kw-<%zgb8&A_e4<(H=m=ii+*I2?FhXQQsNLK0-@U(T)O1xChj6j12p zss7Cre0LHQsAv(7XjrPij!LN*0xJY#K%RSq`L0YESzhP4!T&^iti7`W6;h1$8E;Qz z=kjfCwsLRqe^p>(!Na3u5{ZV{#es?@9cP71YM4R>Q1vUys)W^FMFO zAWwNhKqr7`)FHH9K|_(n1yaXTOOwVag{FeK3V7%iF3CZyJy~Cr8p!gfi}LXG;u{mg zUScrZBc&IIlZF%>t#kF`W}~1QLS(%5B!}^ndb?btR+NO<)b@mLN(*%vrz|1YeiWWU+cnD*&0Z(vM2Xs}kl%Jr6iRvOiNh3VC4ET;PBgG8fz1SFf?83W zD5N5s7^o1Ahm)ik9H=f62Y~Baezadj(aVbVPwX`b_fxZ11 zLC+*;XdcIeXdP!r>)^(w$}A5}glpT?1Z0P_oiMGWdr@V&Tw@P}=F&@=OJ>ng4$Ama zHue8s2A6;k#}m@nE~eG&PX$`U$qd?Y(q;O;`F? zzAJTV{XZ!>+DRvxcfLrpR{P0vSLV2d*>XH`swyWD){~2WQYm3Jy=7g|h=yAbWR4cJ zS>0XTg1}*gq`rs|Qqks4tnm@GzEN9`wN1G5zZ-5NGPONi0_VEmoc3_$+`eW{+XsL!FtD%aJ%M^T{M%ldkFk-4bgIT9;p?5SV!5)t{WCcSC{Oc`vvBb%hQpSkHx zq9AC7E)OxS2{vX3M*AE>&a&xS-*u`#K4?yZ| zzK$e8A8of@XXb>Cf<=4iqc>Zc)Zy!*%E9%uWc8q02b;3~r<1@%vU*qspKt0)dPQ>y z-DLFA&4H1E;wz3jwMJ@^U#KttCN=q&S20lHk);t({4M4WnAb3$V8WPw-(5|hOD01SoqVJ<^oIYnMJychiJ@+B2*cE!kL-fHO= zR5R}-_Q79uA%~59z=N@qw<3anfi{sacb#e$5-}RoN)uPNYKWY!-XoCD;#{uxvN(?3 z^1-mQ$3#ni>+dC~T)OhSAn?AUYkw3%vwA`!NZl?Mgg=51E=>%VqMp>G-V!;Yx$iI6 z16&#fRH{h>Wy<@I0PhAUbxE?K`1dPD4;FP;r=|%~jvy5rD3Y`v)Zq^R8Y7?q8niF@ zB|sHb5^5iy@JK)@8pI5|3fMFalQ)h(7MR>Z8YtME`~sjc8YBaeodS9f5E01>eP~Xr zKDw;xfj%wJ7p1=KobFO#9ds8!9&HOZK4F3)S?bhAnn7bgN5ies>IOrKyf zFg@go@g)?6U-NYf^`|Dsc~rK53v@V{j_CVGn3!-ko&bgcV2qHwqzevC99$6IilA?W z5f3tY;6CElVVZT{8q>FpWiHG_%>9@rF#p8t!#FsHaX)I~JAR${z7Ug*nSxn}kq0BP zJjq*Ks;}-6Ye~@~Ii%=m;tdpR0cf#bqhVWsEfCm4zyQ3*{RK8_)u_V9rIKnuxmi$T z;tR_Dc9e}OQ=@DI#vLeFN2E*+)Cx^(9oU*@_G#c+fXOd$Mt!Nov=-nqbnE(nMxfwH0sh0K z&d|Uo0X{6iKj@IF1o#4Xt^86#t^(*2Uqp@tkXj z{RPu~Ygu2uofrGGymN%z=aFtxi;eaFHe%zgi1&{PJC93!%p{42Pn$&2{g)K5lC-H^ z(!ClzrESoeYF71MN!lJ5PTJb#+y6AMNj-MG0H6>`Zr{-~1rJ!Kb3Xe_ab1pL#NQWz75bttL68hAk6gG539PXitC zC^9-)KDLX;S@BK=qQv9HbW@1ODNuYK^D?FpGEs%k zblr^Ye2d>3_$iDVcVEnK3|ze{m-cm4NAbugRK(-7LzICd9-Box%5zwbc$~0A8it6+ zcLmg_~c3nD&p}`L6F~94{gytwg`L0B)QI}~H5tWL?X_y zCE{|}qD;#D1~gc+?N_6~*2qYw)w%wQnF#!s#!k=3^R5uNk* zke97RM-%kCe203N#fq}w{q%r8CHbWwFXVWK@KwZ_lK7$>2|T=cuZJ}Wv-TCW3Nev@ ztTUi$$O(H`kcY#w674y)>8#r){{uB{r!KtADw<$L%>A`~d!Bj-$V8TG;$8bEdL9$~ z|2%b{?UxYcS7iHja(y`0;F%d>`>M#!kd!eg(Tg9l?y*NrMx@A^!il)6qHsOj*67J= z@As&#{S>24ACJ9yN_w07=Jl{iuL@Rvq`I@R$)%!_UWN$zoSb*&9N#=@QNHQ@U1R)4 zKSsVie2<$sWyXwYv(SbyI0@L-&GJpXYifxO(@Aiq&AMyGR0Egq?AiW1oNu9#Qk`7T~nL1^brYYaHmPF*cVAkEU zX5ZTm&z^ecG_s@N2o6`;pd9Vi`7EAY;v-{tYdsZm^&t&mEoO*9ht1kJ4y;kaq44JOp zdNsYk6A&s|e2ld*t|{0&gJ3FK{2w&_tcrETf4=w+#6NTo!kZSnkIb=PoF35E&gTVI zv`OT09ggx3ps7{Jw_zQ|A1>ABd^}gkjq`BPSLxC{1ayMA!r3&++ZO;cdFY|{hE50b z9@zBAj($9GFR556skmKxW!PRT#p?#VBAv)>_yj7XEYyWRlXm{?Pl@d?4OQ;1lDgOY zqKB$RiR%yuZ@^Dc4`sdrmc|quas`!yjxc)t(El0mMO-otcUL; z_HJ>P4*IE7uKY=au1`@xa#VNBdffPz`mr`soW_r8oka3E=YL&isWUm}&kX~=p_{cD zZYV$In$Oh(mV0G-e19s9-KtkEX8WW3SlG`YH~Xwe9w7~_eK$*%J4=>7m(3b@M9Iw- za>WO1a+7%s*xFr06uqb!>M)fdj9Z=+-s`Mj_6f;i>O6w!#YneXNG>!*xDuQu~z?ZK_anp-8JbWjN+AFN5`AY4^>Ac6e)4qpI@*U;orA&`C zIz_JY3#x&nkJ6K4Pdq!!J~?tK`WUfJ@GY(c-QPh zJ7$gSKW=V1#1*P~VS0^hu+(h)GJ_=SW*dUb#nyLXLfK;}dl`J}lO2~H6IpoY!^280 zDMe?1kN(VGtsZ3>VzRiOEJlhhpF{;4JJ~6ayUMmL+g@hd0o#5E+pf#UQ=GaC#}A`wBIUUjK(O&2h;>It zSHLk^mdbb}XUdFH8N|@_=Y5SoT^{qZ)`k1& z&X5V_OstG}%F<{;-nqY(<@f{x2Si zyyH{H!$jm#-XGu|5lHBs#l z^UvwRJ2Jhv>^Z5(n%KMSvk!mvy6>D9TsH=?d!6NPvU1SQ@b$A?p`BG1mwobK)x_SR zk6v(9&FCKf>5N{zkG%4s|FawX&5|wRyZqJ4Itrz7@8z}0FO2Hi`K!NFjUlS8u~lP; zD!XeJXq^?9-!&=ug`fATy0Lfput#0~xXNLV2IeQ9#jP>cFWi^E%86#Tb!F%kO>=^E zwRP=t?y_qWe5XK8hq6fr?eT=O&3UO#(+n`g-mCt^)KxAX7d9PB3L{N*0*Iif zpIsqRBd)(l4XU3Zht!AF+d8Z2tTObPy2ww`@z;GRq3+5}%(tL>VyuPQA`R>qP=oSb zP79~3<)#5T{INZpl%P7{s&WmC=MAEGy}R2xbf3A8WGG`G9<0@S*Gr)mx`U+)tA6oE zq%^E6KJ4#-o)sgSuq*E06y9F79WfWWS_6+WzA8d@d&@KTP`|CXEaV+zE>voSYgt`+kS;d70 z9a49{eCyQhQrKgE(Z=HrW93<@H9>~C?8(^SYv^4HYDYrk?9hTY&;@ma7Oah*W=!@PGWROx0i&}Wi3HX z*LwzCZ+E-v-N``T8l6bkT(=DAS*wwI>b@YX_1@x-$y=CtJHIq0zBRj=p6D-`aQ$!% zl*ZIcsJ~}*;o%+_DKV{5PScFATT>T05x&EzXnZk$tG7S&jdt`Iq*t2#`@NiIACAvJ z`1||TY(RjjSC~H3h}?|f3ku(7)Q5(ysTj32w5*-ke*dd$%a zK(KLy9gKTsFA;D|us{BBo%1tiOuK8=%&D_{a6aeXF=+sjd{ahEE%IH@$(m_J^Sb(` zjGcB@vGeKiP01p_)RKg(8BD> zSu}661Uvj))PWR_$DVV-oXor_Pv@HJj3z>vI!r8O*e(dO0xiEigHMqLU*()%c%Q z?7Ly=yn9)#!exhaBHJZ2Pa`gtyR!T~DJsT>F4sZ)J&F08oS=5Rzo0T)F`iE2rgHS8 zBq9ICJEn64K_7IY%qO0eDZzg5PvFwL<@tq^oo!0=vg|i?%1q}B#m1A+7P!z(#6B7A z6mQNny{s5TKef+~r(NJezxWjBCwX(C4zpObb525A;HOHvi#O-SIa6opV%d2Tx&lAd zGJ!5-QljbhJNw7WLf}GoKJ-sk)}6i5Tr}D0xhJ73@KdGR#XF&7ntfcT{v>n-eyVi4 zdUa0&zvs;M&nm1Qc+QWPg}{aOsqysKsih8O+RM_D&=&Zq((ddXHLcWV%K5-a=nDMQ z>5iD@D>Zb7_Wkj)5csLmO_BCZFB(ZT<+1W4^aXyZ^pm|=vuDnkJ&O)YC%)w*v<03* zJ<7H0Kg83mTQXd7?lRe{4|!3Uv;8G^PA$#r_v7Uv@Ka59H*e%H=hTuZzG<^(asKrr z^lO1j+D~@=bzfGdtIV6}svVi>8kEg;Ehau+YQU;ZJ@?1+An>$Ph@)3-rmIVSeldM_ zp-`T261oDHvN>7Wmt7}m6<)MzYfqrr6!pCe_xl)G%0C&+{x@*GcNAxUG5NS-k$A_$ zEqrBTy5#3gEh!}nu#i3f3{M8yq&K3B}Mw0wNa|55582PKkZnE9lgP*tgmNN8_B;nmwQvZGDpHIy1 z($SeN(b+W5wG8Z*p-ZhtzU0X%tXuq z@gEyq2XY@#D%9N^7ibF~gBy#1&%n&ZY{Ybl%AKSQo@~#qB>sEyv<~m&zDcBOGvCthoUAOC zl2<8<+6kGin(^j*efG`99)-OYlkxLRmk+aVGG#P{zUB_<7E?pmeHfP=PR{1vIw{kY zN0?o=P>#1|x(426Xidhh#vBy;_DolQXq917q1VpmYbg!kJWsw|Ak~tugvh7l`ouz{ z{o~t}vA7mm!dB8gV=z)>@(1rs{7HLxX}=3Qem4Uj1YjR2_#qi1_Y^dd@96ScK9#b^ z?84Mzq`b24%5*)6@fDl$+JK!lEz^~IC;Wwx@@mE&RG8^ng^}_aSkzu##kl8UeyF@^ z2)i4z3!Fa0xexkH7^euNZ+DSD_^(}%O95=ZKr-zxk}j7yCzOLOo2Z{5sT&gb(`^W0RiLYiR<$#%inU9h9mSHF5=T4c$ z%+17V)lTf+vA(0SsGUCG67TYp#Jg-Z^-BJJDBdpl?emviCy7%5mo|E;d3DNmCuxxK zbU zV5uFxdUg2f)8R{Bm=d9q)&bT(`l}RAGY&Ha6GJIVe<^>p`q!27H2zYv@@LiN4ajtTgwGHC%?B=Z zu^y2ld@%Xu4A%_IWZZH;%Y59@?;Us+yuVZT7=@Yf9Q~b`=jnei3e$pd{e#qFy4vmC zmT1)t#Pef+0+;r8vT@;%bR- zqw|Hd7-c2$sy-(VicEWrF3^E_rNMiwh4_Od>DuxXO_S8v>X;{%yD9exde zsqyH)TJw?fKCpo{fc2kCGhLtJBY#igPP?qVT>s8@D&I0Lka1MXGstM#MB$$qFWT+H zxxc9CPi9=u>uEDzX~y326tw=5>1xIFCu|C~2Qvuwli;_Hdj^pL;rMfCHz(ROU9dDgqy=_p}QWl0kad+hS`PLjcLFf#8eZn ze0OfI-fGEfLX?M;g^aFZBSVB(mz}aOeZ+AoBmT;aaSMCo!nw7Z==jwF@yd_{xF4@<(Q55!~8&E^bj1l7LU(+;x21d**0TgT2J*%9wtc5@+Z z@XCjV{hi9^y2HLWRI*UKB44{N?^p*Uufw0fPlX4n2eVF24|vzelG*+_R_(x_{y1HM zrxDZ1c&p}0X%`ON(rPOsQElNxB74tW-eRJ_+!Wm4!*ZOTJHqF9 zQ#TFf*s^+xJz&%zx>p?L>^sjVs+Gng)(WAt^t$zmbEi4`LGAC+-{wK%!8}GL`{KOE z8awz%`2wy->C>{`Byvp+D!-YOX9z zMA2}s3NVhff?9JeS-Bw^b?Lo*x3|9c{%aB@Ti?!w_dgRVIc}AyZI3eFiRyB`?d$HJ zAqb2MAHmZFH^~bH%JRDHDmXWXM-upYM-@?HY(oRyp~f>u=DgSiS!4Vk$-Rijw==Hgk9ScYuhqITQaxzqrNBmiIa}VU^TiJq$c7kx*fZ5H z&RaRUbVQr>0tz!HQGG_dFv1oR594<>p4$*{TDA5ADp`s%62PtgVFFlD0o>~0r~n>$ z^fJ}f+10UlOs(xzXc`7U|)%K9u2;R&Ms^@jTzG85(ySEk82`r+9ar+}w3T;-N8h(vX(&6?EdX6g$EK>#!-V1WQ`kjGyp5HU5@SE%`~eiB8j5}nJ7D-+y=h`=4&*@f z9F#Al1dBbRD-O@^>4j5W!c;m7hI5< zrg9|zt-N9BrnUUrX>9aErk!w*Li4rkiuWDb-bnNV4*E)1bo%(=4j!J0d&hKY_YwL+bX<(jJBY4ILIu7W{8!KF3w}KpTzoRw?5dGE`nwyV`r0x8KhRkinV~IH3+w4EXAl}R2 zRndecvOVe?J~YQ~4ttxzqm}<*IA1bS&BZx+>L?oR(hlI(cT{KS(4Fu&p87deY1%M4 z-;sXKVS+xopA+(DNuu6W4WQGDN-y_WhhEO+Q6XXHh;FiPB=|l_DnjyIbt#0nL#YoG z4q9(GEkd8)ttX@!-x*DMX|yKYvr&n(+iw(Y=`*e{h46q-ZbqQisZwFfoW%0E9+#Z7 zP~mUjd|jlYA*u`Kbxqo?ThYC8T5=a@u%lay(mKtV9fj@395992Q(AtZ4 zuyH{&Eq!^5Np_4)?!s%FqCkk*xjmcmk0kC=5KNEX|fZDo{;Ph!-G!G zb~$ZSp3FkcEf-}sPi1Z*pk#Fq{_Ra(rfQ}SH*-YBbg#qv)x@vxIlN# zA4aOO-A%;7{>& zaX*0RT;v=PZIXjKlPML%jUy;-VZgCQ{H(96J*&l`hLK|=9boNU@}d%k~uw@uM6+xR>4lX01rydRKu&~!$(Q77;SOM zmN*#$2h|$tkwN|PT78~Y*WDK~dS#y2$vRt(ZcOjYI5w3IEpME9mkto@6}5<_(G!3O zKg?zIS^bjLFZ;mH{LDzh>M1gF#sGQNH&Tz~fW_PY)p1(sUW90@=l)lU&5|JgJoAMg3{&x=OWrD6=gQWUIzIEJ0=#heMR&U`~xj~a0=eZvL zRu)&v?`N!$s-6diY^j#40C^A^kv6h;yBx`6?uYDYGaBBVvYb*I{6YE^vd-ii&lEI$ zPOEPWb{?Jkn_rNOm%=i#YzR2h!-aU751GNGz?>AWU=L@esFuof5nXLhAh&Iz>P@7b z+XnziL@9ypr3()>j;8I0cw)=7%yK6$zKNZEoTa&Gb>B9%aYjsz-@>fg-SEk)YHla_jq+Nk3-s@7;_Cl58w3a@XcW+>QR50)6;x{QH6$c}Y>^}& z?g)uNBT$kns4T&N<#J6+ty-$qic4#^*QG9qTlCU^ii(vgDpj2u{=dJO z=Xr92wtYYUd_FhN^UQMQ%*>fHXU?2ClPr^(rQfg@U?BErV`jA7(T1l4$%ksJHsn}FYtv$VT=5>`2;$sjBo>F`{*LrG@Dpj@@qVfJdE-9 z>eU=3eweA;-H{FN*VzW;R9_4&_leCNEB?h`$OKA!#jR9t1$NNR!$>PCITxlJiysR} zDF-Bf&~DVCth?Q~fD^jmHV{TZNb|a7{+b za~aS5D?Krw<*V!^y`RuLm&kfTs>+NPaR@sL$SMPGGKsWN#bdJX z-CmgNtp+r5S}1bd=qp1uMW1_a2bX%@WM(rG5(A@VVs!72Zp_yL+wfp?>O1^>-w2ZXMdjQ1C)2_W64-rdyi)k&f zv-_ZO9MaS>MZSiRFW+WHRmQ8mLi5I@6xzJ7FpVDY*M}d`Dkb6E;QL4f%fw-Pk}jR2 z3I`Ud16*qOg!zd00KA(_F`--aJiC|&*9BC}AMf(@9 zFoWscET(tU-s25LBMwI!Go1o4+E!ed*_ey;oBcvl zX72CuV!40Ji?w_e%Ds_hNmfodx76NcJN^9g5^rnH(haBkVkyni#1c?KsNvk#fkop- zg^KeZY#OGokq-`Qi*9ND>hJ}xYxvT&P8=6yJi^zJei& z;@gQt8Rkmmv<@;-72}z>geIB2iuzK<0z}hxO$mPg=SfZiLO`lVQ-Wr^OZI5SJB=t` z9d6q})tNK9A#{^Le}?Y~Z{6d|bn*#e7Z6sZ@K#W{0KLsHHSc4ixdf>t8moH-92!1? zgxcsY_jwVY%+7VsASa#6yWQY9NLRae05f?;bfa_2^L<(-Kz)aY`n~@Y>es?f>_J3{ zL>6~V%yb+q%<_260X4w(iu{Ov1cM{I&v*E&6n9^rBT8OBVj>&c<_EN{BMRW?ug(4s z=?+!|O*ZvHP5od1m3XDC%uHmY`at+re0I{6>?W^WO|8|1hceqd(8hQ4OVjdySnncB%5bx$J)l|MpzQ*uBropo!6C z@NSbXV&?Fq;@PCJe06GcUM8b)V9Sym7P6En7xj`TY}SH{Mf1_hOon;i=#=c6Ov4^< zrKjCo>>cOT3Ei!T3-7=it-JI2P^CM?OCg%$e12fZ%q~gdYPSBBezUb)2QiJDrd#F9 zGVMqh!{F(@Q3LWt&h_;D_$BLjLIl392mt1}QYOHITW`^z2Z^a5;eBj0aissCz4J*e z=dJTJal|V~-*e39DA>`B7aTq7A~;@&WN=L;AXMDZq`Ls6GGB*;N_#oS(Pey4K{%h} zD?feA?h(MG4*paS{_wY z0RhD9z1l1=sClxoKy%+#1`MR9+o`!vn*OxMWsuz{B{3=xc zwx8?wFQHcE0Ehh~9BtD^Dmw&{klRfLL6u5!J$-z>O3G$`X=l)JZvw}ITg3VgKF0c0 zP;d!N0fH}+t&&HbM{8nI(XTU~HMJKsbmcKXBTvML|<)?1VW;-8N6 z;eBj0yI6I5Z1P`pI21hE=l^{AQ_j1*TPAfZ?uNj5ifBiA_ko&%7E(qs-09Cjk1}+E zZkbISTW`)a+}TV)vG`~3(?o(E(L_XZBt?muhp313t&P@B{$jKn#xitDzBz+@w5gpK zt3ZV-gNSSy!S%y$TTD7axy!fkrp>O9X|ff`UH(iEav34!o2RHgyZO1x?<1m4{pK#I zk(+4N7^dV6fwq^0UsLTjn*(_S0N9H$e}5VuI?rC0J$XfP(HUc8MzA|Ne2osVH;?EY z#;Rg>G=Giu`SPC8PFxo!e;=aSj_#m-mN15W3LCtbHESN+Az8-C%#F=K zZao3F znJ$k>2Nb}625`{VnA`U!dyM9I+WcO7Uuf!=7y#!Gou40*bj({GZ_I5bO>OQk-bQN| z&zqx~VUiv<`V+&DLcDe6N6dg$v6GM9^JTFOO{SMdH@f{owc)>LL(8W|kXEGyr9ta+0m04FcZp5?8vA=Ud()xj7)Vy3t5QNctwt=`AtRp?u`p@1-WTXjT04hs zu0*@d7Zn`DLZH0sd_|1J+T@LZAbtWkfo}nPEdB!AGJ&4gSAh|!?W8wY`Jn%@k=^v+ z_^n%rA>`;tf?3Dn0(N_)KsG`0!gvH{HiCKxTScFu^F4GSV>FMF6YnBSMk7hOHKN(e;o9~%A z?OuI!ULmvPiGNJfCsT#Rz3W|z`>_h6XqaE8X{I3j%zTl?EkHKJwm2&2U!uI080Pn1 zr+nvYJDxrN`h}cAu`kD6HY!wO*y2ZJx@mppc@}#SNT%Hlbn6=V7sN80lZ=g_t9 zwocsTD8vTT>^jeMBJG8znZOAhPj-bPx0`Ea0>;~`4D=rQ!736;Ts_62)mvzF`#uTy zyZo7S$fXGyNEp3J7=FHAf(WSHDhq1r_YXq7(d0FkZ8(i2I=OYCo9A6a^5M5?VL-DQ za5j|AE|OOiOU!%}Mwu!7kD{Q32UD!j(0#M9_$YWx$~Y`0QeI4@R5n*Jm&M|TD}_I! z(e~9t%D764zp8$!X37hE@PM#V)18S_{l(0X6P0 zCu5aUX|;MiayOjQK#z4W?dH zR7me!*YT41V$0rS+C_ZqG#h%x?j-gvF4mTbw!&k9kAc5#64RpFe2ywM7QYwGOVIQL zOP)~A^vCL9UtZ328X~pP7X}R^4L?KFHpWoU?<6OUu^T7r^p6{eyXEA^ehf!C>Yps{ zoD|+pQk4{7HXfK_&fm94 z1+FB}Tvj2`En22LBzay=;dh%;uY`bDPxOywDkal>XA!5 zk`p_^_wHMhBSEJ7{u7wGs&yI9SbPNYN#bu*%d;DT0&A?z%|_RZR$$Nf_R;J_S8SSk zvyJv?%PXu*>?G{wDOpS*p>_zRV3wYk?Y|e%Zr0hP+gr!9;fliOi)(W@cl2fEjT3So{o^NH%k# zW9YJ8K2^F&^I@zQz5Z$J#@#2)g#p-WiBwgVY!%oY@A#x?>D}(lA%m+gUk;$yy*ag} zoictREeg(wG#P&ks|z4+wFq~a2bnQq@f#duZ~duucKV8z>vBR(Y&+(t+45R>zG1#% zd1%9Bhf4@WX$!~6RH-;ko8k8gGd&s4f((R-ozS{T{$i3z6gb9W()G5jqcBn1Y5esZ zeuI$C{J!ooe?r8Uk;vD!ENdj<^)Zu3N#gs_SR$=#)dA?D`Zj;mw<)Xnqm1yU(U*p7 zVtsm(xrZV(A|1VtXfEy_PAh9J?rZ;t!p{e-l}@4RhyA6oil1k33?dIFQe<8WH|PEb z8)=EWn_j&+IE7^IOsPhvIboC~*%bCDi$_f`R_O327z(+clyFM!Yl07yq;%+g7K`2H zJ(zDS{^(n3MsHfNS79za9MoC=M7QlJ%gjX1J_`mVE!C>B-fr)XCDfT0_YU{kQ$c+1 z=1G~ED=+R%&oWlcFIaloH5LoF!bk-oP^99xNX1ZpsTD@W5Ut2(!pMW%D)QL(<2E&uu1AK0BKwgoYs^c{X*H7JQu}wA#(C6B5+`D zB?h~;|M&IQ9W%1UqO{M=e#}Lx4KjGipjfmd-_y5#SN|NOjCA$rj!be)jaCkFh6kUo z*uxHBd&YBneZzxioZ-PU*6`qShAyn}xQjJ@>`tPk>HP?fnN^UfD0{F+*@Kclb(9_M zy)m;$5~FCA;>e3o!2)mvrDoJO_D~A$kZ$O-&f>rbVc9Q7pn+Q#n2Y_ra7AedO)}G#lNS8 zvVFls7IlbUbff3|Pj*yI4djd{QdL+&Lq_@T*SLtggNY^Tts;{(*+}AqOj3wgwhdX@ zQT)ZCLb#D6D)T&wuHuV2!da1UM7^4)4b5D0? z2c5q~U@L{pN~>Th(QRHf%VY<^PqM`&Y+yRYr$9@>DD?9=@*od94C8{BH#d9!Gm&nx zgR_XyO)ZP@s@ZQDM)MptnLjX*zUTmgu*xThep!0;A&K-Q1Ec*bof*L$SFWPfvEct^78$Na5 zWG0oF9$|5fZ97>x`qoigZWP0%Noc>?e?FyhRn0$uXxr5-=R6!(Ye*pY|7j{yNtMRG z<~7x@7goLG_*?$ZQPXI(%Yvz<%Pth``B3qRx3o||raOi;fs$*5%keQfp~N-T)&d&q zM}qtrIsq|vc;|QK%X9gja@+Ys4<+AJ<$J=Nh&~<&r_Tc2=~B!Slo^ZP{wk8;$J(u^*-a}!RsI=V$=cDk>t!Y$-Ne@6grT%d zJt88#B18+X@(~q7>om)b@fID0y3?qmaXO6-R&|ZuZw^_-wYCo;NWjR zS|+7Ib@11xUDhYxY;wK9xguubEOUgK$J+)v1e(ZVRZcg^j5`O*wVR7n*Vs zd6CMTM87ot^~$Ks=7S?@;yos{cz0s4`&{Xl;yGc zZsi8IUw9o$d!qjYiD4pH{N>{Qb+`$(Qzt?}zJob+TFaRsCceIy&9czzyX?6nB){za z&<=9-#rgwT=S)P2;;);gk}}*6BFXrMZhj$AfnojuYj?8^$$g*PE!u`Hdvp^=%KN*p zK2dq}UvEQKyuiW4{>>?q;A7`NFoR(Y(dUGT!@Gv=`G|HXV~wzA1mfcGXlKUW70D$- zi?7RGGNAanJj_L9G}{5)My|_dM>GR9^PlL>JJ-W=sB$|U+UDyU8I=AotZ3IT3|Q2w zNLp4pE6*`!YbCsi#@c8kUU_WmDl(){r`T2sUuCP9(V)>Bo$rrki3ugzeB#JhFVqL{ z5R_7Do0yeM8H#>)WNe3KrxDD?<`5W4FkEf|jMPn^!(?OeO$-fKtuG(=XZ~4lI;6WQ zrnG5IcLe0R(p#BkGaex*4_X|N2QZZ^2>TB~)1 zzE?=>(RA4OU^k2P2SHE!;;0?ylGsohyr!CTw-eegVE zL_NTnn#g1p66S@+=(I7}kp($kqj!?xTa9kd)0mH4X7EBXM}svr$E+v2#|9oJ7EB_Q zgJStjC{(<^K`HNk*r|l!pXC2^ZmJ~g`(4q_g1lugmD*=M&%V`_^XJa1n7uGO5Bk0F zJIW$a@VDA4cT?kk_W7gpT9qo-Lg(C8oh`x6X@S|-f|%coE`t1R`fJA zIVSBDCWnfA<`uICp6pFvx05HOaqR?_r?X1v@(~B33-Y7y`nomLYA1zvHzQ*n8BGlN zB>HkIi~2XrXaGlF9@RP~-)=FOdy!(fI!PmVHCDEj9Bt0I$z1;nmIlH%Rd=|NDtQ}; zh&gk2VsWyk=_IKexwqb2a62Vk{nEuSo}r?u6H!S*EhO7TNM6U$YQj8wU3HMaTnb7^61{g1>Ks(?B?fR zZ~iE~@v}g$I9|=jI&Py`d>Sl5CWQyAzZp0Zk50ux4;5B=lxe1^pt<-Yt8F~d{{J8T zNB7c@;k&p&AQ#4)AoCR0hW0LTLt z$YKXXQ2(*n0)e(E-`z(MoU}nJR#X4zLN%mxv}L z3Qeaeu<3wkRlc^s{w2v?M_w}C zt{Ms&>gCNOi^Wgc;B}Sf3*iK}=>_%W3pXglvok#ngI$QCSKYG93zjBP@V*s5Tw)=1 znQJY??F`G5Eumi!=~^?fMXKqi72SO?)l-W0PhoM~=}sFB-DtAtrgyg~+;Wz>1zV>Z zpdknJRDf!<*VJEfjXw&aoP*P``Oyd<8_fi@3adc;$YjH8Wy*B4wfM^A{tGn(H+8FK zc{cTaFOj<4Jn-aRcPrjgK`rZm@5(&VR%AC*ZbHZEMB$F6?7YT$%%RzIrAz)}sN13V z;kQsc-WK{B6{-{GLeAlF!;2P=V|_f{4Dk3Qz~eRm$KnkE9`5Xt&Pv&(=24|gTQ?AU zL2T`C#2WK16DKkstElLmyy#{PpR8fGXP&u< zwV5QDJbz64Cpe;&^B4=4+nl+}ABJFT?%d_S=2a`x2^2rFZ_~lNC&xkvUFIB6;MrcX zFwN?UXp$~AYR&v7v=p{P_Rw`cks%7%^IOXJC${nJCY?2kVg~Ef)WO~ealcWV18Nm# zLOkfpb$}BImQX@0es`NU7F*ipnI~ZTcKwhizXULen7QpxZ7p!9H8~#rP}RBeO2Ib4 z`Jtx%IQL<`VyEE3WYu}{$7AJk?(>8JASPmg%uzb*kK7GJ|3ac~t>(M8xflXNx25wP zxi>=)7!#gJ6IUy_?muJ$Z6p^dHZLl|WI4RP0T=yb$>w;gTb zh1(YS%#_P{8h4S43*!T?HSH#V@sy^ozKs#+s#@kH{!>0+Yp+A=;#~Lqa*A#*hX_N*$|A*OcF6Zyo229Eui8P<-Z~Pko2M@ zO<>qx8O(~O)cV{o1HqbwDu;QhWkZe?+*D_3de%n-SLF|>${X^$tEX*?sVs8s@Zk*D z+vYsB(&?@^Yf_tL>a?oJn~|3y?TOQ)lk$g5%3IJk(qT>&%9HZH{}%U!y*2gtmzYH| zaAPznFVY@)@ws?<*BAFiUTb+j(*B}%n zN(uZO^q#qQXhx$pVD@9{Ua|kH`54IN4+MBu-|d%UTlowNq-htCYm_=>j&>n`Dmd!uN5549jrc`^}Tgt=A=nZ zBs)2?WVm_#`J`l-zcYn+bGYSYhz-kRqhZadE|ilsNfM<5?I|hBY^w0Up9T1mNgzLMohx|3e$g{zq;FUGs)J4ko zda2*j;>2Pw3JjVTe-qMVWd-7qYwDt73hMfimMdQ)V+s@nnN;HjGaTw&KNEj|S+VI_)v!7$@BAf*)G z^l&A5XazFGT@h+JgpZcCUA8Ib!FkDq{a&=9Avv{PQ44p4!as<{l9iaeWk*VtmwINR ze;1HlbuD8HtXVFv%f=Rj(5lqbPwIgLE03|qxzsH$CbiQPn1Cb(#?OWE5oz%<=P_TK zU-K^oxKF)_qvA)qw2m@%nO`wbXfq_JLgkywKilo8?NP8iwLL(ka;OLUna-p+?vJ*p z*0ESsP;swegd#RHs@|RwPJbP4-*=i{i9Ob27nkk|=XgN8Dmy(m7`BMLYQNPss>uv6 zT*5?bUgn?0(8^)c)Kt&*z%S^p+v#!EwnECH2I5l21zn()f9CU~xg1il{YrmE&QsOU zw(YNc2^7I2a`Ev_8x_ zJb|sx5B+w`?OCJsDo#s+r6ivN_c;tqRds)IId$(94Qc3q)Xz3POp`blz3z5XK zOUhRkjik7=;G3FZf390=Q~by)FTLqNSK;VHjArSmf8mFN<)lT0B3xN?7L78T1m>b= z?K=HbTbY}gW2lTD7hxJs46-rT_KcZJj9-<+k@0M3xyH;F4)Bp|iZP@9mmbYz(3mPK zUU=IzJ7_&y(d`k925P*G8gu>=;!XU+2U(v-tz{Ez&6t11WWhY=G2-PYWMlDjl>V<2 z1WijYa=v1f+|GUeilJrU$)WIMf8oCP50IbSpq;FaTpExOOr2?Nn3z4!>tx;K8}+Ux zkph2fZLqdNzs#{Vxuz>`u623`TPEjDZ0sjQE8jsFxX>gY>HTWAY_Qbmj=Cs0TWZ`iLq=SHG#~774F3}f_Iq=)jlInRkwj+L- z>695%<|3dfBVx50pO@W{%Hv}3Z|J_nKfIP?ExAkF-6YW?j?7~1y7dVra?R}z(Floy z5w&=~h_;SkSHnJd-g^y2Iqz`!<2yr(S~ehoYCVddGEzM$7`YaP+KZ5@QeX^rFfxIW z4U9}(K=~F6mkn$|2nPG^B*VfW*K!Cj9dB3zXTHtz`= z7FFc2cRc#=jupHCsqo&S$NhS(*azNU!RfEU2}sDs)}{s&KFH;anJ)h9pZmi*DPUFe zuPK)MEFa||wHSYCYWz^nuFTS zy)3VzTU>C=oGuj4ingzxKu)s(PMP=~Ul;1@F?}7uSA)Lp*Vh4jE!5X-`pPn|awJNY zJ(R~}pA>@s=}u@qlof2 z%rsCenLIK$QkilI*1p2ef!M>EL+e=Vv1b5M=Ub=iDM8TsCb?@-bW~_1PISx@43?sf zksV<jA;bg-KG|7Y+g}F($hl>FgD5)+5@U<%#l~-g$`%g%*UD)qr7AmJPK?F=Ll2EvFxYvrUNwDwW0$kc=IqYf86T|5;#Wc;uAnS$GB7wW^%7aYlOSG z3|5yonKx?T^hzCe8`Xs%#qMrdI8R=&1I$jgn0eCOq4C##&t5P?P~v+(8nMRAl~iH= z$;9CIUE;L(Z&Q+;O0o#Pn07ZWTqu)0&T#`>(z_L0FV_tHSW5Q#Mlwk8Fo0<;7XOgh zvfG-sjd@kJ8g2xkma%suKmH&!)zO)Q)twuYuQTuD`bPWaP#Td@Jp}~?W2jrF8Vo~A zOq$3lr(O|qF8j3gWFGlDV7K_OC!5ft7J|Q?8TP`t{Ar%7`ms-3oTzu{%_aD>*0C!I zu&C=Kj+*bSOqtWqClhC+%w?EZ#Nr`a&0rr>d)|V)|7sty2X-|KWMu#F@!seAc=ppU z8OIK3YEkU}m@uWGFL7g<%GtNwcCXd0a#%J#j2;zYwNYa`5l~9ldNWV$>{;*ZM^exp z3`XjmM&xdlEE_A%f6?Iy)7`e`J|X6=T8s<->xUD&ssdX=)#{L+cGn7u!@6jcXaats z6T(BB!qa?)&4h@WsL0l(|`-Nx??exLKZlz634*gAe2yl;i=Fq`^u%M|xB;_Onv`D=}` zYQXow(i9NqE7?2`#QVq{NH!96yb@kwq{q*-PbeR`y z>~=5jlZri1psmEXRT86*-QSvtliLGjI|vRtw7W_qETg$h)rNHe>M_BBb>zJH^vvxNSi2e)yn|LE-kEug! zM)qENP{Y1yR%<3ZvZ5-oxTC#%cfUwjHW2i_=ZK@3V$6sngE_-o^9L(HzaFeDVDeUG zI=bCF|SWGLNEL8WgEl%jyRu z&SNClSWAMFY}VaYx6t3ChBFCEoI(aqp<Z*4z(G!(C1d?5mnzi$U;pEh(T9q z`Z72FlD3lt-;G0P$@A}nIJDGiQmsC`C8Z&3rUFyKMy7LGiAiG1ViUp@k06>z_X#9lMD%swd+xcPs=cPj}}N|=~dBxO%GCd>uMLl z(pngWzh|R|d;6$Ilx-~Up!YQ>?drM1#2%m!)T=qk@(z582Sob{h*}7?PGEDY>cL(H zDzM?~|HD-i?**wpA+?3sWcreh{XfOyKeDF&fPfy%A@6rj28k2>%<&uVVH%I!40tK% ztj(;O-+u@Y^M)Wj<|j@Z8^4I;S}rn=d;m8SS+QQQ_>JK(FlO z{`o%Ob#L|lmgv^LdH)(7C27%jk^8$?;vFA*RD5&p zw(V{z0BORYW;XE8Pf%Y=xtdcCx2XT~UQkET?FlQ(SYZ(rf_S*U^N#dZTD*KQ6Pih8*rcQ)m%MEv>fx>#x;$1s&4Tbzh$WU!K56z ze^chr^f1QTvLCQSPIA6OeHhP&|Xcw_#Kcyy7si!G4u65V5?;A@)uhl zDIm){2|Z!Vhp+OhkpH6x*%P?tWg>&-Sq>^{o}7o&vu{8;R%wsg+3GnZWu)5A%=~!@ z=9dBpTr!9D66UBm%zl!Ud22V>h%ku-KIXSlBkI_T1?7;$g(--R0))fxb?F)>c4fQ( znymj-fe|SQ2N3|Cs>@n6G|ht=k-ZK94@Q@ zU}C|>Z0;RFmoso-=}D^<$`!=5U@OzlwbNsgOdzatG{Ni!yQe%(K zNyp-&?-Dsl`1i)6N0-xsUU77J9-3Lm^DN2<2=h`4sml~uNMAAUIKs3%3E4?J2^S*X zeFI$qL@Xsw;OKTMH!NA7t*G5Kxc`ZQSZlDDN$>_?#mp5N?=f@0dmc&0OcOGA!a7?q zx46hX@7hRhAWoBj?(1DMexZ7Lek|^TWyj*vgkmDt2lw&x&YoMfj;4}_$mtvL;XcD` zxBOl_vax`j>;8^+o{y%7FgsXBV<0gF1Bq#@sw%a3#XzDuSygEx@$rKAWJN~sVGS4U z-^qA4fX(eKMl1~OPF$MF@E77V!wAw^C8mccDdxQ^d(b>F#(Xs;0 z(6J6DNdZYta7n1;We8c-&H`i>u7|7#Q2aE>=^(S4`O_MwgJQ`+ut&X+{#MFZme5C{Kjz;YmN6~jwePHWXX$H!BR$(^JFW7} zL|AOut(e(&`5oq1*~5L!@81zAu-$_gXw7wEx5!+_nu3fDlKYXrvXM|E?JQpCIAkWp zqnVMB1jEnTUO@xiCT15$=FA5WX1(r~W3m92J$drU>(*vZgmidNkX?4}Hj`MaXuaT= z$Zm5t`TY_)O_4PLaaKYgvfH!}Eq8!;7+HChrSe1A(lCQiPvPNbA<(r?Qgeo)_O%}< zE`Y4=yn~eN^l-GKE|LLNLYn0}wam&1sO=aFX1Dn>0wDMQkR!#AWW0^+G>=L;q!IpL z6XhyVw@bKrBobcDsGV`GVe*-xV)2h|S0Zm~C3MVP{oW|O_=E{hrk!2z+sy88e@qtHxnoVu1To!u5~`Q^Jdsc-UI*eI@;wJZt#PRaJ{o;!GdklzM=pYl7Ecs*6zIrP!U{<+If5?RK~mkn_7BlS+)|43P}CHEOl zJUo;%LuV1y+lxBNMLnyiy=H)-cEOpIE89j9j=zbSgm3l2w@S8%nXuBfd109n6JutE z!hY|C4R>KS-5M`!o(r3(bju0z=A4gF@{2vi%mu_Gt`cVjgPXL_woG=Of-!`^=7SZy z>`0y`@r$69D5+5=-mayyR*5n5`zk_Ztz;fHc99LPO1O`u%4>t6wBfg;)=M0%F+Zt?*Rm;ga&bH?Gm!?I> zWM_=YOPib**|?8w%_XU}HLydO*5t|3=kZOJ0hF=nBFp@T`gFVc}Xq}g_aI}ID@puxwM*q`8t)f ziGdGu9@pf$2s_I0r|5v#y@Y>~R(lB_>&fcha~pt&`lg99Y?{7@amdY_jDjIQoDZlC z0v>E~yt0>md{c+cW9E6@6O-YRwJy1EBQdyXQ{qOK4@899tx7xaVfof+>;Z7G0KVY> z{($%MH9s&mQ)Tkm_xgiUqCmUpFZP3QtaCTtr)~i!nMXpY74w;~82>*LC$SbL@c(mH za-!Z7g|k%<^H_bo%&Bj{zOnu(va%9LUV;CnXSqP6l9-mW^go1w#N|U#vw}B&F3*vq zS*zGe^XW4b7H#vsegH7}>aX&?AL5&n_*rHhCP;Z_Vmt9A>LQN1W_Ozw#Rm zMqXKOSoE1Yi1W5I<_6K$jGJwBt4m#q*-aw-!L*g-N!=TnyZl#FIj-Z(T5#_+xBgOd z3*xgruDO%R$2Q@3Fjt}951{I+Z}5cx5*@@Lgk%-Rv%LL)f$>{@%35~N3fcgMv45mA z&m^D|KS6y7*&X<&*hh@T4<=Gq(6F`73By9QokKeJ$CuC)LB6ZWC-koWk#g;1W=)w- zZV7}oP<(_1+8Sbz|(&`|}(wZFAST-d08VMQW z)?nG@&ML0RY&u;Sgma-P>*983D>Q+R0bEVyn*+cGEz|+-YvLW0F6-BIG;iIq@dY8> zHfd!k3ln>E)CYBuG99J&%4s*ZyRd@^%YD3L&`oB4B=^{A-VeUX^s?_RZ3{Q1b>ngG zjlzS|FFJPc`t6X}#c~^gJtPtqx4tR(5zymlmHvIr-Q*xj4A$agHKp_p)&~Dfnj7hT ztYRzCF=Owh<}K8V^$%+u04Ly%d&Xd&)bF7*8?cH1FE#Q>o)}R8w}ZjRF+dtarsRdT z$Lwn!Lm_5jD*)$=A#vGh0ZN<$FyzE$W&Q!w0V)#amw{x2@F%UTj~;_tZ+~dkUgU z3-@P((4qV%rL7PuCwZ#IW5`;OXJ&zi%mUt&lajpga&c3VUA%2khBbg({I>6tAD-|0 z8QcCw%&jN{STC!F@2aZb@M|20*YDzgU9@aa9VZfUZ+UM0jlX56+kVKbs^4alblN24 zd+UnJ4px#oToQUTlU87v$+!epYZEY`wyud!`_0-pR6Tbd>TPT1uS1Bd^`1)aOztL! z1%}!JCS-jf1Zkq%)E_0b@AW>j;MtV-y?Pg{o6KQM1+mrg*MDxFca}u9;+`9O-Gr6I zM=&a%E_3!9b~ST)@glCtY^O6Ndl%9YFgtlYZqv1P&qv>=duDgioCg_P?BNMU-hHihi8ZWcDfb(m zD5o>-X3-AuiTV;8nvz6GYzhM?3 zuQknu-JJ-*w`{Yyj*JXXIsUQIoprQzIze?hcQr%$I$f}mi}wtT#*KC~CRl2Y#{`lU zrUs`Sk^RLo)nHi4FoW{)H80bxc!3R!@ZhQq@EFOg;%Hl8mM5{Cbax3k4tdfV>Sx)~ z8s2Q*SLWf1Ju_OG9n-0L{Cv2xz?R9Ljf)>nb!{RoXT?s@mi4uH(P`X}wwOcE#cwRl zh<-k)xScibn>U%$e+Fzig)BIyH-97(edF;RH`Z9Ma=^cLUCX3`yhK)AOI^XIV)#wR z(r%3!bw=0E4%YRv;vK^Y5_>XF^1=a}=uMl%}{fh499Iq&NM06V|b-RrHEU}trpKt#AbR)adwJa=@ zi;a>(QD(sfF>_4B^Vcl`b!Tp-MHlBqu^L6!cwJ#Ae6aJ!W2%2Bvaxp-3|N<55^7HL zoi;UER;bGm#J?|kK1cgpEU8sUI188gaM%(XUx|+q(f_}V$FGUvy}I}^K`qFo9B}?b z(u=G608bvcofP}Z1B`nI$FwRxUFvvcZ~A;7Ox-`4^eo`Kqe&A;Xz3DdN?&a(ZHrd2 zu8;`j&%unOJTpky%kt`;`7~+P&>l9AH|OW!`~DEPg?#2qhKMxgSqVmS`ptYREw{m| zjV-?u8L|^J+TrR~dHza=GUKY<{FQ~AFFJgNzA#cz>79GMhh!=B*2PB9oVmm0Mk6JG zWuq}#369aRj=?NBe)KOUJ)N^U8fg|?(MFT4fxDp6%0M5sj;S=UW6&Cf@Eph z>9f2zX|uZHXd4Z0_MEwVt3(@3ImKn8o6d}uReE!70mo82cQ`Oud|%v5RcOXMX5J6U z7AY%{hm*3=@F#+WlJ8T4ayi!Ic~jGYCeBuuGC@|F*KT5xpkU|!bBtfsF*5q+>vfYu zDa9r{K%#%13yPB`k%?XXUjx5hj^Cb~LI(w%VAme82WvzZ+gY%S4qQF`K3{S}4>IrF zLQgNqSyi6B5|;1e-anEgrN7U`*-DR0sSX4(lVOON&A-L*&1EM zeQ7LvYU-!_(O;5r>?o_{>+~hLV3<;`(YnF?C61P>X5CJGbnOLJRfAY2ML2lgg$s@z zRh=jl)IjEU;x69a-}Cw6eWKlqZ0U~%r6;A}V!d5UZD!WqToIZeHv z%n~Q<*_t20n3zyP&1S4$gqSOQjWSv`$j%)aH;uniKiAYh{it74k!RP&azjUiyi2$@ zmhW(1JN1y^+^sgb4CmC!@)pIcofkL(+N}>c0m@_Xs+C=57;@Aqw5EPVkTw1)(1QF- zeoL?JhZCXR&*&9bKw)@a?vH*;qT=xGC0W4XiWT+_*=Ng+j?4Lpr6w7Ih4(ifoO!FO>VkBlu4A%KhQP;`u?O5NKfRk43GP;Z!NMal~FuTcMrHkJ+5IQKD5 zK`GE9<^kz&S-TT5_FK>!B`{a9lwGxlla7i>_N{Zz8_m{%5EUi${nY)RVKsvZZt+d zh>prk4!~~wJh3U=)0Q=ayTUxa`0R4&qs|V68?Gp^j;8EClvO&T5bapoOmw7I>(tD3 zyHNC4Q)Tmc)86Fz?8oW8iY$XU5OZ~}){FbLXBg5U5Z|Vtvb1RLNLg0o@RnHrXlzLP zSzWoI(4u!DrwJkkrH4nWvLXX@aHa|-n-i((qiWFImZ}aET9L}Ed-RO0uCAb0w(i}3m-dR#6L+j*Kpdzd)-{vJ9Pt?K!)k0XG89dX zd%A4%o4v9k?y5460E*LwB4q7x+CSC?9anTsHO=;D&{R{8VZpMmg&1N~%w*AM%vQGl zM7#}8_{5vcs-_Xbi!CbVqUFhCV04miZes^@*q?{BndhEOCfC{XwuwU_qP@RHG2NU) z$>trt*V(J>U(=fmtjq&!j;;&Qg(mBlyjdmQAC>QF>`~X*ONj3c5?@bZe-P9+f*1C$ zOtXp3z~&Tu)7Ja=wwx$@(;8=(e{v?(mGZMY_e#3kxuhgy797k#*upv|qvfNm4xJH{ zK=h7NKxpBjWbz)NOTeZ=0zPadKsQwT0dFWkRSl5JrtnyNiicFRO?2^NbjEtl^PWHO zp7XtDqxWp`o?-8Kwf9`$Jr{b)wJa;@t#Y)=cV3rhWEV8d(QNp zv%F`m_pI}tmwV58?>XChUg15j^qvjg^D6H-$9vB8o|WG7T<dscbRYVTR&J*Rrl zY2NcZ?>XIjp6@*`@SYcX&x^e0#oqH0?^)tKM|sau?^)(OM|;n5?^)qJ$9T`N-gBJy zJjZ*E_ns5H=S1&0$$L)ro+o?HQ@rP?-gB7u9PT|&^PZ=B&ojK|2=DoQ?|G*8EcTuw zz2{lp^MAbO+1|6zdmiCEkMy2Lc~9+ah)$38p2v94W4-5b-t&0xd4l&G;ys6Y&lA1p zNj#Z%#6wPb+8>k2td*(bWdsqi_>oK9AZAWDQPF9!v4p4fsxF(`Fn2zhM{Nxymm-VZ zPxycOQ@nVM4DctMQ4%_j--Y}xLTs@;<_N+1UXUwagJu~x} z{|sC4|5w<9_JKWlUhVuDO|$3Dp$>{MF?UW=J1g76v~hJkN&EJ(Fec5os&@54zSDB-cUk?6`Hi(r z7AiduT77eOc~wo{p_aNta(>Wnmf<_Z|XJgs#q< zW;9;uKKv-c3Gkxa2cT`Pz7~#s1+ua_$a=~EOonzli z{deV?Kew@wcm>(_pzzf@DIxVQ=eh3h4&plb$)A}{()_2fbKH2&3QWL2j9)eHX`yeD zW8WAR%B}Y6Ir*|HYG*bHe(!w)g@mDiP$)nQQMhdcX>)VOLA!GFr*HLbg7;Yt%c`1kH!uC4!%z@Yn2qy}j`{ z8cs!PC%3)bGeue`%W}Qyypqtm?W00%{8AyLhkA{zoqc(I(=3WGM27y_GeJfuQ!GKu zWD8N-dPavbLs^#V2>yk{E#&9@Sq!s6nN_o|t=&QPHALOpGkbHdP?n`z_}K7RkkbN~ zu+Mi1-vz|{x3+JhjeL5#gZE4gZQu)DZ~LK=)Wn(HO`I8013vX01}6Mc8i)d21BxH0 zf$!bX9j~b*EtDy~A+EHJsJ4`7RU_T2pxVa}*O3yhVlqNm(`L`&0?M}G8}_OHKHnvL zYdrn8`d|2dcm0?1-pjFv)f33y+xt*iYJv3b7D#t3@BuBr&u;9Xw~^+33p3R#Y+J}D$#KfgkSq0Lk%TMS*@x|2p?l1{em10p??sR?&1 zl!WFbxn-Z|j8Fzd7j0_;#|-N*@$&h#jZA+tE_XAG=I5t~?8`*fGy^s~=W?d6Dd9PD zc*~yGSUzW#UVILi-A;dX!zsVIc1}~MS9Y(eT1~FKs~v|_KTtq-I{O*wS6MrMCK*Q0 zol~1xdQDSpsLzzzS@UNsm^61m@6x$*nH=ZrpEf0{dJ0@NJ!4|y<-Oc}bD+)7 zyxDudmuCa{9wf~OFU-%Yr{=Lt!n6H(3?3w$dj|okkpbHtlb70dTl~$@sOETns3&c> ztw)P)i+^v0Yte1-a^5y?-ki3H8IRv!exCvNU;MtSO^+d7t)#zb+x>i<$xnalcpC3r z-!JmMjo(n-|67|D_AL!n@>`Qz%0*|TA+_m#0%CE{oF~qePK$IUFC@O1A0pT6nN8vO zwX}=MrCq!LVfF2HseYlmzb)u}{+&m>loIP8(El_yOIBC^93J^E z@YfM9YRu;OpWx@`(H8vntDacfG^1{IL#-`gb^ePz@n5;m_d>o;7JPb6@c$kC-T`dQ zZ=&DLy!-Tf>3~v8za2a~`CYibqhG^w(*dQSSp!Q$qTk9v&^^E359UdJ(eLtuN<$M! zGnO==0>1h63Gk1$3D@4;0jkPo(Ck6DyZ5ONu|57eiI?%fe`~*+3rj;C{Bo*GXE$9n zW1inX)i3pIzb*TGZ{T~R;QyEQYaY_weoyhP_FHpeX=u<%uKhNj41Jzb8fxRG@n3K% zw0e4JDD!_xL)-Xi{Qv%J+Np#*)$IYBO$I;-LePCz5+_S7M;)nkq+Awo; zcN-4p-KW8uc^41e$}?168t~A3-o-=LjBzyhAkRnmiHAN2j(!_fSI}OB@8*|1wiM}D zxJTQBC-SjARE2M~nslqhSvRuQZ|YTPj=@}&dr0=F+rI6nc#Y@(#xD%%@|YVN=Z2X^ zC(f7yyOJ;` zmbjFSKyCa2kA1+kUM8EN}221YdQ<^K!y*^5s50Rz_e% zwdI+)D0opbzh=)5mfP5pLPgwmf!$pa7|czlWJa*@(oV_&kxHDJ&BLoNfX*pwWjj7* zS}&pFyJpzaisP{>_=H@yc0 zcl_AwKuN7C-u`NL6?Y}aQpT>9h1^+ibNLs|i@yjp4Oi(UxM=NUt5r4E24QJtqJX`! zM26cii-r{ag%`b>ol+mgyMZng*~FDnQq3tyC3CvWkUSy&~|3mBykdjhfYGnmJPJ=ii}qW4YG#OnaZ{u}Y1*xX*b zodF01%I8!pew0OuU5DU|kfRL@Grgi8C7p`Cd!M3JRzb2NlVZIR7j&1nD7D1jcqJ~d zB|dben!y#QJtJG*Gzx27Y>_SZ$~*M6psJ4gdb2~*bToS=jad6M4UnPb;(pv^0EKI( z3dg1prV@pNo$C4`fT*%v?7hX}r`w{v$_8bVxx8!bPWXX&Yk@PsrMfQ!#d8o{N9#Jx zmly@PYqjy%SBz<>pIAD zxZG*(0j7Bu7R_eY#}0{gAQ6kNVi+g3`27N$q%<`%8?27W+SEyYnb|OL#{9W+=kRL7 zT$(ZSYisAEd{1teeRZw-;td8%eN zTy5QY+dOh9F|&b{LJt@dW?uzV;qJa4BsFdui~O0gQ_9%=*UJGkU-o z^@A`0%H!&1^=tN9I#Jqy#mY6V(q29XtLn;Y9Qc&HW%FxiTxGvqnu)d2!BRCFCOLFw z!>E}}G+61}`K*^*cy3B~*^GJ8rlzK!H*eb9`BzrWn=#X?i^HoFb>QXm=Z5E~SyIX@ zZJJYIlcvBRY%Hpk2B}wE+J3f7!Vx{S<)`{PoC&M0T`2iTVK~|WXAi5CaF^E8=z3{! z8A@6zJZm3!i0mvwYvfeb8Qxc*~AKW`Nz&} zn$TTW*%8ic@XPaC-j#>9mXx@jxG)gE9hcGuj_$_IsheARB}r|2x$+g(jlZMCiM4aW zE{#tcbHb%FAOV}t)kkT9I;Fr<_`dKaL6Z^1FU_VOCA;<#%vhxYrcyCok@&y%kPW{7GlLt{C>jSaxyE*4gkH z3nCRK zSYxJ?myZuZyUVVwnKFJ{)z~0L=~c$q^3o~g(}G}&tHMW38C5#2yLv%*>8J_S`-ZD- zQ);TJ#*La301|xlbM@F!-)igq2`?X2Rb5^)WpZVCkR@o>$>kG+z$*qkVg3mnY`)y1 z1Mhp0_l@C3%Z9ron@){>{mdXp<_UGp7x!I^5zX?5Ft}pmR5Ke2K$uy?fzU`<=CVaa zc~7Nd=#bewzE2un#Pid_dQIo`K=+!->p|`{d)4Tofh)`U;(UB0p5O|eCx2$hMEjjl6w|2aF2@9E>&C z_IXxz-(2j;+?=OCD!?BjS6^Xx%lUyqSta7G(AqRe)^S3qgoXnf&~=#CE|jF4yZo0_ zTcXM>WR|=&4duLdqcC?o#>`?b{LJofj>6S+Ib_OY_{n)+0Bmu9q9q*i<=#cIma^l9 zT_$nWyafWuC?H9$8D@o}!Iw!c3nFLRNPG*~$gUZR^u)=;JPunqc@e`ju3Vj$7yZhk z3xuh3Twx>EdFMV=>hoW_D!tr|I(B#-=KX2Lpwz8isdteh7Qexks$&IHiz^2;<={%j zinjaFWVVc!4UgEf!jD91)s?kY)p6!CmC7tvkqe9t{9evOFG;A?|<$Pn%JGx zPxPtZdijy^Hi?EC^ly{?Z3fbwlEFBD-B`Xw1fIa?Y|Cn(x`_1LTiRBZB?qr8f3vmxDeB+y{2^w@YzhBQt-ldW%=};3<7@}FmakiXl-P5B#n!Bo zL!)!Blt~P3Eq}zz_<6me9#Pcyh-xo?JJgQ#TzmOjIuW=5q!=o__+=+@+RNWbXRwsN zlg3~ve+NUMwo3D{ObxY~2@Z|bSA&FWpv}0Jh{bzdN|~Gq>*7>G&_#<#1RCqLi))4= z^2g%uGBk82nmyxX`HbW=U-GD$+OlD*HI?G=N#=gKN04rPhD4`&p=H3w?xD(v8mHtV8}fH%GmVB3D) zS}%qFndim-;Pm2uEp!c}W^Vb?jm={A)_U+iFZ{6XaL4~_fx0_)mE(VR&|v|!9!+ZT zxXI*>#ZN<@kiz38+Q=?*s*N0EBRwA1n{(mc;&J!!=P@|?u_upv7X~c0{ZKc0md9D_ zj;A>Sl-7BrK1B}vKfueJUyal;(BX}jm{|e=1!Ew>2aaaln6d4N8X<+pg%`T!PqUsf zYU<~+f#|iN<8R>+G;!`@B?Y;UXO^#|r&HarX`q+nn=LS8R0}#JYYbMF`!I=Xfayy4 z^~b8f`zUlAlPJlS`eL<2hK^@MM$s;{m@eDiYF=Sff;w}<)HB7)S9-j>bgFo{#z#qk zquUNkNg{1b*+l0#mTnO`yX$V-${QE9t+;0oXA_L3NhG7aG&ay_rRM3T^}Up7X?=}o z-LBL>++}Iqqw~|C$?u}`6AAa}+-AF(Ch%l{f2kthJVO3M75?xEG%jjp9_i`7J$AfWA=y@GdqA*|YIe@EMnCe+*> zP3R(;t=7kjBMQco?Ne_K=%#-eYK#667<1CXS=?Wg!-;wI?YG842M|){`zPTju6IAf z22<+3Kd~DfXf*BV%8`jG`gkvqqO;% zO??u13hhV?CM!%Ql*r=+xxhMpHt8;dhSXx@4U~oQ4`a%q>V1aPX3%noR)c6P{-g7H z4k^}J-#I?cguJ6MCXSquY2j=xTFInM)H>~^IG}u;P4f?)WI=<_uTGeAPbBkP>zEOh z=5Ni`@YG79&(hVX5*Oq|mgH=#$j5lh1xK`Yb*QpE5~s8jZ=616`vE{p_gZ>dJH@Nus03L9P<#7cI>_3@{PjP zg*`Mi0bxVOU^*s~fHSeiKJ(2Eo~;$s?{)OA{?V9>x?sSL1t0@fdcf4XDHn4esk%LH z)q#)vonaI+XH&qc1J~(;F?EWHt16rlot86XS|*R|Ap`l(8xO0}p2EG3L#7fiH9OjC z$QGWN_?Xefy=&F?7JAMlsP<&Z9|~zfr8U3f=k!*}SydKU*AvA_3NR|b4a|Z7xmo|P z$lZMjK@@3Y^P*YoKeG~HO2{c^JFL?ify7y{ijjfJ$M7LzT>74qZUGsE zui_UW-!$W{Y-AdS`md(%DWk@ND6o?vz_-6G{f7WANh|NN2tS56B!vGLY0{1`9o@1x zTa@2}YP$P2I2$4S)WP=Fwp9mqIXv2#OPFDL@vF$3%HW)Cfp0YD3b=(gkS2hYFvPG9 z6AbkYOOfbii<;UMrHt*1edBIa9CL<^4CGml=6`*Sc2#QXSAOJ6A}!ZdYG2HHF0qF- zwliXbiT}r>a|7fT*J?@l5^F5$`9rIB)(AQf&Y)=~(j}{)faG{@P|YUTjwPL!=ae23 zaQ4MoD@i8MhkMTt-W@+!bzpYFQqeEye>d8Gd7WkI;!%=0Xp7d7MfcqooxoCy1N4>P zJpFt`9AF0nYSn?&4$M@tc_Zl8!13Buu)cHr-QjW-l7R7N)-ZQhdf6}S(anx;!W29{ zw(7t(m-X*L)6oSjKsTx^t3&c;pdBvV(*%Y6cM|;*oP{*o^v%h@($bzD~ zvOmU{DArW9CzjU4trn_oe#?@~ko=tOa_;jo3y~(OUd4;eW6b1xV(Cy_yO{)*dt#aP zeU5$4w(mFb-uL3{l^17=@9+_l4*S$Vhdn%5#e!O4Cj?%+=bMXIQo$c>+I%xvU$$R9 zqk+U?4rM9GC4AjuW!Huc|lWr0DO*OcZs(tNqa0cumKG@I&an@aR8 zPbS&vO$X35-=y^ZA_qoelK4y;|Ft6=3*f>Y@!2;1%M@Z7*&QF%y`$?ehBd!?nSR=j z#g}VOg|*h8MB)0TRS;CO77)h+49RXbm87MEha+6@nT zi^UCx67#Q?1%=_QuYKF8>Ky!8&|c-6E3c3u82uFS=xqjZiZ4w*xOI|tccpof`fAy7 z86e)HGtmLq+pX|v&OYW>5Hp7;(p6l(8Nd35;o09b*rNPA8GFbA9Zo{ac?d_kVpasjfxsIYLuubXwj$* zBpX0MR+2!xfTAQWX}Abk#d5U^Ez6pgr;k?K>QgDUr7f-2S_MlrvNS#0w#Y`r}z+S>2wt}HhvyP1>N#4f#_ z$TRQ-@o9x^yyLajU}-EmDl>28Zz!T{T4~Rc?@>Yts@1~$QWF`PeCXd0hyca!g zmmf0!wnMvLQ#s;2fAC>fZVzlcGw_RmxtR@xl#a^NKyx3NAI3I<#r#V6mGaXJLmin> z6qg#2f4}eM##Xe{Rb=P$ELxK2D7u`1c}*wT-OS!&3uxUfV!Q?s2GoZ4klC@2rZDt0 zzeNc`HUam2)esJ~CAL&xa;@~L2qWQ88%CM&Ao{-wIf9VrlHJ@DZDeK?NY)Q%1XU*q z^D`6rnhUileu&!wiCW-~Kz?WnOH+lDdOQV(OR_2hO3^zmX(`Si1thsw?%ptq5?{>L zvM1aYSY@;J7XJAm{g+x%6=)!#U+?D=wUS6MH`Ux~U3+j9{b_UkZ zKWv`t@Z|YpM%P}nNpZ|3X`*AnI40}m)xm=fino*m>^n#?-b!UlWO@pgi8U zCA%E^gDu$^Bc3r07jq51uOdZ*rFdmK9ZQ%u99RcJ@+_>0UE>#yAcXz8D2vyhvsdSB zd)nm0vR9A4{k`O|)#trJ(5m)TZ#-@CpME1}RU$T&m=3$L+55nqyo1cKu)3jrrM`hI z93SJz547Cf&398doie3g5m=bNGesa*!F!(%eRyvSTO>OB7Fxt(*!g*Pt|m*%O63kU z=4g(~a$-6o<&@I;zM(&RmEt8ZDca*xg5FPiKJuo63g z*p`(;U9QG{Hf$7O$rF3?>~?iVlQ}L=A@Qm8olBFIi;gS@6DB&YtRnYYEw{+JZe;VANs_G~Y(XmjE;PRbrC;)Q*7E{xkwzA@el~;Nh0V=eBTER>$2s zHH!$(d%PmEr82r#;W=LTO@vc^Myi3ovJLD~17BkuCOUoLL#M0F zRV0DPd|Lux%q=S$$20ecvr-*frUV zecodidfrZr&0{=YQOkp`brZd=x0W=qSabuINwi~?UNJ=i-fy>h@4yiLocvrq4#5^dk+MkGAi>RI@MKh+k=;<<2G2lHG z+!bB2ON8PX5+6|hM<4s;H_B*B$P7mL6sai9G7U3H{bkekE*n-hZO`J4EJ9t@_$f;+XK-s?^+DB?o&e1BFjf7p%&_E-(K zEE6f$IF`8-37pv+h@O^-+gfV3LnWJMz>+P&J1vdBEo9zCPqZcYp!IHtZo(U%c5mK8 z)9%W9Jb0hRGxBiWLy-;m9?g4*2A}9wlbK~(wL`7?OIoXTp!NVEo|QoJA&#B^3yWHY ztJvUHn5>*G%qiA~qr+-15WmMdwzA!|hE@k3|dhs7AUIUk-kyvJv%utejDZn@uAjS?4Fkr5?@uO`K ztOqgMkR7#(yRjW)k`Zk!5XFQ}dq%^E{AfmIJfjT%VoWw(eT`(1FpxIL936>kiVJHR zYeHrj9c97yGv^?1PJT7oRlc~8ou#m3{vb4@TAI;cl71lyQpr=|2{aB$@R`}?LHK0J zsVxB&DLz;(%Zax|O=ff6xTqO8f6&>T#Lpj+Jh7p@VqiufS*&k1X61^K$I6M46V8DR z`(d?HwZ!#_@1iMUF)lc@J%i zT~QF-TB9w*W5_iu(Ysm6t}fZ)#H!rK?5>!rX8_FItS&8E_`T*LG%-BXeNm6U zQXm94!NNx6=(-K97b{l7y#hCzt7WfZinb9>nv(pEGFG{C?Es&k1qv`Agsmpb8K10M(?CR?VHiGAGvT2RZd!h zFEZs)CN*C_SL<>EUg<5GuUYSASabKYc&yD|p~UOB6X;NGW2Sx23lZZsgHlaTV?I(C zYu|mlnc@wR(KvwvW5GQZ(W!(BQYEmY%v~`4?fULCG3(q*7tK=Z+#__qz&dy9i~?6_ zBAcozM9+$`*d1!j=WRL#ZMSlC8L7tjEq0(=kIoXN>Wl?>=xc|2;J`lak>AiB+{F&x z9(*|iEA=mKQs-fCvv1_bgL_tovRBn^SRKk)Rr{+3@Er&~G_WC7`)dmIOMJ9FxbbLm zwbX9dq_OJF%{tFusq5yg5);u1zg*6@RS%(OFwZa@aR z&1CCjc#Rorot=z2iMkrPgI{s(cwG@4 z9HNVA=BFdA3IWU=nP(Mx?Gi`4kiALU{$T7X!fbcpk{6DY-@oTzA6%vXfIn>Y;oxQG zstnbdJAme^d2^yJQ$4r4PL8D?2)DL;D`zy%U}~HU#jateV1; zhR=)@NvFX+d{XHr`@KzOiPx{EB|AV(j8r9^rb&Yl#|96`QN{@Y!+a3rbrAsFMuIAd zwD*nJzsygNuy9J~ZD0yc?w|san%k%|(ed|DKnE-n4+{U!Ms}HNY~*GenZhn&FRfW! zezI`lRWgZH6n}PYZV3+=Wtg)YMZVgzXjfVfFwL(X)TAotu@&&<#BkMqt*u}>>`u+M z*xbhjnhRG?E2v&QEgv+NYf+gv-9veV5nPrJy5xjo%XIph_+g8%{!&f(F}fmNQ=(kH z^T*t4N?occtBC|`%pBX49h|AT;A7=JS|=BWPHsM8Rp?|iQ0YK^B2{nQ^u(j&9Ed#^ zF1}XHoj-d z$8v|Za&%w=zx=c&ESNBBK{NF+j_wVUUd5q5p6@MmpzutJaU)`v{TL8DC*y5g_zj6= zy-g3m4Z5226T6?NBP|Q$EPHJA({!!P78CrfI;H7)Vx~*e*QJ@j%|*&Nur{DH&)75v zo|xy-yiPBvE9Xx(P3PJ!vB!U6({w(u*rj=rG^q(1PM97`(ukUcmk40a0ym+v=@3K33cqpoJe}ifO+PnEUGcd&GM;>V5L4AMAp7`b z>@q_hX3EXx@tF6U7%{%x+M-K6wTyQ28y1YUu*&%JmMSHVcqKONfX{Fh0+`g#A9`2Z zM!Ut=G{1V#{8LXEiOpcrGFOq)*c62XrP-toVhe_bpjW;c%V{yyCJtcV=bMzlZL$rC!R2Zd<| zBrAaO0g>hgHgxk4e;9S0sYStxe#Im^#@aR0Co|Ku>ZLN?YbfhNive%8*@idiX7sfY ztz>4tqL*$*LKuh)V%&CXA>6}hZk@u`>Q5qi>9$mSCsS`00XFLtwpM?r+ow4$KF7_6 zMLvH#izYt6TD5k`y%C*9io-^fGmV+$Wt7U)AIRrxMs<{@G^5TTiO=)0$^>oZCDBYf zkcygAXqS@I-fyxy%L>GMw&8>(Th#IKsh%CIXP4Kdc@@1y?LY zTPa+)lkjH7g9h7hVB?VY50D*=r$HI?O0VONW0#`~{9%XUY}p;FD+qb5+C=-~JL+Ow zNLDz~1=qN>et4ml|M~$wXlabzhU6(YJEr3xXH!y`GE$n)06H@fyhrB% zFt_)JPur^t_L7}{vs~=M&XphXymnYp(=|K?!eF-9E?5}@i*8o49@B!LOW!3V9_cz{!v2pkxkZ!ewC zu2XrMoLEw!7S)Wtr(kqawv;^vmxKd_*9gCUpuAtW&G=-5%a(P9pBBaC49 z6t&&3qDT8MtwPUB6`F$Z;b}8IM_>#fK5{yf9bw^{twIpY_ydGEAhtG@hs)i&EPgC_ z_=07z+7Ittw$~Hn*BE|`=Foog90)bh@gVT#@2?KuBL`^JTuX;(k$~nnxcKGqerCpL z?3{9L{moZR?n&g!ZbMFBAJWx55BFdU4QBwb{4bEGykl!Q

n`ttr4mr=#xpydp5b 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

I_5#LnR2+LD9&%65T@UrA!GYt^({P{Zv% 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

nQcRJOm3wy7exNabI(2@&EWM=YczMUW~o< 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

%|Y(L&=a_)3vu~KFGv3##MM+i`5 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/BlockInSector.dfm b/uFCoderAdvance_XE/BlockInSector.dfm deleted file mode 100644 index 2f80812..0000000 --- a/uFCoderAdvance_XE/BlockInSector.dfm +++ /dev/null @@ -1,1021 +0,0 @@ -object frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite - Left = 516 - Top = 235 - Width = 529 - Height = 427 - Caption = 'BlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object stbBlockInSectorReadWrite: TStatusBar - Left = 0 - Top = 369 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockInSectorReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 312 - ActivePage = tabBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabBlockInSectorRead: TTabSheet - Caption = 'BlockInSector Read' - object pnlBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadData: TLabel - Left = 9 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBlockInSectorRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadData: TEdit - Left = 8 - Top = 108 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadClick - end - object txtBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM1: TLabel - Left = 10 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM1: TEdit - Left = 9 - Top = 109 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM1Click - end - object txtBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM2: TLabel - Left = 9 - Top = 96 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM2: TEdit - Left = 8 - Top = 114 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM2Click - end - object txtBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataPK: TLabel - Left = 10 - Top = 97 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataPK: TEdit - Left = 9 - Top = 115 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadPKClick - end - object txtBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabBlockInSectorWrite: TTabSheet - Caption = 'BlockInSector Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISWWriteData: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddress: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddress: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 148 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteData: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddress: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object brnBlockInSectorWrite: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = brnBlockInSectorWriteClick - end - object txtBISWBlockAddress: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISWWriteDataAKM1: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label5: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 193 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM1: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM1: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM1: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM1Click - end - object txtBISWBlockAddressAKM1: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISWWriteDataAKM2: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectoAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 193 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM2: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM2: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM2: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM2Click - end - object txtBISWBlockAddressAKM2: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddressPK: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressPK: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataPK: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressPK: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWritePK: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWritePKClick - end - object txtBISWBlockAddressPK: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/BlockInSector.pas b/uFCoderAdvance_XE/BlockInSector.pas deleted file mode 100644 index e489ba3..0000000 --- a/uFCoderAdvance_XE/BlockInSector.pas +++ /dev/null @@ -1,624 +0,0 @@ -unit BlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder, StdCtrls, ExtCtrls, ComCtrls; - -type - TfrmBlockInSectorReadWrite = class(TForm) - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - lblHeader: TStaticText; - stbBlockInSectorReadWrite: TStatusBar; - pgBlockInSectorReadWrite: TPageControl; - tabBlockInSectorRead: TTabSheet; - pnlBlockInSectorRead: TPanel; - lblBISRSectorAddress: TLabel; - lblBISRReadData: TLabel; - lblBlockInSectorRead: TStaticText; - txtBISRSectorAddress: TEdit; - txtBISRReadData: TEdit; - btnBlockInSectorRead: TButton; - pnlBlockInSectorReadAKM1: TPanel; - lblBISRSectorAddressAKM1: TLabel; - lblBISRReadDataAKM1: TLabel; - lblBISRAKM1: TStaticText; - txtBISRSectorAddressAKM1: TEdit; - txtBISRReadDataAKM1: TEdit; - btnBlockInSectorReadAKM1: TButton; - pnlBlockInSectorReadAKM2: TPanel; - lblBISRSectorAddressAKM2: TLabel; - lblBISRReadDataAKM2: TLabel; - lblBRAKM2: TStaticText; - txtBISRSectorAddressAKM2: TEdit; - txtBISRReadDataAKM2: TEdit; - btnBlockInSectorReadAKM2: TButton; - pnlBlockReadPK: TPanel; - lblBISRSectorAddressPK: TLabel; - lblBISRReadDataPK: TLabel; - lblBRPK: TStaticText; - txtBISRSectorAddressPK: TEdit; - txtBISRReadDataPK: TEdit; - btnBlockInSectorReadPK: TButton; - tabBlockInSectorWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblBISWBlockWrite: TStaticText; - pnlBlockWriteAKM1: TPanel; - lblBISWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBISWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBISRBlockAddress: TLabel; - txtBISRBlockAddress: TEdit; - lblBISRBlockAddressAKM1: TLabel; - txtBISRBlockAddressAKM1: TEdit; - lblBISRBlockAddressAKM2: TLabel; - txtBISRBlockAddressAKM2: TEdit; - lblBISRBlockAddressPK: TLabel; - txtBISRBlockAddressPK: TEdit; - lblBISWWriteData: TLabel; - txtBISWWriteData: TEdit; - lblBISWSectorAddress: TLabel; - txtBISWSectorAddress: TEdit; - brnBlockInSectorWrite: TButton; - lblBISWBlockAddress: TLabel; - txtBISWBlockAddress: TEdit; - lblBISWWriteDataAKM1: TLabel; - txtBISWWriteDataAKM1: TEdit; - Label5: TLabel; - txtBISWSectorAddressAKM1: TEdit; - btnBlockInSectorWriteAKM1: TButton; - lblBISWBlockAddressAKM1: TLabel; - txtBISWBlockAddressAKM1: TEdit; - lblBISWWriteDataAKM2: TLabel; - txtBISWWriteDataAKM2: TEdit; - lblBISWSectoAddressAKM2: TLabel; - txtBISWSectorAddressAKM2: TEdit; - btnBlockInSectorWriteAKM2: TButton; - lblBISWBlockAddressAKM2: TLabel; - txtBISWBlockAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - txtBISWWriteDataPK: TEdit; - lblBISWSectorAddressPK: TLabel; - txtBISWSectorAddressPK: TEdit; - btnBlockInSectorWritePK: TButton; - lblBISWBlockAddressPK: TLabel; - txtBISWBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnBlockInSectorReadClick(Sender: TObject); - procedure btnBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnBlockInSectorReadPKClick(Sender: TObject); - procedure brnBlockInSectorWriteClick(Sender: TObject); - procedure btnBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnBlockInSectorWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmBlockInSectorReadWrite } - -procedure TfrmBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadClick(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddress.Text); - - iFResult:=BlockInSectorRead(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBISRReadData.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM1Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM1.Text); - - iFResult:=BlockInSectorRead_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM1.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM2Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM2.Text); - - iFResult:=BlockInSectorRead_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM2.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadPKClick(Sender: TObject); -var - pData, - pPKKEY :PByte; - baPKKey :array[0..5] of Byte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressPK.Text); - - iFResult:=BlockInSectorRead_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtBISRReadDataPK.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.brnBlockInSectorWriteClick(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddress.Text); - pData :=PByte(txtBISWWriteData.Text); - - iFResult:=BlockInSectorWrite(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM1.Text); - pData :=PByte(txtBISWWriteDataAKM1.Text); - - iFResult:=BlockInSectorWrite_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM2.Text); - pData :=PByte(txtBISWWriteDataAKM2.Text); - - iFResult:=BlockInSectorWrite_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - baPKKey :array[0..5] of Byte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bSectorAddress :=StrToInt(txtBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressPK.Text); - pData :=PByte(txtBISWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockInSectorWrite_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_XE/BlockInSector.~ddp b/uFCoderAdvance_XE/BlockInSector.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/BlockInSector.~dfm b/uFCoderAdvance_XE/BlockInSector.~dfm deleted file mode 100644 index 4e44f9b..0000000 --- a/uFCoderAdvance_XE/BlockInSector.~dfm +++ /dev/null @@ -1,1021 +0,0 @@ -object frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite - Left = 516 - Top = 235 - Width = 529 - Height = 427 - Caption = 'BlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 1 - end - object stbBlockInSectorReadWrite: TStatusBar - Left = 0 - Top = 370 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockInSectorReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 313 - ActivePage = tabBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabBlockInSectorRead: TTabSheet - Caption = 'BlockInSector Read' - object pnlBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadData: TLabel - Left = 9 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBlockInSectorRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadData: TEdit - Left = 8 - Top = 108 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadClick - end - object txtBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM1: TLabel - Left = 10 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM1: TEdit - Left = 9 - Top = 109 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM1Click - end - object txtBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataAKM2: TLabel - Left = 9 - Top = 96 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataAKM2: TEdit - Left = 8 - Top = 114 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadAKM2Click - end - object txtBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISRReadDataPK: TLabel - Left = 10 - Top = 97 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBISRReadDataPK: TEdit - Left = 9 - Top = 115 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockInSectorReadPKClick - end - object txtBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabBlockInSectorWrite: TTabSheet - Caption = 'BlockInSector Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBISWWriteData: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddress: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddress: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteData: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddress: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object brnBlockInSectorWrite: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = brnBlockInSectorWriteClick - end - object txtBISWBlockAddress: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBISWWriteDataAKM1: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label5: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM1: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM1: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM1: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM1Click - end - object txtBISWBlockAddressAKM1: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBISWWriteDataAKM2: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectoAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataAKM2: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressAKM2: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWriteAKM2: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWriteAKM2Click - end - object txtBISWBlockAddressAKM2: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 9 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISWSectorAddressPK: TLabel - Left = 8 - Top = 72 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblBISWBlockAddressPK: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtBISWWriteDataPK: TEdit - Left = 8 - Top = 40 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object txtBISWSectorAddressPK: TEdit - Left = 100 - Top = 69 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockInSectorWritePK: TButton - Left = 152 - Top = 69 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnBlockInSectorWritePKClick - end - object txtBISWBlockAddressPK: TEdit - Left = 100 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/BlockInSector.~pas b/uFCoderAdvance_XE/BlockInSector.~pas deleted file mode 100644 index 4c1b046..0000000 --- a/uFCoderAdvance_XE/BlockInSector.~pas +++ /dev/null @@ -1,624 +0,0 @@ -unit BlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Global,uFCoder1x, StdCtrls, ExtCtrls, ComCtrls; - -type - TfrmBlockInSectorReadWrite = class(TForm) - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - lblHeader: TStaticText; - stbBlockInSectorReadWrite: TStatusBar; - pgBlockInSectorReadWrite: TPageControl; - tabBlockInSectorRead: TTabSheet; - pnlBlockInSectorRead: TPanel; - lblBISRSectorAddress: TLabel; - lblBISRReadData: TLabel; - lblBlockInSectorRead: TStaticText; - txtBISRSectorAddress: TEdit; - txtBISRReadData: TEdit; - btnBlockInSectorRead: TButton; - pnlBlockInSectorReadAKM1: TPanel; - lblBISRSectorAddressAKM1: TLabel; - lblBISRReadDataAKM1: TLabel; - lblBISRAKM1: TStaticText; - txtBISRSectorAddressAKM1: TEdit; - txtBISRReadDataAKM1: TEdit; - btnBlockInSectorReadAKM1: TButton; - pnlBlockInSectorReadAKM2: TPanel; - lblBISRSectorAddressAKM2: TLabel; - lblBISRReadDataAKM2: TLabel; - lblBRAKM2: TStaticText; - txtBISRSectorAddressAKM2: TEdit; - txtBISRReadDataAKM2: TEdit; - btnBlockInSectorReadAKM2: TButton; - pnlBlockReadPK: TPanel; - lblBISRSectorAddressPK: TLabel; - lblBISRReadDataPK: TLabel; - lblBRPK: TStaticText; - txtBISRSectorAddressPK: TEdit; - txtBISRReadDataPK: TEdit; - btnBlockInSectorReadPK: TButton; - tabBlockInSectorWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblBISWBlockWrite: TStaticText; - pnlBlockWriteAKM1: TPanel; - lblBISWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBISWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBISRBlockAddress: TLabel; - txtBISRBlockAddress: TEdit; - lblBISRBlockAddressAKM1: TLabel; - txtBISRBlockAddressAKM1: TEdit; - lblBISRBlockAddressAKM2: TLabel; - txtBISRBlockAddressAKM2: TEdit; - lblBISRBlockAddressPK: TLabel; - txtBISRBlockAddressPK: TEdit; - lblBISWWriteData: TLabel; - txtBISWWriteData: TEdit; - lblBISWSectorAddress: TLabel; - txtBISWSectorAddress: TEdit; - brnBlockInSectorWrite: TButton; - lblBISWBlockAddress: TLabel; - txtBISWBlockAddress: TEdit; - lblBISWWriteDataAKM1: TLabel; - txtBISWWriteDataAKM1: TEdit; - Label5: TLabel; - txtBISWSectorAddressAKM1: TEdit; - btnBlockInSectorWriteAKM1: TButton; - lblBISWBlockAddressAKM1: TLabel; - txtBISWBlockAddressAKM1: TEdit; - lblBISWWriteDataAKM2: TLabel; - txtBISWWriteDataAKM2: TEdit; - lblBISWSectoAddressAKM2: TLabel; - txtBISWSectorAddressAKM2: TEdit; - btnBlockInSectorWriteAKM2: TButton; - lblBISWBlockAddressAKM2: TLabel; - txtBISWBlockAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - txtBISWWriteDataPK: TEdit; - lblBISWSectorAddressPK: TLabel; - txtBISWSectorAddressPK: TEdit; - btnBlockInSectorWritePK: TButton; - lblBISWBlockAddressPK: TLabel; - txtBISWBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnBlockInSectorReadClick(Sender: TObject); - procedure btnBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnBlockInSectorReadPKClick(Sender: TObject); - procedure brnBlockInSectorWriteClick(Sender: TObject); - procedure btnBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnBlockInSectorWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmBlockInSectorReadWrite: TfrmBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmBlockInSectorReadWrite } - -procedure TfrmBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadClick(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddress.Text); - - iFResult:=BlockInSectorRead(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBISRReadData.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM1Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM1.Text); - - iFResult:=BlockInSectorRead_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM1.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadAKM2Click(Sender: TObject); -var - pData :PByte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressAKM2.Text); - - iFResult:=BlockInSectorRead_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBISRReadDataAKM2.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorReadPKClick(Sender: TObject); -var - pData, - pPKKEY :PByte; - baPKKey :array[0..5] of Byte; - baReadBlock :array[0..15] of Char; - bSectorAddress, - bBlockAddress :Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - pData :=PByte(@baReadBlock); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - pData :=PByte(@baReadBlock); - bSectorAddress :=StrToInt(txtBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISRBlockAddressPK.Text); - - iFResult:=BlockInSectorRead_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtBISRReadDataPK.Text:=baReadBlock; - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.brnBlockInSectorWriteClick(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddress.Text); - pData :=PByte(txtBISWWriteData.Text); - - iFResult:=BlockInSectorWrite(pData,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM1.Text); - pData :=PByte(txtBISWWriteDataAKM1.Text); - - iFResult:=BlockInSectorWrite_AKM1(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bSectorAddress, - bBlockAddress, - bAuthMode :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressAKM2.Text); - pData :=PByte(txtBISWWriteDataAKM2.Text); - - iFResult:=BlockInSectorWrite_AKM2(pData,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockInSectorReadWrite.btnBlockInSectorWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - baPKKey :array[0..5] of Byte; - bSectorAddress, - bBlockAddress, - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBISWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bSectorAddress :=StrToInt(txtBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtBISWBlockAddressPK.Text); - pData :=PByte(txtBISWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockInSectorWrite_PK(pData,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockInSectorReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_XE/BlockReadWrite.dcu b/uFCoderAdvance_XE/BlockReadWrite.dcu deleted file mode 100644 index 6277bab4750c10c64e55017bac7e05b94d7ae561..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31138 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/BlockReadWrite.dfm b/uFCoderAdvance_XE/BlockReadWrite.dfm deleted file mode 100644 index 949b5d6..0000000 --- a/uFCoderAdvance_XE/BlockReadWrite.dfm +++ /dev/null @@ -1,893 +0,0 @@ -object frmBlockReadWrite: TfrmBlockReadWrite - Left = 310 - Top = 193 - Width = 540 - Height = 420 - Caption = 'BlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 524 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Block Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 524 - Height = 30 - Align = alTop - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbBlockReadWrite: TStatusBar - Left = 0 - Top = 362 - Width = 524 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 524 - Height = 305 - ActivePage = tabBlockRead - Align = alClient - TabOrder = 3 - object tabBlockRead: TTabSheet - Caption = 'BlockRead' - object pnlBlockRead: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBRBlockAddress: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblReadData: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadData: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockRead: TButton - Left = 152 - Top = 30 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadClick - end - object chkBRHex: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexClick - end - end - object pnlBlockReadAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBRBlockAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM1: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM1: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM1: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM1Click - end - object chkBRHexAKM1: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM1Click - end - end - object pnlBlockReadAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBRBlockAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM2: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM2: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM2: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM2Click - end - object chkBRHexAKM2: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM2Click - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBRBlockAddressPK: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataPK: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataPK: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadPK: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadPKClick - end - object chkBRHexPK: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexPKClick - end - end - end - object tabBlockWrite: TTabSheet - Caption = 'BlockWrite' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBWBlockAddress: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteData: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 82 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddress: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWrite: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteClick - end - object txtBWWriteData: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHex: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBWBlockAddressAKM1: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM1: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWiteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM1: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWriteAKM1: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteAKM1Click - end - object txtBWWriteDataAKM1: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM1: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBWBlockAddressAKM2: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM2: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM2: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBWBlockWriteAKM2: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBWBlockWriteAKM2Click - end - object txtBWWriteDataAKM2: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM2: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBWBlockAddressPK: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataPK: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressPK: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWritePK: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWritePKClick - end - object txtBWWriteDataPK: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexPK: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/BlockReadWrite.pas b/uFCoderAdvance_XE/BlockReadWrite.pas deleted file mode 100644 index cf13a1f..0000000 --- a/uFCoderAdvance_XE/BlockReadWrite.pas +++ /dev/null @@ -1,675 +0,0 @@ -unit BlockReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder, StdCtrls, ExtCtrls, ComCtrls; - - const - ARRAY_LENGTH=16; -type - TbaReadData=array[0..ARRAY_LENGTH] of byte; - PbaReadData=^TbaReadData; -type - TfrmBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbBlockReadWrite: TStatusBar; - pgBlockReadWrite: TPageControl; - tabBlockRead: TTabSheet; - tabBlockWrite: TTabSheet; - pnlBlockRead: TPanel; - pnlBlockReadAKM1: TPanel; - pnlBlockReadAKM2: TPanel; - pnlBlockReadPK: TPanel; - lblBlockRead: TStaticText; - lblBRAKM1: TStaticText; - lblBRAKM2: TStaticText; - lblBRPK: TStaticText; - lblBRBlockAddress: TLabel; - txtBRBlockAddress: TEdit; - txtBRReadData: TEdit; - lblReadData: TLabel; - btnBlockRead: TButton; - lblBRBlockAddressAKM1: TLabel; - txtBRBlockAddressAKM1: TEdit; - txtBRReadDataAKM1: TEdit; - lblBRReadDataAKM1: TLabel; - btnBlockReadAKM1: TButton; - lblBRBlockAddressAKM2: TLabel; - txtBRBlockAddressAKM2: TEdit; - txtBRReadDataAKM2: TEdit; - lblBRReadDataAKM2: TLabel; - btnBlockReadAKM2: TButton; - lblBRBlockAddressPK: TLabel; - txtBRBlockAddressPK: TEdit; - txtBRReadDataPK: TEdit; - lblBRReadDataPK: TLabel; - btnBlockReadPK: TButton; - pnlBlockWrite: TPanel; - lblBWBlockAddress: TLabel; - lblBWBlockRead: TStaticText; - txtBWBlockAddress: TEdit; - btnBlockWrite: TButton; - pnlBlockWriteAKM1: TPanel; - lblBWBlockWiteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBWWriteData: TLabel; - txtBWWriteData: TEdit; - lblBWBlockAddressAKM1: TLabel; - txtBWBlockAddressAKM1: TEdit; - btnBlockWriteAKM1: TButton; - lblBWWriteDataAKM1: TLabel; - txtBWWriteDataAKM1: TEdit; - lblBWBlockAddressAKM2: TLabel; - txtBWBlockAddressAKM2: TEdit; - btnBWBlockWriteAKM2: TButton; - lblBWWriteDataAKM2: TLabel; - txtBWWriteDataAKM2: TEdit; - lblBWBlockAddressPK: TLabel; - txtBWBlockAddressPK: TEdit; - btnBlockWritePK: TButton; - lblBWWriteDataPK: TLabel; - txtBWWriteDataPK: TEdit; - chkBRHex: TCheckBox; - chkBRHexAKM1: TCheckBox; - chkBRHexAKM2: TCheckBox; - chkBRHexPK: TCheckBox; - chkBWHex: TCheckBox; - chkBWHexAKM1: TCheckBox; - chkBWHexAKM2: TCheckBox; - chkBWHexPK: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure btnBlockReadClick(Sender: TObject); - procedure btnBlockReadAKM1Click(Sender: TObject); - procedure btnBlockReadAKM2Click(Sender: TObject); - procedure btnBlockReadPKClick(Sender: TObject); - procedure btnBlockWriteClick(Sender: TObject); - procedure btnBlockWriteAKM1Click(Sender: TObject); - procedure btnBWBlockWriteAKM2Click(Sender: TObject); - procedure btnBlockWritePKClick(Sender: TObject); - - procedure chkBRHexClick(Sender: TObject); - procedure chkBRHexAKM1Click(Sender: TObject); - procedure chkBRHexAKM2Click(Sender: TObject); - procedure chkBRHexPKClick(Sender: TObject); - private - PBufferData:PByte; - caReadData :array[0..ARRAY_LENGTH] of char; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - function HexConvert(sTextBoxValue:String):TbaReadData; - function ConvertToHex(chkBox: Boolean): string; - public - { Public declarations } - end; - -var - frmBlockReadWrite: TfrmBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmBlockReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockReadWrite.btnBlockReadClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBRBlockAddress.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtBRReadData.Text:=ConvertToHex(chkBRHex.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM1.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM1(pData,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBRReadDataAKM1.Text:=ConvertToHex(chkBRHexAKM1.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM2.SetFocus(); - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM2.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM2(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtBRReadDataAKM2.Text:=ConvertToHex(chkBRHexAKM2.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockReadPKClick(Sender: TObject); -var - pPKKey :PByte; - pData :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; -begin - try - if Trim(txtBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bBlockAddress :=StrToInt(txtBRBlockAddressPK.Text); - pData :=PByte(@caReadData); - pPKKey :=@baPKKey; - - iFResult:=BlockRead_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtBRReadDataPK.Text:=ConvertToHex(chkBRHexPK.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress, - bKeyIndex :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBWBlockAddress.Text); - - if chkBWHex.Checked then - begin - baBufferData :=HexConvert(txtBWWriteData.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM1.Text); - - if chkBWHexAKM1.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM1.Text); - pData :=PByte(@baBufferData); - end - else - pData:=PByte(txtBWWriteDataAKM1.Text); - - iFResult:=BlockWrite_AKM1(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBWBlockWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM2.Text); - - if chkBWHexAKM2.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM2.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite_AKM2(PData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - if chkBWHexPK.Checked then - begin - baBufferData:=HexConvert(txtBWWriteDataPK.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockWrite_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -function TfrmBlockReadWrite.HexConvert(sTextBoxValue: String):TbaReadData; -var - bCount:byte; - bLength:byte; - bHexCounter:byte; - sTextBuffer:String; - bArrayHex:array[0..ARRAY_LENGTH] of byte; - -begin - bCount:=1; - bHexCounter:=0; - bLength:= Length(sTextBoxValue); - try - while bCount;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/BlockReadWrite.~dfm b/uFCoderAdvance_XE/BlockReadWrite.~dfm deleted file mode 100644 index e351235..0000000 --- a/uFCoderAdvance_XE/BlockReadWrite.~dfm +++ /dev/null @@ -1,893 +0,0 @@ -object frmBlockReadWrite: TfrmBlockReadWrite - Left = 310 - Top = 193 - Width = 540 - Height = 420 - Caption = 'BlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 524 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Block Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 524 - Height = 30 - Align = alTop - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbBlockReadWrite: TStatusBar - Left = 0 - Top = 363 - Width = 524 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 524 - Height = 306 - ActivePage = tabBlockRead - Align = alClient - TabOrder = 3 - object tabBlockRead: TTabSheet - Caption = 'BlockRead' - object pnlBlockRead: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBRBlockAddress: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblReadData: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadData: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockRead: TButton - Left = 152 - Top = 30 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadClick - end - object chkBRHex: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexClick - end - end - object pnlBlockReadAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBRBlockAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM1: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM1: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM1: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM1Click - end - object chkBRHexAKM1: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM1Click - end - end - object pnlBlockReadAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBRBlockAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataAKM2: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataAKM2: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadAKM2: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadAKM2Click - end - object chkBRHexAKM2: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexAKM2Click - end - end - object pnlBlockReadPK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBRBlockAddressPK: TLabel - Left = 8 - Top = 34 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRReadDataPK: TLabel - Left = 8 - Top = 82 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBRBlockAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtBRReadDataPK: TEdit - Left = 7 - Top = 100 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 2 - end - object btnBlockReadPK: TButton - Left = 152 - Top = 30 - Width = 85 - Height = 47 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 1 - OnClick = btnBlockReadPKClick - end - object chkBRHexPK: TCheckBox - Left = 197 - Top = 80 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - OnClick = chkBRHexPKClick - end - end - end - object tabBlockWrite: TTabSheet - Caption = 'BlockWrite' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblBWBlockAddress: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteData: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockRead: TStaticText - Left = 2 - Top = 2 - Width = 82 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddress: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWrite: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteClick - end - object txtBWWriteData: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHex: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblBWBlockAddressAKM1: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM1: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWiteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM1: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWriteAKM1: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWriteAKM1Click - end - object txtBWWriteDataAKM1: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM1: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblBWBlockAddressAKM2: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataAKM2: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 131 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressAKM2: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBWBlockWriteAKM2: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBWBlockWriteAKM2Click - end - object txtBWWriteDataAKM2: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexAKM2: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBWBlockAddressPK: TLabel - Left = 8 - Top = 86 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBWWriteDataPK: TLabel - Left = 8 - Top = 26 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 109 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'BlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtBWBlockAddressPK: TEdit - Left = 100 - Top = 83 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnBlockWritePK: TButton - Left = 152 - Top = 70 - Width = 87 - Height = 46 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 2 - OnClick = btnBlockWritePKClick - end - object txtBWWriteDataPK: TEdit - Left = 7 - Top = 43 - Width = 231 - Height = 21 - Ctl3D = True - ParentCtl3D = False - TabOrder = 0 - end - object chkBWHexPK: TCheckBox - Left = 197 - Top = 24 - Width = 41 - Height = 17 - Caption = 'Hex' - TabOrder = 4 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/BlockReadWrite.~pas b/uFCoderAdvance_XE/BlockReadWrite.~pas deleted file mode 100644 index 3efeba8..0000000 --- a/uFCoderAdvance_XE/BlockReadWrite.~pas +++ /dev/null @@ -1,675 +0,0 @@ -unit BlockReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, StdCtrls, ExtCtrls, ComCtrls; - - const - ARRAY_LENGTH=16; -type - TbaReadData=array[0..ARRAY_LENGTH] of byte; - PbaReadData=^TbaReadData; -type - TfrmBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbBlockReadWrite: TStatusBar; - pgBlockReadWrite: TPageControl; - tabBlockRead: TTabSheet; - tabBlockWrite: TTabSheet; - pnlBlockRead: TPanel; - pnlBlockReadAKM1: TPanel; - pnlBlockReadAKM2: TPanel; - pnlBlockReadPK: TPanel; - lblBlockRead: TStaticText; - lblBRAKM1: TStaticText; - lblBRAKM2: TStaticText; - lblBRPK: TStaticText; - lblBRBlockAddress: TLabel; - txtBRBlockAddress: TEdit; - txtBRReadData: TEdit; - lblReadData: TLabel; - btnBlockRead: TButton; - lblBRBlockAddressAKM1: TLabel; - txtBRBlockAddressAKM1: TEdit; - txtBRReadDataAKM1: TEdit; - lblBRReadDataAKM1: TLabel; - btnBlockReadAKM1: TButton; - lblBRBlockAddressAKM2: TLabel; - txtBRBlockAddressAKM2: TEdit; - txtBRReadDataAKM2: TEdit; - lblBRReadDataAKM2: TLabel; - btnBlockReadAKM2: TButton; - lblBRBlockAddressPK: TLabel; - txtBRBlockAddressPK: TEdit; - txtBRReadDataPK: TEdit; - lblBRReadDataPK: TLabel; - btnBlockReadPK: TButton; - pnlBlockWrite: TPanel; - lblBWBlockAddress: TLabel; - lblBWBlockRead: TStaticText; - txtBWBlockAddress: TEdit; - btnBlockWrite: TButton; - pnlBlockWriteAKM1: TPanel; - lblBWBlockWiteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblBWBlockWriteAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblBWBlockWritePK: TStaticText; - lblBWWriteData: TLabel; - txtBWWriteData: TEdit; - lblBWBlockAddressAKM1: TLabel; - txtBWBlockAddressAKM1: TEdit; - btnBlockWriteAKM1: TButton; - lblBWWriteDataAKM1: TLabel; - txtBWWriteDataAKM1: TEdit; - lblBWBlockAddressAKM2: TLabel; - txtBWBlockAddressAKM2: TEdit; - btnBWBlockWriteAKM2: TButton; - lblBWWriteDataAKM2: TLabel; - txtBWWriteDataAKM2: TEdit; - lblBWBlockAddressPK: TLabel; - txtBWBlockAddressPK: TEdit; - btnBlockWritePK: TButton; - lblBWWriteDataPK: TLabel; - txtBWWriteDataPK: TEdit; - chkBRHex: TCheckBox; - chkBRHexAKM1: TCheckBox; - chkBRHexAKM2: TCheckBox; - chkBRHexPK: TCheckBox; - chkBWHex: TCheckBox; - chkBWHexAKM1: TCheckBox; - chkBWHexAKM2: TCheckBox; - chkBWHexPK: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure btnBlockReadClick(Sender: TObject); - procedure btnBlockReadAKM1Click(Sender: TObject); - procedure btnBlockReadAKM2Click(Sender: TObject); - procedure btnBlockReadPKClick(Sender: TObject); - procedure btnBlockWriteClick(Sender: TObject); - procedure btnBlockWriteAKM1Click(Sender: TObject); - procedure btnBWBlockWriteAKM2Click(Sender: TObject); - procedure btnBlockWritePKClick(Sender: TObject); - - procedure chkBRHexClick(Sender: TObject); - procedure chkBRHexAKM1Click(Sender: TObject); - procedure chkBRHexAKM2Click(Sender: TObject); - procedure chkBRHexPKClick(Sender: TObject); - private - PBufferData:PByte; - caReadData :array[0..ARRAY_LENGTH] of char; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - function HexConvert(sTextBoxValue:String):TbaReadData; - function ConvertToHex(chkBox: Boolean): string; - public - { Public declarations } - end; - -var - frmBlockReadWrite: TfrmBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmBlockReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmBlockReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmBlockReadWrite.btnBlockReadClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBRBlockAddress.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtBRReadData.Text:=ConvertToHex(chkBRHex.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM1.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM1(pData,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtBRReadDataAKM1.Text:=ConvertToHex(chkBRHexAKM1.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmBlockReadWrite.btnBlockReadAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressAKM2.SetFocus(); - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBRBlockAddressAKM2.Text); - pData :=PByte(@caReadData); - - iFResult:=BlockRead_AKM2(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtBRReadDataAKM2.Text:=ConvertToHex(chkBRHexAKM2.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockReadPKClick(Sender: TObject); -var - pPKKey :PByte; - pData :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; -begin - try - if Trim(txtBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - bBlockAddress :=StrToInt(txtBRBlockAddressPK.Text); - pData :=PByte(@caReadData); - pPKKey :=@baPKKey; - - iFResult:=BlockRead_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtBRReadDataPK.Text:=ConvertToHex(chkBRHexPK.Checked); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteClick(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress, - bKeyIndex :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtBWBlockAddress.Text); - - if chkBWHex.Checked then - begin - baBufferData :=HexConvert(txtBWWriteData.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite(pData,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWriteAKM1Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData :TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM1.Text); - - if chkBWHexAKM1.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM1.Text); - pData :=PByte(@baBufferData); - end - else - pData:=PByte(txtBWWriteDataAKM1.Text); - - iFResult:=BlockWrite_AKM1(pData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBWBlockWriteAKM2Click(Sender: TObject); -var - pData :PByte; - bAuthMode, - bBlockAddress :Byte; - iFResult :DL_STATUS; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressAKM2.Text); - - if chkBWHexAKM2.Checked then - begin - baBufferData :=HexConvert(txtBWWriteDataAKM2.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteData.Text); - - iFResult:=BlockWrite_AKM2(PData,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmBlockReadWrite.btnBlockWritePKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - bAuthMode, - bBlockAddress, - bBr :Byte; - iFResult :DL_STATUS; - baPKKey :array[0..5] of Byte; - baBufferData:TbaReadData; -begin - try - if Trim(txtBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtBWBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtBWBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - if chkBWHexPK.Checked then - begin - baBufferData:=HexConvert(txtBWWriteDataPK.Text); - pData :=PByte(@baBufferData); - end - else - pData :=PByte(txtBWWriteDataPK.Text); - pPKKey :=@baPKKey; - - iFResult:=BlockWrite_PK(pData,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbBlockReadWrite,iFResult); - end; - - finally - pData :=nil; - pPKKey:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -function TfrmBlockReadWrite.HexConvert(sTextBoxValue: String):TbaReadData; -var - bCount:byte; - bLength:byte; - bHexCounter:byte; - sTextBuffer:String; - bArrayHex:array[0..ARRAY_LENGTH] of byte; - -begin - bCount:=1; - bHexCounter:=0; - bLength:= Length(sTextBoxValue); - try - while bCount&0u0EAVZDYYMRcK=Y+24D=X2MtX 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 or ((Sender as TEdit).Text=EmptyStr) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; -end; -procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); -begin - if (Sender as TEdit).Text=EmptyStr then begin - with (Sender as TEdit) do - begin - Undo(); - SetFocus(); - end; - end; - if check_hex_box.Checked then Exit; - if ((sender as TEdit).Text>IntToStr(255)) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; - -end; -procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); -begin - if (check_hex_box.Checked) then - begin - (Sender as TEdit).MaxLength:=2; - if (Key in['0'..'9']) or (Key in['a'..'f']) or (ord(Key)=8) then Exit else Key:=#0; - end - else begin - (Sender as TEdit).MaxLength:=3; - if (Key in['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; - end; -end; - - - - //-----End--- -end. diff --git a/uFCoderAdvance_XE/Global.~pas b/uFCoderAdvance_XE/Global.~pas deleted file mode 100644 index 86cd4ba..0000000 --- a/uFCoderAdvance_XE/Global.~pas +++ /dev/null @@ -1,263 +0,0 @@ -unit Global; -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - Menus, ComCtrls, StdCtrls, ExtCtrls,uFCoder1x; - - - procedure Errors_Code; - procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); - procedure ShowForm(the_form:TForm;pnlContainer:TPanel); - procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; - key_parent: TPanel;key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent; - OnKey_Exit:TNotifyEvent); - - procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); - procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); - procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); - procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); - procedure OnPK_KEY_Exit(Sender:TObject); - function AuthMode(RadioButton:TRadioButton):Byte; - function MaxBlocks(): Integer; - - const - FERROR_LIGHT = 2; - FERROR_SOUND = 0; //2 - FRES_OK_LIGHT = 4; - FRES_OK_SOUND = 0; //4 - KEY_INDEX = 0; - MAX_KEY_INDEX = 5; - - CONVERT_ERROR ='You must enter a number between 0 and 255 or 0 and FF hexadecimal !'; - APPROPRIATE_FORMAT ='You must enter a number between 0 and 255 !'; - MEMORY_FILL =0; - - // sectors and blocks - MAX_SECTORS_1k = 16; - MAX_SECTORS_4k = 40; - - // max page for NTAG and MIFARE ULTRALIGHT - MAX_PAGE_NTAG203 = 39; - MAX_PAGE_ULTRALIGHT = 15; - MAX_PAGE_ULTRALIGHT_C = 39; - -var - ERROR_CODE:array[0..200] of string; - - - -implementation -uses - uFAdvanced; - - - -function AuthMode(RadioButton:TRadioButton):Byte; -begin - if RadioButton.Checked then - Result:=MIFARE_AUTHENT1A - else - Result:=MIFARE_AUTHENT1B; -end; - - -procedure ShowForm(the_form:TForm;pnlContainer:TPanel); -begin - with the_form do begin - the_form.BorderStyle:=bsNone; - the_form.Align :=alClient; - the_form.Parent :=pnlContainer; - the_form.Show; - end; -end; -procedure Errors_Code; -begin - ERROR_CODE[$00]:='DL_OK '; - ERROR_CODE[$01]:='COMMUNICATION_ERROR '; - ERROR_CODE[$02]:='CHKSUM_ERROR '; - ERROR_CODE[$03]:='READING_ERROR '; - ERROR_CODE[$04]:='WRITING_ERROR '; - ERROR_CODE[$05]:='BUFFER_OVERFLOW '; - ERROR_CODE[$06]:='MAX_ADDRESS_EXCEEDED '; - ERROR_CODE[$07]:='MAX_KEY_INDEX_EXCEEDED '; - ERROR_CODE[$08]:='NO_CARD '; - ERROR_CODE[$09]:='COMMAND_NOT_SUPPORTED '; - ERROR_CODE[$0A]:='FORBIDEN_DIRECT_WRITE_IN_SECTOR_TRAILER '; - ERROR_CODE[$0B]:='ADDRESSED_BLOCK_IS_NOT_SECTOR_TRAILER '; - ERROR_CODE[$0C]:='WRONG_ADDRESS_MODE '; - ERROR_CODE[$0D]:='WRONG_ACCESS_BITS_VALUES '; - ERROR_CODE[$0E]:='AUTH_ERROR '; - ERROR_CODE[$0F]:='PARAMETERS_ERROR '; - ERROR_CODE[$10]:='MAX_SIZE_EXCEEDED '; - ERROR_CODE[$11]:='UNSUPPORTED_CARD_TYPE '; - - ERROR_CODE[$50]:='COMMUNICATION_BREAK '; - ERROR_CODE[$51]:='NO_MEMORY_ERROR '; - ERROR_CODE[$52]:='CAN_NOT_OPEN_READER '; - ERROR_CODE[$53]:='READER_NOT_SUPPORTED '; - ERROR_CODE[$54]:='READER_OPENING_ERROR '; - ERROR_CODE[$55]:='READER_PORT_NOT_OPENED '; - ERROR_CODE[$56]:='CANT_CLOSE_READER_PORT '; - - ERROR_CODE[$70]:='WRITE_VERIFICATION_ERROR '; - ERROR_CODE[$71]:='BUFFER_SIZE_EXCEEDED '; - ERROR_CODE[$72]:='VALUE_BLOCK_INVALID '; - ERROR_CODE[$73]:='VALUE_BLOCK_ADDR_INVALID '; - ERROR_CODE[$74]:='VALUE_BLOCK_MANIPULATION_ERROR '; - ERROR_CODE[$75]:='WRONG_UI_MODE'; - ERROR_CODE[$76]:='KEYS_LOCKED'; - ERROR_CODE[$77]:='KEYS_UNLOCKED'; - ERROR_CODE[$78]:='WRONG_PASSWORD'; - ERROR_CODE[$79]:='CAN_NOT_LOCK_DEVICE'; - ERROR_CODE[$7A]:='CAN_NOT_UNLOCK_DEVICE'; - ERROR_CODE[$7B]:='DEVICE_EEPROM_BUSY'; - ERROR_CODE[$7C]:='RTC_SET_ERROR'; - - ERROR_CODE[$A0]:='FT_STATUS_ERROR_1'; - ERROR_CODE[$A1]:='FT_STATUS_ERROR_2'; - ERROR_CODE[$A2]:='FT_STATUS_ERROR_3'; - ERROR_CODE[$A3]:='FT_STATUS_ERROR_4'; - ERROR_CODE[$A4]:='FT_STATUS_ERROR_5'; - ERROR_CODE[$A5]:='FT_STATUS_ERROR_6'; - ERROR_CODE[$A6]:='FT_STATUS_ERROR_7'; - ERROR_CODE[$A7]:='FT_STATUS_ERROR_8'; - ERROR_CODE[$A8]:='FT_STATUS_ERROR_9'; -end; - -procedure SetStatusBar(StatusBar: TStatusBar;Result: integer); -begin - StatusBar.Panels[1].Text:=HexDisplayPrefix+IntToHex(Result,2); - StatusBar.Panels[2].Text:=ERROR_CODE[Result]; -end; - -function MaxBlocks(): Integer; -var - bTypeOfCard:Byte; -begin - bTypeOfCard:=frmuFrAdvanced.bDLCardType; - - case bTypeOfCard of - DL_NTAG_203 : Result:= MAX_PAGE_NTAG203; - DL_MIFARE_ULTRALIGHT : Result:= MAX_PAGE_ULTRALIGHT; - DL_MIFARE_ULTRALIGHT_C : Result:= MAX_PAGE_ULTRALIGHT_C; - DL_MIFARE_CLASSIC_1k : Result:=(MAX_SECTORS_1k *4); - DL_MIFARE_CLASSIC_4k, - DL_MIFARE_PLUS_S_4K : Result:=((MAX_SECTORS_1k*2)*4)+((MAX_SECTORS_1k-8)*16) ; - end; -end; - - - - -procedure CreateKey(key_owner:TForm;key_height, key_width, key_top,key_left: Integer; key_parent: TPanel; - key_name:string;key_read_only:Boolean;OnKey_press:TKeyPressEvent;OnKey_Exit:TNotifyEvent); -var - br:Byte; - edit_key:array[0..5] of TEdit; - -begin - for br:=0 to 5 do - begin - edit_key[br] :=TEdit.Create(key_owner); - with edit_key[br] do begin - Height :=key_height; - Width :=key_width; - Top :=key_top; - Left :=key_left+(key_width*br+2); - Name :=key_name+IntToStr(br+1); - CharCase :=ecUpperCase; - Font.Name :='Verdana'; - Font.Style:=[fsBold]; - OnKeyPress:=OnKey_press; - OnExit :=OnKey_Exit; - Text :='255'; - MaxLength :=3; - ReadOnly :=key_read_only; - Parent :=key_parent; - end; - end; -end; -procedure CheckHex(owner:TForm;number_edit:Byte;Check_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case Check_box.Checked of - true:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:= - IntToHex(StrToInt(TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text),2); - end; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:=IntToStr(StrToInt(HexDisplayPrefix+TEdit - (owner.FindComponent(edit_name+IntToStr(br+1))).Text)); - end; - end; - end; -end; -procedure CheckDefault(owner:TForm;number_edit:Byte;def_check_box,hex_box:TCheckBox;edit_name:string); -var - br:Byte; -begin - case def_check_box.Checked of - true:begin for br:=0 to number_edit do begin - - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).Text:='255'; - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=true; - end; - hex_box.Checked:=false; - end; - false:begin - for br:=0 to number_edit do begin - TEdit(owner.FindComponent(edit_name+IntToStr(br+1))).ReadOnly:=false; - end; - end; - end; -end; -procedure OnPK_KEY_Exit(Sender:TObject); -begin - - if ((sender as TEdit).Text>IntToStr(255)) or ((Sender as TEdit).Text=EmptyStr) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; -end; -procedure OnMyExit(Sender:TObject;check_hex_box:TCheckBox); -begin - if (Sender as TEdit).Text=EmptyStr then begin - with (Sender as TEdit) do - begin - Undo(); - SetFocus(); - end; - end; - if check_hex_box.Checked then Exit; - if ((sender as TEdit).Text>IntToStr(255)) then - begin - MessageDlg('Wrong entry !'+#13#10+'You must enter the numeric value between 0 - 255 !',mtWarning,[mbOK],0); - (sender as TEdit).Undo; - (sender as TEdit).SetFocus; - end; - -end; -procedure Check_Key_press(Sender:TObject;check_hex_box:TCheckBox;var Key:Char); -begin - if (check_hex_box.Checked) then - begin - (Sender as TEdit).MaxLength:=2; - if (Key in['0'..'9']) or (Key in['a'..'f']) or (ord(Key)=8) then Exit else Key:=#0; - end - else begin - (Sender as TEdit).MaxLength:=3; - if (Key in['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; - end; -end; - - - - //-----End--- -end. diff --git a/uFCoderAdvance_XE/LinearFormatsCard.dcu b/uFCoderAdvance_XE/LinearFormatsCard.dcu deleted file mode 100644 index e5eab43c884bd475e9c1ab04846f5122719e886d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24044 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 diff --git a/uFCoderAdvance_XE/LinearFormatsCard.ddp b/uFCoderAdvance_XE/LinearFormatsCard.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/LinearFormatsCard.dfm b/uFCoderAdvance_XE/LinearFormatsCard.dfm deleted file mode 100644 index 3c91461..0000000 --- a/uFCoderAdvance_XE/LinearFormatsCard.dfm +++ /dev/null @@ -1,780 +0,0 @@ -object frmLinearFormatCard: TfrmLinearFormatCard - Left = 316 - Top = 154 - Width = 529 - Height = 460 - Caption = 'LinearFormatCard' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'LinearFormat Card(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbLinearFormatCard: TStatusBar - Left = 0 - Top = 402 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyConteiner: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 99 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 97 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 97 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object pgLinearFormatsCard: TPageControl - Left = 0 - Top = 155 - Width = 513 - Height = 247 - ActivePage = tabLinearFormat - Align = alClient - TabOrder = 4 - object tabLinearFormat: TTabSheet - Caption = 'LinearFormat ' - object lblBlockAccessBits: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBits: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormatted: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBits: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBits: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormat: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatClick - end - object txtSectorFormatted: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 26 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM1: TTabSheet - Caption = 'LinearFormat AKM1' - ImageIndex = 1 - object lblBlockAccessBitsAKM1: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM1: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM1: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM1: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM1: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM1: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM1: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM1: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM1Click - end - object txtSectorFormattedAKM1: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM2: TTabSheet - Caption = 'LinearFormat AKM2' - ImageIndex = 2 - object lblBlockAccessBitsAKM2: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM2: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM2: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM2: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM2: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM2: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM2: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM2: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM2Click - end - object txtSectorFormattedAKM2: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatPK: TTabSheet - Caption = 'LinearFormat PK' - ImageIndex = 3 - object lblBlockAccessBitsPK: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsPK: TLabel - Left = 46 - Top = 82 - Width = 149 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9PK: TLabel - Left = 47 - Top = 112 - Width = 118 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedPK: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsPK: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsPK: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9PK: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatPK: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatPKClick - end - object txtSectorFormattedPK: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - end -end diff --git a/uFCoderAdvance_XE/LinearFormatsCard.pas b/uFCoderAdvance_XE/LinearFormatsCard.pas deleted file mode 100644 index b8db279..0000000 --- a/uFCoderAdvance_XE/LinearFormatsCard.pas +++ /dev/null @@ -1,436 +0,0 @@ -unit LinearFormatsCard; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder; - -type - TfrmLinearFormatCard = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbLinearFormatCard: TStatusBar; - pnlKeyConteiner: TPanel; - pnlKeyA: TPanel; - lblKeyA: TStaticText; - chkKeyAHex: TCheckBox; - pnlKeyB: TPanel; - lblKeyB: TStaticText; - chkKeyBHex: TCheckBox; - pgLinearFormatsCard: TPageControl; - tabLinearFormat: TTabSheet; - tabLinearFormatAKM1: TTabSheet; - tabLinearFormatAKM2: TTabSheet; - tabLinearFormatPK: TTabSheet; - lblBlockAccessBits: TLabel; - cboBlockAccessBits: TComboBox; - lblSectorTrailerAccessBits: TLabel; - cboSectorTrailerAccessBits: TComboBox; - lblSectorTrailerByte9: TLabel; - txtSectorTrailerByte9: TEdit; - btnLinearFormat: TButton; - lblSectorFormatted: TLabel; - txtSectorFormatted: TEdit; - lblBlockAccessBitsAKM1: TLabel; - cboBlockAccessBitsAKM1: TComboBox; - lblSectorTrailerAccessBitsAKM1: TLabel; - cboSectorTrailerAccessBitsAKM1: TComboBox; - lblSectorTrailerByte9AKM1: TLabel; - txtSectorTrailerByte9AKM1: TEdit; - btnLinearFormatAKM1: TButton; - lblSectorFormattedAKM1: TLabel; - txtSectorFormattedAKM1: TEdit; - lblBlockAccessBitsAKM2: TLabel; - cboBlockAccessBitsAKM2: TComboBox; - lblSectorTrailerAccessBitsAKM2: TLabel; - cboSectorTrailerAccessBitsAKM2: TComboBox; - lblSectorTrailerByte9AKM2: TLabel; - txtSectorTrailerByte9AKM2: TEdit; - btnLinearFormatAKM2: TButton; - lblSectorFormattedAKM2: TLabel; - txtSectorFormattedAKM2: TEdit; - lblBlockAccessBitsPK: TLabel; - cboBlockAccessBitsPK: TComboBox; - lblSectorTrailerAccessBitsPK: TLabel; - cboSectorTrailerAccessBitsPK: TComboBox; - lblSectorTrailerByte9PK: TLabel; - txtSectorTrailerByte9PK: TEdit; - btnLinearFormatPK: TButton; - lblSectorFormattedPK: TLabel; - txtSectorFormattedPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure btnLinearFormatClick(Sender: TObject); - procedure btnLinearFormatAKM1Click(Sender: TObject); - procedure btnLinearFormatAKM2Click(Sender: TObject); - procedure btnLinearFormatPKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - public - { Public declarations } - end; - -var - frmLinearFormatCard: TfrmLinearFormatCard; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmLinearFormatCard } - -procedure TfrmLinearFormatCard.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmLinearFormatCard.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearFormatCard.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; - -procedure TfrmLinearFormatCard.OnKeyAPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; -procedure TfrmLinearFormatCard.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmLinearFormatCard.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmLinearFormatCard.OnKeyBPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmLinearFormatCard.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyADefaultClick(Sender: TObject); -begin - //CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.chkKeyBDefaultClick(Sender: TObject); -begin - // CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; -end; - - - - -procedure TfrmLinearFormatCard.btnLinearFormatClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAccessBits :=cboBlockAccessBits.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9,pKeyB, - bSectorsFormatted,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM1.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM1.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard_AKM1(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM2.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM2.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - iFResult:=LinearFormatCard_AKM2(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9PK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsPK.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsPK.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9PK.Text); - WriteKeyAB; - PKeyA:=@baKeyA; - PKeyB:=@baKeyB; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - iFResult:=LinearFormatCard_PK(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode,pPKkey); - if iFResult=DL_OK then - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; -finally - pKeyA :=nil; - pKeyB :=nil; - pPKKey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - - - - - - - -end. diff --git a/uFCoderAdvance_XE/LinearFormatsCard.~ddp b/uFCoderAdvance_XE/LinearFormatsCard.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/LinearFormatsCard.~dfm b/uFCoderAdvance_XE/LinearFormatsCard.~dfm deleted file mode 100644 index 1f05ce7..0000000 --- a/uFCoderAdvance_XE/LinearFormatsCard.~dfm +++ /dev/null @@ -1,780 +0,0 @@ -object frmLinearFormatCard: TfrmLinearFormatCard - Left = 316 - Top = 154 - Width = 529 - Height = 460 - Caption = 'LinearFormatCard' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'LinearFormat Card(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbLinearFormatCard: TStatusBar - Left = 0 - Top = 403 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyConteiner: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 99 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 97 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 97 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object pgLinearFormatsCard: TPageControl - Left = 0 - Top = 155 - Width = 513 - Height = 248 - ActivePage = tabLinearFormat - Align = alClient - TabOrder = 4 - object tabLinearFormat: TTabSheet - Caption = 'LinearFormat ' - object lblBlockAccessBits: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBits: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormatted: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBits: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBits: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormat: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatClick - end - object txtSectorFormatted: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 26 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM1: TTabSheet - Caption = 'LinearFormat AKM1' - ImageIndex = 1 - object lblBlockAccessBitsAKM1: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM1: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM1: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM1: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM1: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM1: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM1: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM1: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM1Click - end - object txtSectorFormattedAKM1: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatAKM2: TTabSheet - Caption = 'LinearFormat AKM2' - ImageIndex = 2 - object lblBlockAccessBitsAKM2: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsAKM2: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9AKM2: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedAKM2: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsAKM2: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsAKM2: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9AKM2: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatAKM2: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatAKM2Click - end - object txtSectorFormattedAKM2: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - object tabLinearFormatPK: TTabSheet - Caption = 'LinearFormat PK' - ImageIndex = 3 - object lblBlockAccessBitsPK: TLabel - Left = 47 - Top = 52 - Width = 99 - Height = 13 - Caption = 'Block Access Bits' - end - object lblSectorTrailerAccessBitsPK: TLabel - Left = 46 - Top = 82 - Width = 150 - Height = 13 - Caption = 'Sector Trailer Access Bits ' - end - object lblSectorTrailerByte9PK: TLabel - Left = 47 - Top = 112 - Width = 119 - Height = 13 - Caption = 'Sector Trailer Byte 9' - end - object lblSectorFormattedPK: TLabel - Left = 297 - Top = 155 - Width = 99 - Height = 13 - Caption = 'Sector Formatted' - end - object cboBlockAccessBitsPK: TComboBox - Left = 207 - Top = 48 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboSectorTrailerAccessBitsPK: TComboBox - Left = 207 - Top = 78 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 1 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtSectorTrailerByte9PK: TEdit - Left = 207 - Top = 108 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - end - object btnLinearFormatPK: TButton - Left = 280 - Top = 59 - Width = 193 - Height = 65 - Cursor = crHandPoint - Caption = 'FORMAT' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearFormatPKClick - end - object txtSectorFormattedPK: TEdit - Left = 412 - Top = 149 - Width = 44 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -17 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - end - end -end diff --git a/uFCoderAdvance_XE/LinearFormatsCard.~pas b/uFCoderAdvance_XE/LinearFormatsCard.~pas deleted file mode 100644 index 9fa6408..0000000 --- a/uFCoderAdvance_XE/LinearFormatsCard.~pas +++ /dev/null @@ -1,436 +0,0 @@ -unit LinearFormatsCard; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, - ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder1x; - -type - TfrmLinearFormatCard = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbLinearFormatCard: TStatusBar; - pnlKeyConteiner: TPanel; - pnlKeyA: TPanel; - lblKeyA: TStaticText; - chkKeyAHex: TCheckBox; - pnlKeyB: TPanel; - lblKeyB: TStaticText; - chkKeyBHex: TCheckBox; - pgLinearFormatsCard: TPageControl; - tabLinearFormat: TTabSheet; - tabLinearFormatAKM1: TTabSheet; - tabLinearFormatAKM2: TTabSheet; - tabLinearFormatPK: TTabSheet; - lblBlockAccessBits: TLabel; - cboBlockAccessBits: TComboBox; - lblSectorTrailerAccessBits: TLabel; - cboSectorTrailerAccessBits: TComboBox; - lblSectorTrailerByte9: TLabel; - txtSectorTrailerByte9: TEdit; - btnLinearFormat: TButton; - lblSectorFormatted: TLabel; - txtSectorFormatted: TEdit; - lblBlockAccessBitsAKM1: TLabel; - cboBlockAccessBitsAKM1: TComboBox; - lblSectorTrailerAccessBitsAKM1: TLabel; - cboSectorTrailerAccessBitsAKM1: TComboBox; - lblSectorTrailerByte9AKM1: TLabel; - txtSectorTrailerByte9AKM1: TEdit; - btnLinearFormatAKM1: TButton; - lblSectorFormattedAKM1: TLabel; - txtSectorFormattedAKM1: TEdit; - lblBlockAccessBitsAKM2: TLabel; - cboBlockAccessBitsAKM2: TComboBox; - lblSectorTrailerAccessBitsAKM2: TLabel; - cboSectorTrailerAccessBitsAKM2: TComboBox; - lblSectorTrailerByte9AKM2: TLabel; - txtSectorTrailerByte9AKM2: TEdit; - btnLinearFormatAKM2: TButton; - lblSectorFormattedAKM2: TLabel; - txtSectorFormattedAKM2: TEdit; - lblBlockAccessBitsPK: TLabel; - cboBlockAccessBitsPK: TComboBox; - lblSectorTrailerAccessBitsPK: TLabel; - cboSectorTrailerAccessBitsPK: TComboBox; - lblSectorTrailerByte9PK: TLabel; - txtSectorTrailerByte9PK: TEdit; - btnLinearFormatPK: TButton; - lblSectorFormattedPK: TLabel; - txtSectorFormattedPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure btnLinearFormatClick(Sender: TObject); - procedure btnLinearFormatAKM1Click(Sender: TObject); - procedure btnLinearFormatAKM2Click(Sender: TObject); - procedure btnLinearFormatPKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - public - { Public declarations } - end; - -var - frmLinearFormatCard: TfrmLinearFormatCard; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmLinearFormatCard } - -procedure TfrmLinearFormatCard.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmLinearFormatCard.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearFormatCard.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; - -procedure TfrmLinearFormatCard.OnKeyAPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; -procedure TfrmLinearFormatCard.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmLinearFormatCard.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmLinearFormatCard.OnKeyBPress(Sender: TObject; var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmLinearFormatCard.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyADefaultClick(Sender: TObject); -begin - //CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmLinearFormatCard.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.chkKeyBDefaultClick(Sender: TObject); -begin - // CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmLinearFormatCard.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; -end; - - - - -procedure TfrmLinearFormatCard.btnLinearFormatClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAccessBits :=cboBlockAccessBits.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9,pKeyB, - bSectorsFormatted,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormatted.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM1.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM1.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=LinearFormatCard_AKM1(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM1.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(PKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsAKM2.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9AKM2.Text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - iFResult:=LinearFormatCard_AKM2(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode); - if iFResult=DL_OK then - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedAKM2.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmLinearFormatCard.btnLinearFormatPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAccessBits, - bSectorTrailerAccessBits, - bSectorTrailerByte9, - bSectorsFormatted :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtSectorTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR TRAILER BYTE 9',mtWarning,[mbOK],0); - txtSectorTrailerByte9PK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAccessBits :=cboBlockAccessBitsPK.ItemIndex; - bSectorTrailerAccessBits :=cboSectorTrailerAccessBitsPK.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtSectorTrailerByte9PK.Text); - WriteKeyAB; - PKeyA:=@baKeyA; - PKeyB:=@baKeyB; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - iFResult:=LinearFormatCard_PK(pKeyA,bBlockAccessBits,bSectorTrailerAccessBits,bSectorTrailerByte9, - PKeyB,bSectorsFormatted,bAuthMode,pPKkey); - if iFResult=DL_OK then - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end - else - begin - txtSectorFormattedPK.Text:=IntToStr(bSectorsFormatted); - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearFormatCard,iFResult); - end; -finally - pKeyA :=nil; - pKeyB :=nil; - pPKKey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - - - - - - - -end. diff --git a/uFCoderAdvance_XE/LinearReadWrite.dcu b/uFCoderAdvance_XE/LinearReadWrite.dcu deleted file mode 100644 index 3f96dc269b8d1adf745ee7774807a1fc640e4942..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37008 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 UT)N|rtus5DDGFL<=djTK1A~%?QUCw| diff --git a/uFCoderAdvance_XE/LinearReadWrite.ddp b/uFCoderAdvance_XE/LinearReadWrite.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/LinearReadWrite.dfm b/uFCoderAdvance_XE/LinearReadWrite.dfm deleted file mode 100644 index 45dde04..0000000 --- a/uFCoderAdvance_XE/LinearReadWrite.dfm +++ /dev/null @@ -1,1089 +0,0 @@ -object frmLinearReadWrite: TfrmLinearReadWrite - Left = 756 - Top = 224 - Width = 529 - Height = 428 - Caption = 'LinearRead/Write' - Color = clBtnFace - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Linear Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbLinearReadWrite: TStatusBar - Left = 0 - Top = 370 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - TabOrder = 2 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object pgLinearReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 313 - ActivePage = tabLinearRead - Align = alClient - TabOrder = 3 - object tabLinearRead: TTabSheet - Caption = 'LinearRead' - object lblLinearRead: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLReadLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesRead: TLabel - Left = 176 - Top = 244 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearRead: TButton - Left = 328 - Top = 228 - Width = 160 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadClick - end - object txtReadBytes: TEdit - Left = 261 - Top = 242 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearRead: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM12: TTabSheet - Caption = 'LinearRead_AKM1/AKM2' - ImageIndex = 1 - object pgLinearReadAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 285 - ActivePage = tabLinearReadAKM1 - Align = alClient - TabOrder = 0 - object tabLinearReadAKM1: TTabSheet - Caption = 'LinearRead_AKM1' - object lblLRAKM1LinearRead: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRAKM1LinearAddress: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRAKM1DataLength: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM1: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM1Click - end - object txtReadBytesAKM1: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM2: TTabSheet - Caption = 'LinearRead_AKM2' - ImageIndex = 1 - object Label4: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM2: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM2Click - end - object txtReadBytesAKM2: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - end - end - object tabLinearReadPK: TTabSheet - Caption = 'LinearRead_PK' - ImageIndex = 2 - object Label7: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesPK: TLabel - Left = 169 - Top = 250 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadPK: TButton - Left = 322 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadPKClick - end - object txtReadBytesPK: TEdit - Left = 250 - Top = 247 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadPK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearWrite: TTabSheet - Caption = 'LinearWrite' - ImageIndex = 3 - object lblLWLinearWrite: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWritten: TLabel - Left = 171 - Top = 244 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWrite: TButton - Left = 324 - Top = 228 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteClick - end - object txtBytesWritten: TEdit - Left = 256 - Top = 242 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWrite: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteChange - end - end - object tabLinearWriteAKM12: TTabSheet - Caption = 'LinearWrite_AKM1/AKM2' - ImageIndex = 4 - object pgLinearWriteAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 285 - ActivePage = tabLinearWriteAKM1 - Align = alClient - TabOrder = 0 - object tabLinearWriteAKM1: TTabSheet - Caption = 'LinearWrite_AKM1' - object lblLinearWriteAKM1: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM1: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM1: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM1: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM1Click - end - object txtBytesWrittenAKM1: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM1Change - end - end - object tabLinearWriteAKM2: TTabSheet - Caption = 'LinearWrite_AKM2' - ImageIndex = 1 - object lblLinearWriteAKM2: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM2: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM2Click - end - object txtBytesWrittenAKM2: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM2Change - end - end - end - end - object tabLinearWritePK: TTabSheet - Caption = 'LinearWrite_PK' - ImageIndex = 5 - object lblLinearWritePK: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenPK: TLabel - Left = 171 - Top = 249 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWritePK: TButton - Left = 323 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWritePKClick - end - object txtBytesWrittenPK: TEdit - Left = 256 - Top = 246 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWritePK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWritePKChange - end - end - end -end diff --git a/uFCoderAdvance_XE/LinearReadWrite.pas b/uFCoderAdvance_XE/LinearReadWrite.pas deleted file mode 100644 index 762b3d9..0000000 --- a/uFCoderAdvance_XE/LinearReadWrite.pas +++ /dev/null @@ -1,689 +0,0 @@ -unit LinearReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, - Global,uFCoder, ComCtrls, ExtCtrls; - -type - TfrmLinearReadWrite = class(TForm) - lblHeader: TStaticText; - stbLinearReadWrite: TStatusBar; - pnlAuth: TPanel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - lblKeyIndex: TLabel; - cboKeyIndex: TComboBox; - lblPKKey: TLabel; - pgLinearReadWrite: TPageControl; - tabLinearRead: TTabSheet; - tabLinearReadAKM12: TTabSheet; - tabLinearReadPK: TTabSheet; - tabLinearWrite: TTabSheet; - tabLinearWriteAKM12: TTabSheet; - tabLinearWritePK: TTabSheet; - lblLinearRead: TLabel; - lblLReadLinearAddress: TLabel; - txtLRLinearAddress: TEdit; - lblLRDataLength: TLabel; - txtLRDataLength: TEdit; - btnLinearRead: TButton; - pgLinearReadAKM12: TPageControl; - tabLinearReadAKM1: TTabSheet; - tabLinearReadAKM2: TTabSheet; - lblLRAKM1LinearRead: TLabel; - lblLRAKM1LinearAddress: TLabel; - txtLRLinearAddressAKM1: TEdit; - lblLRAKM1DataLength: TLabel; - txtLRDataLengthAKM1: TEdit; - btnLinearReadAKM1: TButton; - Label4: TLabel; - lblLRLinearAddressAKM2: TLabel; - txtLRLinearAddressAKM2: TEdit; - txtLRDataLengthAKM2: TEdit; - btnLinearReadAKM2: TButton; - lblLRDataLengthAKM2: TLabel; - Label7: TLabel; - lblLRLinearAddressPK: TLabel; - txtLRLinearAddressPK: TEdit; - lblLRDataLengthPK: TLabel; - txtLRDataLengthPK: TEdit; - btnLinearReadPK: TButton; - lblLWLinearWrite: TLabel; - lblLWLinearAddress: TLabel; - txtLWLinearAddress: TEdit; - lblLWDataLength: TLabel; - txtLWDataLength: TEdit; - btnLinearWrite: TButton; - lblLinearWritePK: TLabel; - lblLWLinearAddressPK: TLabel; - txtLWLinearAddressPK: TEdit; - lblLWDataLengthPK: TLabel; - txtLWDataLengthPK: TEdit; - btnLinearWritePK: TButton; - pgLinearWriteAKM12: TPageControl; - tabLinearWriteAKM1: TTabSheet; - lblLinearWriteAKM1: TLabel; - lblLWLinearAddressAKM1: TLabel; - lblLWDataLengthAKM1: TLabel; - txtLWLinearAddressAKM1: TEdit; - txtLWDataLengthAKM1: TEdit; - btnLinearWriteAKM1: TButton; - tabLinearWriteAKM2: TTabSheet; - lblLinearWriteAKM2: TLabel; - lblLWLinearAddressAKM2: TLabel; - lblLWDataLengthAKM2: TLabel; - txtLWLinearAddressAKM2: TEdit; - txtLWDataLengthAKM2: TEdit; - btnLinearWriteAKM2: TButton; - lblBytesRead: TLabel; - txtReadBytes: TEdit; - lblReadBytesAKM1: TLabel; - txtReadBytesAKM1: TEdit; - lblReadBytesAKM2: TLabel; - txtReadBytesAKM2: TEdit; - lblReadBytesPK: TLabel; - txtReadBytesPK: TEdit; - lblBytesWritten: TLabel; - txtBytesWritten: TEdit; - lblBytesWrittenAKM1: TLabel; - txtBytesWrittenAKM1: TEdit; - lblBytesWrittenAKM2: TLabel; - txtBytesWrittenAKM2: TEdit; - lblBytesWrittenPK: TLabel; - txtBytesWrittenPK: TEdit; - txtLinearRead: TRichEdit; - txtLinearReadAKM1: TRichEdit; - txtLinearReadAKM2: TRichEdit; - txtLinearReadPK: TRichEdit; - txtLinearWrite: TRichEdit; - txtLinearWritePK: TRichEdit; - txtLinearWriteAKM1: TRichEdit; - txtLinearWriteAKM2: TRichEdit; - procedure FormCreate(Sender: TObject); - procedure btnLinearReadClick(Sender: TObject); - procedure btnLinearReadAKM1Click(Sender: TObject); - procedure btnLinearReadAKM2Click(Sender: TObject); - procedure btnLinearReadPKClick(Sender: TObject); - procedure btnLinearWriteClick(Sender: TObject); - procedure btnLinearWriteAKM1Click(Sender: TObject); - procedure btnLinearWriteAKM2Click(Sender: TObject); - procedure btnLinearWritePKClick(Sender: TObject); - procedure txtLinearWriteChange(Sender: TObject); - procedure txtLinearWriteAKM2Change(Sender: TObject); - procedure txtLinearWriteAKM1Change(Sender: TObject); - procedure txtLinearWritePKChange(Sender: TObject); - private - - procedure OnPKKeyExit(Sender:TObject); - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - public - { Public declarations } - end; - type - TByteArray=array of Byte; -var - frmLinearReadWrite: TfrmLinearReadWrite; - - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmLinearReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmLinearReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmLinearReadWrite.btnLinearReadClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLRDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLRLinearAddress.Text); - wDataLength :=StrToInt(txtLRDataLength.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - - iFResult:=LinearRead(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - txtLinearRead.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(Trim(txtLRLinearAddressAKM1.Text)); - wDataLength :=StrToInt(Trim(txtLRDataLengthAKM1.Text)); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM1(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtLinearReadAKM1.Text:=String(baReadData); - txtReadBytesAKM1.Text :=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM1.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLRDataLengthAKM2.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM2(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtReadBytesAKM2.Text :=IntToStr(wBytesRet); - txtLinearReadAKM2.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM2.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadPKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - bBr :Byte; -begin - try - if Trim(txtLRLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - New(pData); - New(pPKKey); - - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressPK.Text); - wDataLength :=StrToInt(txtLRDataLengthPK.Text); - - SetLength(baReadData,wDataLength); - pData :=PByte(@baReadData[0]); - pPKKEY:=@PKKey; - iFResult:=LinearRead_PK(pData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtLinearReadPK.Text:=String(baReadData); - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWrite.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWrite.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLWDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLWLinearAddress.Text); - wDataLength :=StrToInt(txtLWDataLength.Text); - pData :=PByte(txtLinearWrite.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM1.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM1.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM1.Text); - pData :=PByte(txtLinearWriteAKM1.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM1(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM2.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM2.Text); - pData :=PByte(txtLinearWriteAKM2.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM2(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWritePKClick(Sender: TObject); -var - pPKKEY, - pData :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLinearWritePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWritePK.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressPK.Text); - wDataLength :=StrToInt(txtLWDataLengthPK.Text); - pData :=PByte(txtLinearWritePK.Text); - pPKKEY :=@PKKey; - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_PK(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,pPKKEY); - if iFResult=DL_OK then - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKEY); - frmuFrAdvanced.FunctionStart:=false; - end; - end; - - - -procedure TfrmLinearReadWrite.txtLinearWriteChange(Sender: TObject); -begin - txtLWDataLength.Text:=IntToStr(Length(Trim(txtLinearWrite.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM2Change(Sender: TObject); -begin - txtLWDataLengthAKM2.Text:=IntToStr(Length(Trim(txtLinearWriteAKM2.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM1Change(Sender: TObject); -begin - txtLWDataLengthAKM1.Text:=IntToStr(Length(Trim(txtLinearWriteAKM1.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWritePKChange(Sender: TObject); -begin - txtLWDataLengthPK.Text:=IntToStr(Length(Trim(txtLinearWritePK.Text))); -end; - -end. diff --git a/uFCoderAdvance_XE/LinearReadWrite.~ddp b/uFCoderAdvance_XE/LinearReadWrite.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/LinearReadWrite.~dfm b/uFCoderAdvance_XE/LinearReadWrite.~dfm deleted file mode 100644 index 8b9619c..0000000 --- a/uFCoderAdvance_XE/LinearReadWrite.~dfm +++ /dev/null @@ -1,1089 +0,0 @@ -object frmLinearReadWrite: TfrmLinearReadWrite - Left = 403 - Top = 171 - Width = 529 - Height = 428 - Caption = 'LinearRead/Write' - Color = clBtnFace - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'Linear Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object stbLinearReadWrite: TStatusBar - Left = 0 - Top = 371 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - TabOrder = 2 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object pgLinearReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 314 - ActivePage = tabLinearRead - Align = alClient - TabOrder = 3 - object tabLinearRead: TTabSheet - Caption = 'LinearRead' - object lblLinearRead: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLReadLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesRead: TLabel - Left = 176 - Top = 244 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearRead: TButton - Left = 328 - Top = 228 - Width = 160 - Height = 45 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadClick - end - object txtReadBytes: TEdit - Left = 261 - Top = 242 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearRead: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM12: TTabSheet - Caption = 'LinearRead_AKM1/AKM2' - ImageIndex = 1 - object pgLinearReadAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 286 - ActivePage = tabLinearReadAKM1 - Align = alClient - TabOrder = 0 - object tabLinearReadAKM1: TTabSheet - Caption = 'LinearRead_AKM1' - object lblLRAKM1LinearRead: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRAKM1LinearAddress: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRAKM1DataLength: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM1: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM1Click - end - object txtReadBytesAKM1: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearReadAKM2: TTabSheet - Caption = 'LinearRead_AKM2' - ImageIndex = 1 - object Label4: TLabel - Left = 7 - Top = 3 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesAKM2: TLabel - Left = 169 - Top = 227 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadAKM2Click - end - object txtReadBytesAKM2: TEdit - Left = 250 - Top = 224 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - end - end - object tabLinearReadPK: TTabSheet - Caption = 'LinearRead_PK' - ImageIndex = 2 - object Label7: TLabel - Left = 11 - Top = 8 - Width = 68 - Height = 13 - Caption = 'Linear Read' - end - object lblLRLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLRDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblReadBytesPK: TLabel - Left = 169 - Top = 250 - Width = 65 - Height = 13 - Caption = 'Read Bytes' - end - object txtLRLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtLRDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object btnLinearReadPK: TButton - Left = 322 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'READ' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 2 - OnClick = btnLinearReadPKClick - end - object txtReadBytesPK: TEdit - Left = 250 - Top = 247 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 3 - end - object txtLinearReadPK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ReadOnly = True - ScrollBars = ssVertical - TabOrder = 4 - end - end - object tabLinearWrite: TTabSheet - Caption = 'LinearWrite' - ImageIndex = 3 - object lblLWLinearWrite: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddress: TLabel - Left = 11 - Top = 229 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLength: TLabel - Left = 11 - Top = 253 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWritten: TLabel - Left = 171 - Top = 244 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddress: TEdit - Left = 104 - Top = 227 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLength: TEdit - Left = 104 - Top = 251 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWrite: TButton - Left = 324 - Top = 228 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteClick - end - object txtBytesWritten: TEdit - Left = 256 - Top = 242 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWrite: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteChange - end - end - object tabLinearWriteAKM12: TTabSheet - Caption = 'LinearWrite_AKM1/AKM2' - ImageIndex = 4 - object pgLinearWriteAKM12: TPageControl - Left = 0 - Top = 0 - Width = 505 - Height = 286 - ActivePage = tabLinearWriteAKM1 - Align = alClient - TabOrder = 0 - object tabLinearWriteAKM1: TTabSheet - Caption = 'LinearWrite_AKM1' - object lblLinearWriteAKM1: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM1: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM1: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM1: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM1: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM1: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM1: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM1Click - end - object txtBytesWrittenAKM1: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM1: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM1Change - end - end - object tabLinearWriteAKM2: TTabSheet - Caption = 'LinearWrite_AKM2' - ImageIndex = 1 - object lblLinearWriteAKM2: TLabel - Left = 7 - Top = 3 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressAKM2: TLabel - Left = 8 - Top = 215 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthAKM2: TLabel - Left = 8 - Top = 239 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenAKM2: TLabel - Left = 171 - Top = 228 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressAKM2: TEdit - Left = 103 - Top = 211 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthAKM2: TEdit - Left = 103 - Top = 234 - Width = 47 - Height = 20 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWriteAKM2: TButton - Left = 320 - Top = 210 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWriteAKM2Click - end - object txtBytesWrittenAKM2: TEdit - Left = 256 - Top = 225 - Width = 47 - Height = 20 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWriteAKM2: TRichEdit - Left = 8 - Top = 21 - Width = 473 - Height = 180 - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWriteAKM2Change - end - end - end - end - object tabLinearWritePK: TTabSheet - Caption = 'LinearWrite_PK' - ImageIndex = 5 - object lblLinearWritePK: TLabel - Left = 11 - Top = 8 - Width = 69 - Height = 13 - Caption = 'Linear Write' - end - object lblLWLinearAddressPK: TLabel - Left = 11 - Top = 235 - Width = 85 - Height = 13 - Caption = 'Linear Address' - end - object lblLWDataLengthPK: TLabel - Left = 11 - Top = 259 - Width = 69 - Height = 13 - Caption = 'Data Length' - end - object lblBytesWrittenPK: TLabel - Left = 171 - Top = 249 - Width = 77 - Height = 13 - Caption = 'Bytes Written' - end - object txtLWLinearAddressPK: TEdit - Left = 104 - Top = 233 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtLWDataLengthPK: TEdit - Left = 104 - Top = 257 - Width = 47 - Height = 19 - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object btnLinearWritePK: TButton - Left = 323 - Top = 235 - Width = 163 - Height = 42 - Cursor = crHandPoint - Caption = 'WRITE' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 3 - OnClick = btnLinearWritePKClick - end - object txtBytesWrittenPK: TEdit - Left = 256 - Top = 246 - Width = 47 - Height = 19 - Color = clSilver - Ctl3D = False - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -12 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object txtLinearWritePK: TRichEdit - Left = 12 - Top = 25 - Width = 477 - Height = 185 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Ctl3D = False - Lines.Strings = ( - '') - ParentCtl3D = False - ScrollBars = ssVertical - TabOrder = 0 - OnChange = txtLinearWritePKChange - end - end - end -end diff --git a/uFCoderAdvance_XE/LinearReadWrite.~pas b/uFCoderAdvance_XE/LinearReadWrite.~pas deleted file mode 100644 index 1e5f30a..0000000 --- a/uFCoderAdvance_XE/LinearReadWrite.~pas +++ /dev/null @@ -1,689 +0,0 @@ -unit LinearReadWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, - Global,uFCoder1x, ComCtrls, ExtCtrls; - -type - TfrmLinearReadWrite = class(TForm) - lblHeader: TStaticText; - stbLinearReadWrite: TStatusBar; - pnlAuth: TPanel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - lblKeyIndex: TLabel; - cboKeyIndex: TComboBox; - lblPKKey: TLabel; - pgLinearReadWrite: TPageControl; - tabLinearRead: TTabSheet; - tabLinearReadAKM12: TTabSheet; - tabLinearReadPK: TTabSheet; - tabLinearWrite: TTabSheet; - tabLinearWriteAKM12: TTabSheet; - tabLinearWritePK: TTabSheet; - lblLinearRead: TLabel; - lblLReadLinearAddress: TLabel; - txtLRLinearAddress: TEdit; - lblLRDataLength: TLabel; - txtLRDataLength: TEdit; - btnLinearRead: TButton; - pgLinearReadAKM12: TPageControl; - tabLinearReadAKM1: TTabSheet; - tabLinearReadAKM2: TTabSheet; - lblLRAKM1LinearRead: TLabel; - lblLRAKM1LinearAddress: TLabel; - txtLRLinearAddressAKM1: TEdit; - lblLRAKM1DataLength: TLabel; - txtLRDataLengthAKM1: TEdit; - btnLinearReadAKM1: TButton; - Label4: TLabel; - lblLRLinearAddressAKM2: TLabel; - txtLRLinearAddressAKM2: TEdit; - txtLRDataLengthAKM2: TEdit; - btnLinearReadAKM2: TButton; - lblLRDataLengthAKM2: TLabel; - Label7: TLabel; - lblLRLinearAddressPK: TLabel; - txtLRLinearAddressPK: TEdit; - lblLRDataLengthPK: TLabel; - txtLRDataLengthPK: TEdit; - btnLinearReadPK: TButton; - lblLWLinearWrite: TLabel; - lblLWLinearAddress: TLabel; - txtLWLinearAddress: TEdit; - lblLWDataLength: TLabel; - txtLWDataLength: TEdit; - btnLinearWrite: TButton; - lblLinearWritePK: TLabel; - lblLWLinearAddressPK: TLabel; - txtLWLinearAddressPK: TEdit; - lblLWDataLengthPK: TLabel; - txtLWDataLengthPK: TEdit; - btnLinearWritePK: TButton; - pgLinearWriteAKM12: TPageControl; - tabLinearWriteAKM1: TTabSheet; - lblLinearWriteAKM1: TLabel; - lblLWLinearAddressAKM1: TLabel; - lblLWDataLengthAKM1: TLabel; - txtLWLinearAddressAKM1: TEdit; - txtLWDataLengthAKM1: TEdit; - btnLinearWriteAKM1: TButton; - tabLinearWriteAKM2: TTabSheet; - lblLinearWriteAKM2: TLabel; - lblLWLinearAddressAKM2: TLabel; - lblLWDataLengthAKM2: TLabel; - txtLWLinearAddressAKM2: TEdit; - txtLWDataLengthAKM2: TEdit; - btnLinearWriteAKM2: TButton; - lblBytesRead: TLabel; - txtReadBytes: TEdit; - lblReadBytesAKM1: TLabel; - txtReadBytesAKM1: TEdit; - lblReadBytesAKM2: TLabel; - txtReadBytesAKM2: TEdit; - lblReadBytesPK: TLabel; - txtReadBytesPK: TEdit; - lblBytesWritten: TLabel; - txtBytesWritten: TEdit; - lblBytesWrittenAKM1: TLabel; - txtBytesWrittenAKM1: TEdit; - lblBytesWrittenAKM2: TLabel; - txtBytesWrittenAKM2: TEdit; - lblBytesWrittenPK: TLabel; - txtBytesWrittenPK: TEdit; - txtLinearRead: TRichEdit; - txtLinearReadAKM1: TRichEdit; - txtLinearReadAKM2: TRichEdit; - txtLinearReadPK: TRichEdit; - txtLinearWrite: TRichEdit; - txtLinearWritePK: TRichEdit; - txtLinearWriteAKM1: TRichEdit; - txtLinearWriteAKM2: TRichEdit; - procedure FormCreate(Sender: TObject); - procedure btnLinearReadClick(Sender: TObject); - procedure btnLinearReadAKM1Click(Sender: TObject); - procedure btnLinearReadAKM2Click(Sender: TObject); - procedure btnLinearReadPKClick(Sender: TObject); - procedure btnLinearWriteClick(Sender: TObject); - procedure btnLinearWriteAKM1Click(Sender: TObject); - procedure btnLinearWriteAKM2Click(Sender: TObject); - procedure btnLinearWritePKClick(Sender: TObject); - procedure txtLinearWriteChange(Sender: TObject); - procedure txtLinearWriteAKM2Change(Sender: TObject); - procedure txtLinearWriteAKM1Change(Sender: TObject); - procedure txtLinearWritePKChange(Sender: TObject); - private - - procedure OnPKKeyExit(Sender:TObject); - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - public - { Public declarations } - end; - type - TByteArray=array of Byte; -var - frmLinearReadWrite: TfrmLinearReadWrite; - - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmLinearReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmLinearReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmLinearReadWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmLinearReadWrite.btnLinearReadClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLRDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLRLinearAddress.Text); - wDataLength :=StrToInt(txtLRDataLength.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - - iFResult:=LinearRead(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - txtLinearRead.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytes.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(Trim(txtLRLinearAddressAKM1.Text)); - wDataLength :=StrToInt(Trim(txtLRDataLengthAKM1.Text)); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM1(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtLinearReadAKM1.Text:=String(baReadData); - txtReadBytesAKM1.Text :=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM1.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - PData :PByte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLRLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLRDataLengthAKM2.Text); - SetLength(baReadData,wDataLength); - PData :=PByte(@baReadData[0]); - - iFResult:=LinearRead_AKM2(PData,wLinearAddress,wDataLength,wBytesRet,bAuthMode); - if iFResult=DL_OK then - begin - txtReadBytesAKM2.Text :=IntToStr(wBytesRet); - txtLinearReadAKM2.Text:=String(baReadData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesAKM2.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - PData:=nil; - Dispose(PData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearReadPKClick(Sender: TObject); -var - pData, - pPKKey :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesRet :Word; - baReadData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - bBr :Byte; -begin - try - if Trim(txtLRLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLRLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLRDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLRDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - New(pData); - New(pPKKey); - - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLRLinearAddressPK.Text); - wDataLength :=StrToInt(txtLRDataLengthPK.Text); - - SetLength(baReadData,wDataLength); - pData :=PByte(@baReadData[0]); - pPKKEY:=@PKKey; - iFResult:=LinearRead_PK(pData,wLinearAddress,wDataLength,wBytesRet,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtLinearReadPK.Text:=String(baReadData); - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtReadBytesPK.Text:=IntToStr(wBytesRet); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteClick(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bKeyIndex :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWrite.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWrite.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddress.SetFocus; - Exit; - end; - if Trim(txtLWDataLength.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLength.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - wLinearAddress :=StrToInt(txtLWLinearAddress.Text); - wDataLength :=StrToInt(txtLWDataLength.Text); - pData :=PByte(txtLinearWrite.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWritten.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM1Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM1.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM1.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM1.Text); - pData :=PByte(txtLinearWriteAKM1.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM1(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM1.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmLinearReadWrite.btnLinearWriteAKM2Click(Sender: TObject); -var - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode :Byte; - iFResult :DL_STATUS; - pData :PByte; -begin - try - if Trim(txtLinearWriteAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWriteAKM2.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(PData); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressAKM2.Text); - wDataLength :=StrToInt(txtLWDataLengthAKM2.Text); - pData :=PByte(txtLinearWriteAKM2.Text); - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_AKM2(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode); - if iFResult=DL_OK then - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenAKM2.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmLinearReadWrite.btnLinearWritePKClick(Sender: TObject); -var - pPKKEY, - pData :PByte; - PKKey :array[0..5] of Byte; - wLinearAddress, - wDataLength, - wBytesWritten :Word; - baWriteData :array of Byte; - bAuthMode, - bBr :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtLinearWritePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtLinearWritePK.SetFocus; - Exit; - end; - if Trim(txtLWLinearAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the LINEAR ADDRESS !',mtWarning,[mbOK],0); - txtLWLinearAddressPK.SetFocus; - Exit; - end; - if Trim(txtLWDataLengthPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DATA LENGTH !',mtWarning,[mbOK],0); - txtLWDataLengthPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - for bBr:=0 to 5 do - PKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - New(pData); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - wLinearAddress :=StrToInt(txtLWLinearAddressPK.Text); - wDataLength :=StrToInt(txtLWDataLengthPK.Text); - pData :=PByte(txtLinearWritePK.Text); - pPKKEY :=@PKKey; - SetLength(baWriteData,wDataLength); - - iFResult:=LinearWrite_PK(pData,wLinearAddress,wDataLength,wBytesWritten,bAuthMode,pPKKEY); - if iFResult=DL_OK then - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end - else - begin - txtBytesWrittenPK.Text:=IntToStr(wBytesWritten); - ReaderUISignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbLinearReadWrite,iFResult); - end; - finally - pData :=nil; - pPKKEY:=nil; - Dispose(pData); - Dispose(pPKKEY); - frmuFrAdvanced.FunctionStart:=false; - end; - end; - - - -procedure TfrmLinearReadWrite.txtLinearWriteChange(Sender: TObject); -begin - txtLWDataLength.Text:=IntToStr(Length(Trim(txtLinearWrite.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM2Change(Sender: TObject); -begin - txtLWDataLengthAKM2.Text:=IntToStr(Length(Trim(txtLinearWriteAKM2.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWriteAKM1Change(Sender: TObject); -begin - txtLWDataLengthAKM1.Text:=IntToStr(Length(Trim(txtLinearWriteAKM1.Text))); -end; - -procedure TfrmLinearReadWrite.txtLinearWritePKChange(Sender: TObject); -begin - txtLWDataLengthPK.Text:=IntToStr(Length(Trim(txtLinearWritePK.Text))); -end; - -end. diff --git a/uFCoderAdvance_XE/SectorTrailerWrite.dcu b/uFCoderAdvance_XE/SectorTrailerWrite.dcu deleted file mode 100644 index f8be859138c5d1c14a4d7b807ec6ebd59194e551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10541 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/SectorTrailerWrite.dfm b/uFCoderAdvance_XE/SectorTrailerWrite.dfm deleted file mode 100644 index bb49d1c..0000000 --- a/uFCoderAdvance_XE/SectorTrailerWrite.dfm +++ /dev/null @@ -1,1117 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 379 - Top = 147 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 521 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 521 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 414 - Width = 521 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 521 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - object chkKeyADefault: TCheckBox - Left = 170 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Default' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = chkKeyADefaultClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 260 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 258 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - object chkKeyBDefault: TCheckBox - Left = 170 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Default' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = chkKeyBDefaultClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 521 - Height = 261 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - end - end - end -end diff --git a/uFCoderAdvance_XE/SectorTrailerWrite.pas b/uFCoderAdvance_XE/SectorTrailerWrite.pas deleted file mode 100644 index 1780c30..0000000 --- a/uFCoderAdvance_XE/SectorTrailerWrite.pas +++ /dev/null @@ -1,244 +0,0 @@ -unit SectorTrailerWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyADefault: TCheckBox; - chkKeyBHex: TCheckBox; - chkKeyBDefault: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - private - res:DL_STATUS; - KeyA:array[0..5] of Byte; - KeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - UFRCoder; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',true,OnKeyAPress); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',true,OnKeyBPress); -end; - -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin - CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin - CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - KeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - KeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else begin - for br:=0 to 5 do begin - KeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - KeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - key_index:Byte; - auth_mode:Byte; - addressing_mode:Byte; - block_or_sector_address:Byte; - access_bits0:Byte; - access_bits1:Byte; - access_bits2:Byte; - trailer_access_bits:Byte; - trailer_Byte_9:Byte; - PKeyA:PByte; - PKeyB:PByte; -begin - - PKeyA:=nil; - PKeyB:=nil; - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then begin - MessageDlg('You must enter BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then begin - MessageDlg('You must enter TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - key_index:=cboKeyIndex.ItemIndex; - if rbAUTH1A.Checked then auth_mode:=MIFARE_AUTHENT1A else auth_mode:=MIFARE_AUTHENT1B; - - addressing_mode:=cboAddressingMode.ItemIndex; - block_or_sector_address:=StrToInt(txtBlockSectorAddress.Text); - access_bits0:=cboAccessBits0.ItemIndex; - access_bits1:=cboAccessBits1.ItemIndex; - access_bits2:=cboAccessBits2.ItemIndex; - trailer_access_bits:=cboTrailerAccessBits.ItemIndex; - trailer_Byte_9:=StrToInt(txtTrailerByte9.text); - WriteKeyAB; - PKeyA:=@KeyA; - PKeyB:=@KeyB; - res:=SectorTrailerWrite(addressing_mode,block_or_sector_address,PKeyA,access_bits0,access_bits1, - access_bits2,trailer_access_bits,trailer_Byte_9,PKeyB,auth_mode,key_index); - - if res=DL_OK then begin - ReaderUISignal(RES_OK_LIGHT,RES_OK_SOUND); - Status_Bar_Error_Reporting(stbSectorTrailerWrite,res); - end - else - begin - ReaderUiSignal(ERROR_LIGHT,ERROR_SOUND); - Status_Bar_Error_Reporting(stbSectorTrailerWrite,res); - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; -end; - -end. diff --git a/uFCoderAdvance_XE/SectorTrailersWrite.dcu b/uFCoderAdvance_XE/SectorTrailersWrite.dcu deleted file mode 100644 index b90a0d501593a6da41419b4ab2a0bf92ce0d4630..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27753 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 diff --git a/uFCoderAdvance_XE/SectorTrailersWrite.ddp b/uFCoderAdvance_XE/SectorTrailersWrite.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/SectorTrailersWrite.dfm b/uFCoderAdvance_XE/SectorTrailersWrite.dfm deleted file mode 100644 index 26b053b..0000000 --- a/uFCoderAdvance_XE/SectorTrailersWrite.dfm +++ /dev/null @@ -1,1100 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 389 - Top = 154 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 402 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 513 - Height = 249 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM1Click - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM2Click - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 108 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 77 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWritePKClick - end - end - end -end diff --git a/uFCoderAdvance_XE/SectorTrailersWrite.pas b/uFCoderAdvance_XE/SectorTrailersWrite.pas deleted file mode 100644 index 17e935f..0000000 --- a/uFCoderAdvance_XE/SectorTrailersWrite.pas +++ /dev/null @@ -1,520 +0,0 @@ -unit SectorTrailersWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyBHex: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - procedure btnSectorTrailerWriteAKM1Click(Sender: TObject); - procedure btnSectorTrailerWriteAKM2Click(Sender: TObject); - procedure btnSectorTrailerWritePKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmSectorTrailerWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; -procedure TfrmSectorTrailerWrite.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmSectorTrailerWrite.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - - bAddressingMode :=cboAddressingMode.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddress.Text); - bAccessBits0 :=cboAccessBits0.ItemIndex; - bAccessBits1 :=cboAccessBits1.ItemIndex; - bAccessBits2 :=cboAccessBits2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9.text); - - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM1.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM1.Text); - bAccessBits0 :=cboAccessBits0AKM1.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM1.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM1.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM1.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM1(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM2(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9PK.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=SectorTrailerWrite_PK(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode, - pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA :=nil; - pKeyB :=nil; - pPKkey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - - - - -end. diff --git a/uFCoderAdvance_XE/SectorTrailersWrite.~ddp b/uFCoderAdvance_XE/SectorTrailersWrite.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/SectorTrailersWrite.~dfm b/uFCoderAdvance_XE/SectorTrailersWrite.~dfm deleted file mode 100644 index 1503392..0000000 --- a/uFCoderAdvance_XE/SectorTrailersWrite.~dfm +++ /dev/null @@ -1,1100 +0,0 @@ -object frmSectorTrailerWrite: TfrmSectorTrailerWrite - Left = 389 - Top = 154 - Width = 529 - Height = 460 - Caption = 'SectorTrailerWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'SectorTrailer Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbSectorTrailerWrite: TStatusBar - Left = 0 - Top = 403 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pnlKeyContainer: TPanel - Left = 0 - Top = 56 - Width = 513 - Height = 97 - Align = alTop - TabOrder = 3 - object pnlKeyA: TPanel - Left = 1 - Top = 1 - Width = 259 - Height = 95 - Align = alLeft - TabOrder = 0 - object lblKeyA: TStaticText - Left = 1 - Top = 1 - Width = 257 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY A' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyAHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyAHexClick - end - end - object pnlKeyB: TPanel - Left = 260 - Top = 1 - Width = 252 - Height = 95 - Align = alClient - TabOrder = 1 - object lblKeyB: TStaticText - Left = 1 - Top = 1 - Width = 250 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'KEY B' - Color = clWhite - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object chkKeyBHex: TCheckBox - Left = 34 - Top = 64 - Width = 65 - Height = 17 - Caption = 'Hex' - TabOrder = 1 - OnClick = chkKeyBHexClick - end - end - end - object tpgSectorTrailerWrite: TPageControl - Left = 0 - Top = 153 - Width = 513 - Height = 250 - ActivePage = tabSectorTrailerWrite - Align = alClient - TabOrder = 4 - object tabSectorTrailerWrite: TTabSheet - Caption = 'SectorTrailer Write' - object lblAdressinhMode: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockorSectorAddress: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBits: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingMode: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddress: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBits: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWrite: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteClick - end - end - object tabSectorTrailerAKM1: TTabSheet - Caption = 'SectorTrailer AKM1' - ImageIndex = 1 - object Label1: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM1: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBitsAKM1: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM1: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2AKM1: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM1: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM1: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM1: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM1: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM1: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM1: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM1: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM1: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM1: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM1: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM1Click - end - end - object tabSectorTrailerAKM2: TTabSheet - Caption = 'SectorTrailer AKM2' - ImageIndex = 2 - object lblAddressingModeAKM2: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressAKM2: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0AKM2: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1AKM2: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object Label12: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsAKM2: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9AKM2: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModeAKM2: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressAKM2: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0AKM2: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1AKM2: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2AKM2: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsAKM2: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9AKM2: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWriteAKM2: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWriteAKM2Click - end - end - object tabSectorTrailerPK: TTabSheet - Caption = 'SectorTrailer PK' - ImageIndex = 3 - object lblAddressingModePK: TLabel - Left = 32 - Top = 46 - Width = 97 - Height = 13 - Caption = 'Addressing Mode' - end - object lblBlockSectorAddressPK: TLabel - Left = 32 - Top = 74 - Width = 138 - Height = 13 - Caption = 'Block or Sector Address' - end - object lblAccessBits0PK: TLabel - Left = 32 - Top = 102 - Width = 75 - Height = 13 - Caption = 'Access Bits 0' - end - object lblAccessBits1PK: TLabel - Left = 32 - Top = 130 - Width = 75 - Height = 13 - Caption = 'Access Bits 1' - end - object lblAccessBits2PK: TLabel - Left = 32 - Top = 158 - Width = 75 - Height = 13 - Caption = 'Access Bits 2' - end - object lblTrailerAccessBitsPK: TLabel - Left = 272 - Top = 44 - Width = 109 - Height = 13 - Caption = 'Trailer Access Bits ' - end - object lblTrailerByte9PK: TLabel - Left = 273 - Top = 72 - Width = 78 - Height = 13 - Caption = 'Trailer Byte 9' - end - object cboAddressingModePK: TComboBox - Left = 176 - Top = 42 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 0 - Text = '0' - Items.Strings = ( - '0' - '1') - end - object txtBlockSectorAddressPK: TEdit - Left = 176 - Top = 70 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - end - object cboAccessBits0PK: TComboBox - Left = 177 - Top = 98 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits1PK: TComboBox - Left = 177 - Top = 125 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 3 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboAccessBits2PK: TComboBox - Left = 177 - Top = 153 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 4 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object cboTrailerAccessBitsPK: TComboBox - Left = 417 - Top = 40 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 18 - ItemIndex = 0 - ParentFont = False - TabOrder = 5 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7') - end - object txtTrailerByte9PK: TEdit - Left = 417 - Top = 68 - Width = 44 - Height = 26 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 6 - end - object btnSectorTrailerWritePK: TButton - Left = 272 - Top = 100 - Width = 190 - Height = 78 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 7 - OnClick = btnSectorTrailerWritePKClick - end - end - end -end diff --git a/uFCoderAdvance_XE/SectorTrailersWrite.~pas b/uFCoderAdvance_XE/SectorTrailersWrite.~pas deleted file mode 100644 index d5021db..0000000 --- a/uFCoderAdvance_XE/SectorTrailersWrite.~pas +++ /dev/null @@ -1,520 +0,0 @@ -unit SectorTrailersWrite; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,Global,uFCoder1x, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmSectorTrailerWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbSectorTrailerWrite: TStatusBar; - pnlKeyContainer: TPanel; - pnlKeyA: TPanel; - pnlKeyB: TPanel; - tpgSectorTrailerWrite: TPageControl; - tabSectorTrailerWrite: TTabSheet; - tabSectorTrailerAKM2: TTabSheet; - tabSectorTrailerPK: TTabSheet; - tabSectorTrailerAKM1: TTabSheet; - lblAdressinhMode: TLabel; - cboAddressingMode: TComboBox; - lblBlockorSectorAddress: TLabel; - txtBlockSectorAddress: TEdit; - lblAccessBits0: TLabel; - cboAccessBits0: TComboBox; - lblAccessBits1: TLabel; - cboAccessBits1: TComboBox; - lblAccessBits2: TLabel; - cboAccessBits2: TComboBox; - lblTrailerAccessBits: TLabel; - cboTrailerAccessBits: TComboBox; - lblTrailerByte9: TLabel; - txtTrailerByte9: TEdit; - btnSectorTrailerWrite: TButton; - Label1: TLabel; - lblBlockSectorAddressAKM1: TLabel; - lblAccessBitsAKM1: TLabel; - cboAddressingModeAKM1: TComboBox; - txtBlockSectorAddressAKM1: TEdit; - cboAccessBits0AKM1: TComboBox; - lblAccessBits1AKM1: TLabel; - cboAccessBits1AKM1: TComboBox; - lblAccessBits2AKM1: TLabel; - cboAccessBits2AKM1: TComboBox; - lblTrailerAccessBitsAKM1: TLabel; - cboTrailerAccessBitsAKM1: TComboBox; - lblTrailerByte9AKM1: TLabel; - txtTrailerByte9AKM1: TEdit; - btnSectorTrailerWriteAKM1: TButton; - lblAddressingModeAKM2: TLabel; - lblBlockSectorAddressAKM2: TLabel; - lblAccessBits0AKM2: TLabel; - cboAddressingModeAKM2: TComboBox; - txtBlockSectorAddressAKM2: TEdit; - cboAccessBits0AKM2: TComboBox; - lblAccessBits1AKM2: TLabel; - cboAccessBits1AKM2: TComboBox; - Label12: TLabel; - cboAccessBits2AKM2: TComboBox; - lblTrailerAccessBitsAKM2: TLabel; - cboTrailerAccessBitsAKM2: TComboBox; - lblTrailerByte9AKM2: TLabel; - txtTrailerByte9AKM2: TEdit; - btnSectorTrailerWriteAKM2: TButton; - lblAddressingModePK: TLabel; - lblBlockSectorAddressPK: TLabel; - lblAccessBits0PK: TLabel; - cboAddressingModePK: TComboBox; - txtBlockSectorAddressPK: TEdit; - cboAccessBits0PK: TComboBox; - lblAccessBits1PK: TLabel; - cboAccessBits1PK: TComboBox; - lblAccessBits2PK: TLabel; - cboAccessBits2PK: TComboBox; - lblTrailerAccessBitsPK: TLabel; - cboTrailerAccessBitsPK: TComboBox; - lblTrailerByte9PK: TLabel; - txtTrailerByte9PK: TEdit; - btnSectorTrailerWritePK: TButton; - lblKeyA: TStaticText; - lblKeyB: TStaticText; - chkKeyAHex: TCheckBox; - chkKeyBHex: TCheckBox; - procedure FormCreate(Sender: TObject); - procedure chkKeyAHexClick(Sender: TObject); - procedure chkKeyADefaultClick(Sender: TObject); - procedure chkKeyBDefaultClick(Sender: TObject); - procedure chkKeyBHexClick(Sender: TObject); - procedure btnSectorTrailerWriteClick(Sender: TObject); - procedure btnSectorTrailerWriteAKM1Click(Sender: TObject); - procedure btnSectorTrailerWriteAKM2Click(Sender: TObject); - procedure btnSectorTrailerWritePKClick(Sender: TObject); - private - - baKeyA:array[0..5] of Byte; - baKeyB:array[0..5] of Byte; - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - procedure OnKeyAPress(Sender:TObject;var Key:Char); - procedure OnKeyBPress(Sender:TObject;var Key:Char); - procedure OnKeysA_Exit(Sender:TObject); - procedure OnKeysB_Exit(Sender:TObject); - procedure WriteKeyAB; - public - { Public declarations } - end; - -var - frmSectorTrailerWrite: TfrmSectorTrailerWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TForm1 } - -procedure TfrmSectorTrailerWrite.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmSectorTrailerWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmSectorTrailerWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); - CreateKey(self,21,33,32,32,pnlKeyA,'txtKeyA',false,OnKeyAPress,OnKeysA_Exit); - CreateKey(self,21,33,32,32,pnlKeyB,'txtKeyB',false,OnKeyBPress,OnKeysB_Exit); -end; -procedure TfrmSectorTrailerWrite.OnKeysA_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyAHex); -end; -procedure TfrmSectorTrailerWrite.OnKeysB_Exit(Sender: TObject); -begin - OnMyExit(Sender,chkKeyBHex); -end; -procedure TfrmSectorTrailerWrite.OnKeyAPress(Sender: TObject;var Key: Char); -begin - Check_Key_press(Sender,chkKeyAHex,Key); -end; - -procedure TfrmSectorTrailerWrite.chkKeyAHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyADefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyADefault,chkKeyAHex,'txtKeyA'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBDefaultClick(Sender: TObject); -begin -// CheckDefault(self,5,chkKeyBDefault,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.chkKeyBHexClick(Sender: TObject); -begin - CheckHex(self,5,chkKeyBHex,'txtKeyB'); -end; - -procedure TfrmSectorTrailerWrite.OnKeyBPress(Sender: TObject; - var Key: Char); -begin - Check_Key_press(Sender,chkKeyBHex,Key); -end; - -procedure TfrmSectorTrailerWrite.WriteKeyAB; -var - br:integer; -begin - if (chkKeyAHex.Checked) or (chkKeyBHex.Checked) then begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(HexDisplayPrefix+TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end - else - begin - for br:=0 to 5 do - begin - baKeyA[br]:=StrToInt(TEdit(FindComponent('txtKeyA'+IntToStr(br+1))).Text); - baKeyB[br]:=StrToInt(TEdit(FindComponent('txtKeyB'+IntToStr(br+1))).Text); - end; - end; - -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteClick(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode, - bKeyIndex :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddress.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - - bAddressingMode :=cboAddressingMode.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddress.Text); - bAccessBits0 :=cboAccessBits0.ItemIndex; - bAccessBits1 :=cboAccessBits1.ItemIndex; - bAccessBits2 :=cboAccessBits2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBits.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9.text); - - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM1Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM1.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM1.Text); - bAccessBits0 :=cboAccessBits0AKM1.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM1.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM1.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM1.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM1.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM1(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWriteAKM2Click(Sender: TObject); -var - pKeyA, - pKeyB :PByte; - bAuthMode :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9AKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9AKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - iFResult:=SectorTrailerWrite_AKM2(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA:=nil; - pKeyB:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmSectorTrailerWrite.btnSectorTrailerWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pKeyA, - pKeyB, - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bAddressingMode, - bBlockOrSectorAddress, - bAccessBits0, - bAccessBits1, - bAccessBits2, - bSectorTrailerAccessBits, - bSectorTrailerByte9 :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtBlockSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK or SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtBlockSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtTrailerByte9PK.Text)=EmptyStr then - begin - MessageDlg('You must enter the TRAILER BYTE 9 !',mtWarning,[mbOK],0); - txtTrailerByte9PK.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pKeyA); - New(pKeyB); - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - bAddressingMode :=cboAddressingModeAKM2.ItemIndex; - bBlockOrSectorAddress :=StrToInt(txtBlockSectorAddressAKM2.Text); - bAccessBits0 :=cboAccessBits0AKM2.ItemIndex; - bAccessBits1 :=cboAccessBits1AKM2.ItemIndex; - bAccessBits2 :=cboAccessBits2AKM2.ItemIndex; - bSectorTrailerAccessBits :=cboTrailerAccessBitsAKM2.ItemIndex; - bSectorTrailerByte9 :=StrToInt(txtTrailerByte9AKM2.text); - WriteKeyAB; - pKeyA:=@baKeyA; - pKeyB:=@baKeyB; - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=SectorTrailerWrite_PK(bAddressingMode,bBlockOrSectorAddress, - pKeyA, - bAccessBits0,bAccessBits1,bAccessBits2, - bSectorTrailerAccessBits,bSectorTrailerByte9, - pKeyB, - bAuthMode, - pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbSectorTrailerWrite,iFResult); - end; - finally - pKeyA :=nil; - pKeyB :=nil; - pPKkey:=nil; - Dispose(pKeyA); - Dispose(pKeyB); - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - - - - -end. diff --git a/uFCoderAdvance_XE/ValueBlock.dcu b/uFCoderAdvance_XE/ValueBlock.dcu deleted file mode 100644 index 417443da7c0cb724c03ab19081a66b81ca5140a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30248 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

I$o~$?Z|i@R0rnQC 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 HA)fyadJw%9 diff --git a/uFCoderAdvance_XE/ValueBlock.ddp b/uFCoderAdvance_XE/ValueBlock.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlock.dfm b/uFCoderAdvance_XE/ValueBlock.dfm deleted file mode 100644 index 827585c..0000000 --- a/uFCoderAdvance_XE/ValueBlock.dfm +++ /dev/null @@ -1,1093 +0,0 @@ -object frmValueBlockReadWrite: TfrmValueBlockReadWrite - Left = 531 - Top = 222 - Width = 529 - Height = 420 - Caption = 'ValueBlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockReadWrite: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 305 - ActivePage = tavValueBlockRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockRead: TTabSheet - Caption = 'ValueBlock Read' - object pnlValueBlockRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBRValueAddress: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadData: TLabel - Left = 9 - Top = 86 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddress: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBRValueAddress: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 0 - end - object txtVBRReadValue: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockValueRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockValueReadClick - end - object txtVBRBlockAddress: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBRValueAddressAKM1: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM1: TLabel - Left = 9 - Top = 86 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM1: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM1: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM1: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM1: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM1Click - end - object txtVBRBlockAddressAKM1: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBRValueAddressAKM2: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM2: TLabel - Left = 9 - Top = 90 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM2: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM2: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM2: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM2: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM2Click - end - object txtVBRBlockAddressAKM2: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBRValueAddressPK: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValuePK: TLabel - Left = 9 - Top = 90 - Width = 64 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressPK: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressPK: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValuePK: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadPK: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadPKClick - end - object txtVBRBlockAddressPK: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - end - object tabValueBlockWrite: TTabSheet - Caption = 'ValueBlock Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBWWriteData: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddress: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddress: TLabel - Left = 9 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 127 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteData: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWrite: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteClick - end - object txtVBWBlockAddress: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddress: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBWWriteDataAKM1: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM1: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM1: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM1: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM1Click - end - object txtVBWBlockAddressAKM1: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM1: TEdit - Left = 114 - Top = 94 - Width = 37 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBWWriteDataAKM2: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWAKM2: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM2: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM2: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 55 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM2Click - end - object txtVBWBlockAddressAKM2: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM2: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label9: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressPK: TLabel - Left = 9 - Top = 100 - Width = 81 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWPK: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataPK: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWritePK: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWritePKClick - end - object txtVBWBlockAddressPK: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressPK: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlock.pas b/uFCoderAdvance_XE/ValueBlock.pas deleted file mode 100644 index a8e6919..0000000 --- a/uFCoderAdvance_XE/ValueBlock.pas +++ /dev/null @@ -1,599 +0,0 @@ -unit ValueBlock; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, - Forms,Dialogs,Global,uFCoder, - ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockReadWrite: TStatusBar; - pgValueBlockReadWrite: TPageControl; - tavValueBlockRead: TTabSheet; - pnlValueBlockRead: TPanel; - lblVBRValueAddress: TLabel; - lblVBRReadData: TLabel; - lblVBRBlockAddress: TLabel; - lblVBRead: TStaticText; - txtVBRValueAddress: TEdit; - txtVBRReadValue: TEdit; - btnBlockValueRead: TButton; - txtVBRBlockAddress: TEdit; - pnlValueBlockReadAKM1: TPanel; - lblVBRAKM1: TStaticText; - pnlValueBlockReadAKM2: TPanel; - lblVBRAKM2: TStaticText; - pnlValueBlockReadPK: TPanel; - lblBRPK: TStaticText; - tabValueBlockWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblVBWWriteData: TLabel; - lblVBWBlockAddress: TLabel; - lblBISWBlockWrite: TStaticText; - txtVBWWriteData: TEdit; - btnValueBlockWrite: TButton; - txtVBWBlockAddress: TEdit; - pnlBlockWriteAKM1: TPanel; - lblVBWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblVBWAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblVBWPK: TStaticText; - lblVBRValueAddressAKM1: TLabel; - lblVBRReadValueAKM1: TLabel; - lblVBRBlockAddressAKM1: TLabel; - txtVBRValueAddressAKM1: TEdit; - txtVBRReadValueAKM1: TEdit; - btnValueBlockReadAKM1: TButton; - txtVBRBlockAddressAKM1: TEdit; - lblVBRValueAddressAKM2: TLabel; - lblVBRReadValueAKM2: TLabel; - lblVBRBlockAddressAKM2: TLabel; - txtVBRValueAddressAKM2: TEdit; - txtVBRReadValueAKM2: TEdit; - btnValueBlockReadAKM2: TButton; - txtVBRBlockAddressAKM2: TEdit; - lblVBRValueAddressPK: TLabel; - lblVBRReadValuePK: TLabel; - lblVBRBlockAddressPK: TLabel; - txtVBRValueAddressPK: TEdit; - txtVBRReadValuePK: TEdit; - btnValueBlockReadPK: TButton; - txtVBRBlockAddressPK: TEdit; - lblVBWValueAddress: TLabel; - txtVBWValueAddress: TEdit; - lblVBWWriteDataAKM1: TLabel; - lblVBWBlockAddressAKM1: TLabel; - txtVBWWriteDataAKM1: TEdit; - btnValueBlockWriteAKM1: TButton; - txtVBWBlockAddressAKM1: TEdit; - lblVBWValueAddressAKM1: TLabel; - txtVBWValueAddressAKM1: TEdit; - lblVBWWriteDataAKM2: TLabel; - lblVBWBlockAddressAKM2: TLabel; - txtVBWWriteDataAKM2: TEdit; - btnValueBlockWriteAKM2: TButton; - txtVBWBlockAddressAKM2: TEdit; - txtVBWValueAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - Label9: TLabel; - txtVBWWriteDataPK: TEdit; - btnValueBlockWritePK: TButton; - txtVBWBlockAddressPK: TEdit; - lblVBWValueAddressPK: TLabel; - txtVBWValueAddressPK: TEdit; - lblVBWValueAddressAKM2: TLabel; - procedure FormCreate(Sender: TObject); - procedure btnBlockValueReadClick(Sender: TObject); - procedure btnValueBlockReadAKM1Click(Sender: TObject); - procedure btnValueBlockReadAKM2Click(Sender: TObject); - procedure btnValueBlockReadPKClick(Sender: TObject); - procedure btnValueBlockWriteClick(Sender: TObject); - procedure btnValueBlockWriteAKM1Click(Sender: TObject); - procedure btnValueBlockWriteAKM2Click(Sender: TObject); - procedure btnValueBlockWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockReadWrite: TfrmValueBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockReadWrite } - -procedure TfrmValueBlockReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockReadWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockReadWrite.btnBlockValueReadClick(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead(pData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtVBRValueAddress.Text:=IntToStr(bValueAddress); - txtVBRReadValue.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM1Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressAKM1.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM1(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM1.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM1.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM2Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM2(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM2.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM2.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - pData :PLongint; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressPK.Text); - pData :=@iValueData; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - - iFResult:=ValueBlockRead_PK(pData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtVBRValueAddressPK.Text:=IntToStr(bValueAddress); - txtVBRReadValuePK.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteClick(Sender: TObject); -var - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddress.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBWWriteData.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBWValueAddress.Text); - - iFResult:=ValueBlockWrite(iValueData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM1Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM1.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM1.Text); - - iFResult:=ValueBlockWrite_AKM1(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM2Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM2.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM2.Text); - - iFResult:=ValueBlockWrite_AKM2(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressPK.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataPK.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBWValueAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockWrite_PK(iValueData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_XE/ValueBlock.~ddp b/uFCoderAdvance_XE/ValueBlock.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlock.~dfm b/uFCoderAdvance_XE/ValueBlock.~dfm deleted file mode 100644 index 0b87065..0000000 --- a/uFCoderAdvance_XE/ValueBlock.~dfm +++ /dev/null @@ -1,1093 +0,0 @@ -object frmValueBlockReadWrite: TfrmValueBlockReadWrite - Left = 531 - Top = 222 - Width = 529 - Height = 420 - Caption = 'ValueBlockReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read/Write(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockReadWrite: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockReadWrite: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 306 - ActivePage = tavValueBlockRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockRead: TTabSheet - Caption = 'ValueBlock Read' - object pnlValueBlockRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBRValueAddress: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadData: TLabel - Left = 9 - Top = 86 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddress: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBRValueAddress: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 0 - end - object txtVBRReadValue: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 4 - end - object btnBlockValueRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnBlockValueReadClick - end - object txtVBRBlockAddress: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBRValueAddressAKM1: TLabel - Left = 154 - Top = 100 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM1: TLabel - Left = 9 - Top = 86 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM1: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM1: TEdit - Left = 203 - Top = 101 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM1: TEdit - Left = 8 - Top = 104 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM1: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM1Click - end - object txtVBRBlockAddressAKM1: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBRValueAddressAKM2: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValueAKM2: TLabel - Left = 9 - Top = 90 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressAKM2: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBRAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressAKM2: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValueAKM2: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadAKM2: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadAKM2Click - end - object txtVBRBlockAddressAKM2: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 144 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBRValueAddressPK: TLabel - Left = 154 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBRReadValuePK: TLabel - Left = 9 - Top = 90 - Width = 65 - Height = 13 - Caption = 'Read Value' - end - object lblVBRBlockAddressPK: TLabel - Left = 8 - Top = 35 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblBRPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object txtVBRValueAddressPK: TEdit - Left = 203 - Top = 105 - Width = 35 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 1 - end - object txtVBRReadValuePK: TEdit - Left = 8 - Top = 108 - Width = 143 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 2 - end - object btnValueBlockReadPK: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 3 - OnClick = btnValueBlockReadPKClick - end - object txtVBRBlockAddressPK: TEdit - Left = 100 - Top = 32 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 4 - end - end - end - object tabValueBlockWrite: TTabSheet - Caption = 'ValueBlock Write' - ImageIndex = 1 - object pnlBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBWWriteData: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddress: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddress: TLabel - Left = 9 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 127 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteData: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWrite: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteClick - end - object txtVBWBlockAddress: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddress: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBWWriteDataAKM1: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM1: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM1: TLabel - Left = 8 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM1: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM1: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM1Click - end - object txtVBWBlockAddressAKM1: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM1: TEdit - Left = 114 - Top = 94 - Width = 37 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBWWriteDataAKM2: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBWBlockAddressAKM2: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressAKM2: TLabel - Left = 8 - Top = 98 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWAKM2: TStaticText - Left = 2 - Top = 2 - Width = 172 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataAKM2: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWriteAKM2: TButton - Left = 157 - Top = 67 - Width = 87 - Height = 55 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWriteAKM2Click - end - object txtVBWBlockAddressAKM2: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressAKM2: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - object pnlBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblBISWWriteDataPK: TLabel - Left = 49 - Top = 25 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object Label9: TLabel - Left = 8 - Top = 72 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBWValueAddressPK: TLabel - Left = 9 - Top = 100 - Width = 82 - Height = 13 - Alignment = taCenter - Caption = 'Value Address' - end - object lblVBWPK: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBWWriteDataPK: TEdit - Left = 48 - Top = 40 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockWritePK: TButton - Left = 157 - Top = 68 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 3 - OnClick = btnValueBlockWritePKClick - end - object txtVBWBlockAddressPK: TEdit - Left = 114 - Top = 67 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBWValueAddressPK: TEdit - Left = 114 - Top = 94 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlock.~pas b/uFCoderAdvance_XE/ValueBlock.~pas deleted file mode 100644 index 68ef347..0000000 --- a/uFCoderAdvance_XE/ValueBlock.~pas +++ /dev/null @@ -1,598 +0,0 @@ -unit ValueBlock; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,Global,uFCoder1x, - ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockReadWrite: TStatusBar; - pgValueBlockReadWrite: TPageControl; - tavValueBlockRead: TTabSheet; - pnlValueBlockRead: TPanel; - lblVBRValueAddress: TLabel; - lblVBRReadData: TLabel; - lblVBRBlockAddress: TLabel; - lblVBRead: TStaticText; - txtVBRValueAddress: TEdit; - txtVBRReadValue: TEdit; - btnBlockValueRead: TButton; - txtVBRBlockAddress: TEdit; - pnlValueBlockReadAKM1: TPanel; - lblVBRAKM1: TStaticText; - pnlValueBlockReadAKM2: TPanel; - lblVBRAKM2: TStaticText; - pnlValueBlockReadPK: TPanel; - lblBRPK: TStaticText; - tabValueBlockWrite: TTabSheet; - pnlBlockWrite: TPanel; - lblVBWWriteData: TLabel; - lblVBWBlockAddress: TLabel; - lblBISWBlockWrite: TStaticText; - txtVBWWriteData: TEdit; - btnValueBlockWrite: TButton; - txtVBWBlockAddress: TEdit; - pnlBlockWriteAKM1: TPanel; - lblVBWBlockWriteAKM1: TStaticText; - pnlBlockWriteAKM2: TPanel; - lblVBWAKM2: TStaticText; - pnlBlockWritePK: TPanel; - lblVBWPK: TStaticText; - lblVBRValueAddressAKM1: TLabel; - lblVBRReadValueAKM1: TLabel; - lblVBRBlockAddressAKM1: TLabel; - txtVBRValueAddressAKM1: TEdit; - txtVBRReadValueAKM1: TEdit; - btnValueBlockReadAKM1: TButton; - txtVBRBlockAddressAKM1: TEdit; - lblVBRValueAddressAKM2: TLabel; - lblVBRReadValueAKM2: TLabel; - lblVBRBlockAddressAKM2: TLabel; - txtVBRValueAddressAKM2: TEdit; - txtVBRReadValueAKM2: TEdit; - btnValueBlockReadAKM2: TButton; - txtVBRBlockAddressAKM2: TEdit; - lblVBRValueAddressPK: TLabel; - lblVBRReadValuePK: TLabel; - lblVBRBlockAddressPK: TLabel; - txtVBRValueAddressPK: TEdit; - txtVBRReadValuePK: TEdit; - btnValueBlockReadPK: TButton; - txtVBRBlockAddressPK: TEdit; - lblVBWValueAddress: TLabel; - txtVBWValueAddress: TEdit; - lblVBWWriteDataAKM1: TLabel; - lblVBWBlockAddressAKM1: TLabel; - txtVBWWriteDataAKM1: TEdit; - btnValueBlockWriteAKM1: TButton; - txtVBWBlockAddressAKM1: TEdit; - lblVBWValueAddressAKM1: TLabel; - txtVBWValueAddressAKM1: TEdit; - lblVBWWriteDataAKM2: TLabel; - lblVBWBlockAddressAKM2: TLabel; - txtVBWWriteDataAKM2: TEdit; - btnValueBlockWriteAKM2: TButton; - txtVBWBlockAddressAKM2: TEdit; - txtVBWValueAddressAKM2: TEdit; - lblBISWWriteDataPK: TLabel; - Label9: TLabel; - txtVBWWriteDataPK: TEdit; - btnValueBlockWritePK: TButton; - txtVBWBlockAddressPK: TEdit; - lblVBWValueAddressPK: TLabel; - txtVBWValueAddressPK: TEdit; - lblVBWValueAddressAKM2: TLabel; - procedure FormCreate(Sender: TObject); - procedure btnBlockValueReadClick(Sender: TObject); - procedure btnValueBlockReadAKM1Click(Sender: TObject); - procedure btnValueBlockReadAKM2Click(Sender: TObject); - procedure btnValueBlockReadPKClick(Sender: TObject); - procedure btnValueBlockWriteClick(Sender: TObject); - procedure btnValueBlockWriteAKM1Click(Sender: TObject); - procedure btnValueBlockWriteAKM2Click(Sender: TObject); - procedure btnValueBlockWritePKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockReadWrite: TfrmValueBlockReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockReadWrite } - -procedure TfrmValueBlockReadWrite.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockReadWrite.FormCreate(Sender: TObject); -begin - Errors_Code; - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockReadWrite.btnBlockValueReadClick(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead(pData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - txtVBRValueAddress.Text:=IntToStr(bValueAddress); - txtVBRReadValue.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM1Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressAKM1.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM1(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM1.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM1.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadAKM2Click(Sender: TObject); -var - pData :PLongint; - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddress.Text); - pData :=@iValueData; - - iFResult:=ValueBlockRead_AKM2(pData,bValueAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - txtVBRValueAddressAKM2.Text:=IntToStr(bValueAddress); - txtVBRReadValueAKM2.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - pData :PLongint; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bBlockAddress :=StrToInt(txtVBRBlockAddressPK.Text); - pData :=@iValueData; - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - - iFResult:=ValueBlockRead_PK(pData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - if iFResult=DL_OK then - begin - txtVBRValueAddressPK.Text:=IntToStr(bValueAddress); - txtVBRReadValuePK.Text :=IntToStr(iValueData); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteClick(Sender: TObject); -var - iValueData :Longint; - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteData.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddress.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBWWriteData.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBWValueAddress.Text); - - iFResult:=ValueBlockWrite(iValueData,bValueAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM1Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM1.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM1.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM1.Text); - - iFResult:=ValueBlockWrite_AKM1(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWriteAKM2Click(Sender: TObject); -var - iValueData :Longint; - bAuthMode :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressAKM2.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataAKM2.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBWValueAddressAKM2.Text); - - iFResult:=ValueBlockWrite_AKM2(iValueData,bValueAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockReadWrite.btnValueBlockWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - iValueData :Longint; - bAuthMode, - bBr :Byte; - bBlockAddress, - bValueAddress :Byte; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBWWriteDataPK.SetFocus; - Exit; - end; - - if Trim(txtVBWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBWBlockAddressPK.SetFocus; - Exit; - end; - - if Trim(txtVBWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBWWriteDataPK.Text); - bBlockAddress :=StrToInt(txtVBWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBWValueAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockWrite_PK(iValueData,bValueAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockReadWrite,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_XE/ValueBlockInSector.dcu b/uFCoderAdvance_XE/ValueBlockInSector.dcu deleted file mode 100644 index 64cbee8fd81f820a71fe45953ec660b9db17a594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35845 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 E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlockInSector.dfm b/uFCoderAdvance_XE/ValueBlockInSector.dfm deleted file mode 100644 index 6cbb651..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSector.dfm +++ /dev/null @@ -1,1265 +0,0 @@ -object frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite - Left = 519 - Top = 130 - Width = 527 - Height = 418 - Caption = 'ValueBlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 511 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read/Write (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 511 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSector: TStatusBar - Left = 0 - Top = 360 - Width = 511 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSector: TPageControl - Left = 0 - Top = 57 - Width = 511 - Height = 303 - ActivePage = tabValueBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorRead: TTabSheet - Caption = 'ValueBlockInSector Read' - object pnlValueBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadData: TLabel - Left = 8 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddress: TLabel - Left = 156 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadData: TEdit - Left = 6 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadClick - end - object txtVBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddress: TEdit - Left = 205 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadDataAKM1: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddressAKM1: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadDataAKM1: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM1Click - end - object txtVBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddressAKM1: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataAKM2: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressAKM2: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM2Click - end - object txtVBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataAKM2: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressAKM2: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataPK: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressPK: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadPKClick - end - object txtVBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataPK: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressPK: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - end - object tabValueBlockInSectorWrite: TTabSheet - Caption = 'ValueBlockInSector Write' - ImageIndex = 1 - object pnlVBISBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM1: TLabel - Left = 10 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM1: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM1: TLabel - Left = 156 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 234 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM1: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM1Click - end - object txtVBISWBlockAddressAKM1: TEdit - Left = 103 - Top = 55 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM1: TEdit - Left = 9 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM1: TEdit - Left = 103 - Top = 29 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM1: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 61 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM2: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM2: TLabel - Left = 9 - Top = 34 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM2: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 234 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM2: TButton - Left = 157 - Top = 28 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM2Click - end - object txtVBISWBlockAddressAKM2: TEdit - Left = 104 - Top = 56 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM2: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM2: TEdit - Left = 104 - Top = 30 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM2: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISWBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataPK: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddressPK: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddressPK: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 212 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWritePK: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWritePKClick - end - object txtVBISWBlockAddressPK: TEdit - Left = 102 - Top = 55 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataPK: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddressPK: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddressPK: TEdit - Left = 102 - Top = 29 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - object pnlVBISBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISWBlockAddress: TLabel - Left = 8 - Top = 62 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteData: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddress: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddress: TLabel - Left = 9 - Top = 36 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 189 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWrite: TButton - Left = 157 - Top = 30 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteClick - end - object txtVBISWBlockAddress: TEdit - Left = 105 - Top = 57 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteData: TEdit - Left = 8 - Top = 102 - Width = 144 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddress: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddress: TEdit - Left = 105 - Top = 31 - Width = 38 - Height = 21 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlockInSector.pas b/uFCoderAdvance_XE/ValueBlockInSector.pas deleted file mode 100644 index 29bfb28..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSector.pas +++ /dev/null @@ -1,670 +0,0 @@ -unit ValueBlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockInSectorReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSector: TStatusBar; - pgValueBlockInSector: TPageControl; - tabValueBlockInSectorRead: TTabSheet; - pnlValueBlockInSectorRead: TPanel; - lblVBISRSectorAddress: TLabel; - lblVBISRReadData: TLabel; - lblVBISRBlockAddress: TLabel; - lblVBISRead: TStaticText; - txtVBISRSectorAddress: TEdit; - txtVBISRReadData: TEdit; - btnValueBlockInSectorRead: TButton; - txtVBISRBlockAddress: TEdit; - pnlValueBlockInSectorReadAKM1: TPanel; - lblVBISRSectorAddressAKM1: TLabel; - lblVBISRReadDataAKM1: TLabel; - lblVBISRBlockAddressAKM1: TLabel; - lblVBISReadAKM1: TStaticText; - txtVBISRSectorAddressAKM1: TEdit; - txtVBISRReadDataAKM1: TEdit; - btnValueBlockInSectorReadAKM1: TButton; - txtVBISRBlockAddressAKM1: TEdit; - pnlValueBlockInSectorReadAKM2: TPanel; - lblVBISRSectorAddressAKM2: TLabel; - lblVBISRBlockAddressAKM2: TLabel; - lblVBISReadAKM2: TStaticText; - txtVBISRSectorAddressAKM2: TEdit; - btnValueBlockInSectorReadAKM2: TButton; - txtVBISRBlockAddressAKM2: TEdit; - pnlValueBlockReadPK: TPanel; - lblVBISRSectorAddressPK: TLabel; - lblVBISRBlockAddressPK: TLabel; - lblVBISReadPK: TStaticText; - txtVBISRSectorAddressPK: TEdit; - btnValueBlockInSectorReadPK: TButton; - txtVBISRBlockAddressPK: TEdit; - tabValueBlockInSectorWrite: TTabSheet; - pnlVBISBlockWriteAKM1: TPanel; - lblVBISWBlockWriteAKM1: TStaticText; - pnlVBISBlockWriteAKM2: TPanel; - lblVBISWBlockWriteAKM2: TStaticText; - pnlVBISBlockWritePK: TPanel; - lblVBISWBlockWritePK: TStaticText; - lblVBISRValueAddress: TLabel; - txtVBISRValueAddress: TEdit; - lblVBISRValueAddressAKM1: TLabel; - txtVBISRValueAddressAKM1: TEdit; - lblVBISRReadDataAKM2: TLabel; - txtVBISRReadDataAKM2: TEdit; - lblVBISRValueAddressAKM2: TLabel; - txtVBISRValueAddressAKM2: TEdit; - lblVBISRReadDataPK: TLabel; - txtVBISRReadDataPK: TEdit; - lblVBISRValueAddressPK: TLabel; - txtVBISRValueAddressPK: TEdit; - lblVBISWBlockAddressAKM1: TLabel; - btnValueBlockInSectorWriteAKM1: TButton; - txtVBISWBlockAddressAKM1: TEdit; - lblVBISWBlockAddressAKM2: TLabel; - btnValueBlockInSectorWriteAKM2: TButton; - txtVBISWBlockAddressAKM2: TEdit; - lblVBISWBlockAddressPK: TLabel; - btnValueBlockInSectorWritePK: TButton; - txtVBISWBlockAddressPK: TEdit; - pnlVBISBlockWrite: TPanel; - lblVBISWBlockAddress: TLabel; - lblVBISWBlockWrite: TStaticText; - btnValueBlockInSectorWrite: TButton; - txtVBISWBlockAddress: TEdit; - lblVBISWWriteData: TLabel; - txtVBISWWriteData: TEdit; - lblBISRWValueAddress: TLabel; - txtVBISWValueAddress: TEdit; - lblVBISWWriteDataAKM1: TLabel; - txtVBISWWriteDataAKM1: TEdit; - lblVBISWSectorAddress: TLabel; - txtVBISWSectorAddress: TEdit; - lblVBISWSectorAddressAKM1: TLabel; - txtVBISWSectorAddressAKM1: TEdit; - lblBISRWValueAddressAKM1: TLabel; - txtVBISWValueAddressAKM1: TEdit; - lblVBISWWriteDataAKM2: TLabel; - txtVBISWWriteDataAKM2: TEdit; - lblVBISWSectorAddressAKM2: TLabel; - txtVBISWSectorAddressAKM2: TEdit; - lblBISRWValueAddressAKM2: TLabel; - txtVBISWValueAddressAKM2: TEdit; - lblVBISWWriteDataPK: TLabel; - txtVBISWWriteDataPK: TEdit; - lblBISRWValueAddressPK: TLabel; - txtVBISWValueAddressPK: TEdit; - lblVBISWSectorAddressPK: TLabel; - txtVBISWSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorReadClick(Sender: TObject); - procedure btnValueBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorReadPKClick(Sender: TObject); - procedure btnValueBlockInSectorWriteClick(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorWritePKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockInSectorReadWrite } - -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject; - var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadClick(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtVBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddress.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtVBISRReadData.Text :=IntToStr(iValueData); - txtVBISRValueAddress.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM1Click(Sender: TObject); -var - PData :PLongint; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM1.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM1(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM1.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM1.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM2Click(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM2.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM2(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM2.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM2.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - PData :PLongint; - pPKKey :PByte; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress, - bBr :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - pData :=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_PK(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtVBISRReadDataPK.Text :=IntToStr(iValueData); - txtVBISRValueAddressPK.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - - if Trim(txtVBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddress.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBISWWriteData.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBISWValueAddress.Text); - - iFResult:=ValueBlockInSectorWrite(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM1.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM1.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM1.Text); - - iFResult:=ValueBlockInSectorWrite_AKM1(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM2.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM2.Text); - - iFResult:=ValueBlockInSectorWrite_AKM2(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataPK.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorWrite_PK(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pPKKey :=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_XE/ValueBlockInSector.~ddp b/uFCoderAdvance_XE/ValueBlockInSector.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlockInSector.~dfm b/uFCoderAdvance_XE/ValueBlockInSector.~dfm deleted file mode 100644 index 5951382..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSector.~dfm +++ /dev/null @@ -1,1265 +0,0 @@ -object frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite - Left = 519 - Top = 130 - Width = 527 - Height = 418 - Caption = 'ValueBlockInSectorReadWrite' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 511 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read/Write (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 511 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSector: TStatusBar - Left = 0 - Top = 361 - Width = 511 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSector: TPageControl - Left = 0 - Top = 57 - Width = 511 - Height = 304 - ActivePage = tabValueBlockInSectorRead - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorRead: TTabSheet - Caption = 'ValueBlockInSector Read' - object pnlValueBlockInSectorRead: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISRSectorAddress: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadData: TLabel - Left = 8 - Top = 90 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddress: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddress: TLabel - Left = 156 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISRead: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Read' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddress: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadData: TEdit - Left = 6 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorRead: TButton - Left = 152 - Top = 31 - Width = 87 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadClick - end - object txtVBISRBlockAddress: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddress: TEdit - Left = 205 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISRSectorAddressAKM1: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRReadDataAKM1: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRValueAddressAKM1: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM1: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISRReadDataAKM1: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object btnValueBlockInSectorReadAKM1: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 54 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM1Click - end - object txtVBISRBlockAddressAKM1: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRValueAddressAKM1: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockInSectorReadAKM2: TPanel - Left = 3 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISRSectorAddressAKM2: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressAKM2: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataAKM2: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressAKM2: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressAKM2: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadAKM2: TButton - Left = 152 - Top = 31 - Width = 88 - Height = 52 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadAKM2Click - end - object txtVBISRBlockAddressAKM2: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataAKM2: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressAKM2: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - object pnlValueBlockReadPK: TPanel - Left = 262 - Top = 144 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISRSectorAddressPK: TLabel - Left = 8 - Top = 34 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISRBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISRReadDataPK: TLabel - Left = 8 - Top = 91 - Width = 60 - Height = 13 - Caption = 'Read Data' - end - object lblVBISRValueAddressPK: TLabel - Left = 157 - Top = 104 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISReadPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorRead_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBISRSectorAddressPK: TEdit - Left = 100 - Top = 31 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorReadPK: TButton - Left = 154 - Top = 30 - Width = 85 - Height = 53 - Cursor = crHandPoint - Caption = 'READ' - TabOrder = 2 - OnClick = btnValueBlockInSectorReadPKClick - end - object txtVBISRBlockAddressPK: TEdit - Left = 100 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISRReadDataPK: TEdit - Left = 8 - Top = 107 - Width = 147 - Height = 21 - Ctl3D = True - ParentCtl3D = False - ReadOnly = True - TabOrder = 4 - end - object txtVBISRValueAddressPK: TEdit - Left = 206 - Top = 105 - Width = 33 - Height = 24 - Color = clSilver - Ctl3D = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - ReadOnly = True - TabOrder = 5 - end - end - end - object tabValueBlockInSectorWrite: TTabSheet - Caption = 'ValueBlockInSector Write' - ImageIndex = 1 - object pnlVBISBlockWriteAKM1: TPanel - Left = 262 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISWBlockAddressAKM1: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM1: TLabel - Left = 10 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM1: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM1: TLabel - Left = 156 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM1: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM1Click - end - object txtVBISWBlockAddressAKM1: TEdit - Left = 103 - Top = 55 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM1: TEdit - Left = 9 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM1: TEdit - Left = 103 - Top = 29 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM1: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWriteAKM2: TPanel - Left = 3 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISWBlockAddressAKM2: TLabel - Left = 8 - Top = 61 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataAKM2: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblVBISWSectorAddressAKM2: TLabel - Left = 9 - Top = 34 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblBISRWValueAddressAKM2: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWBlockWriteAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWriteAKM2: TButton - Left = 157 - Top = 28 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteAKM2Click - end - object txtVBISWBlockAddressAKM2: TEdit - Left = 104 - Top = 56 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataAKM2: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWSectorAddressAKM2: TEdit - Left = 104 - Top = 30 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object txtVBISWValueAddressAKM2: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - end - object pnlVBISBlockWritePK: TPanel - Left = 262 - Top = 145 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISWBlockAddressPK: TLabel - Left = 8 - Top = 60 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteDataPK: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddressPK: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddressPK: TLabel - Left = 9 - Top = 33 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWritePK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSectorWrite_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWritePK: TButton - Left = 157 - Top = 27 - Width = 87 - Height = 54 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWritePKClick - end - object txtVBISWBlockAddressPK: TEdit - Left = 102 - Top = 55 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteDataPK: TEdit - Left = 8 - Top = 102 - Width = 145 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddressPK: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddressPK: TEdit - Left = 102 - Top = 29 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - object pnlVBISBlockWrite: TPanel - Left = 3 - Top = 9 - Width = 252 - Height = 132 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISWBlockAddress: TLabel - Left = 8 - Top = 62 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISWWriteData: TLabel - Left = 9 - Top = 87 - Width = 61 - Height = 13 - Caption = 'Write Data' - end - object lblBISRWValueAddress: TLabel - Left = 157 - Top = 98 - Width = 46 - Height = 26 - Alignment = taCenter - Caption = 'Value Address' - WordWrap = True - end - object lblVBISWSectorAddress: TLabel - Left = 9 - Top = 36 - Width = 87 - Height = 13 - Alignment = taCenter - Caption = 'Sector Address' - end - object lblVBISWBlockWrite: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Write' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 5 - end - object btnValueBlockInSectorWrite: TButton - Left = 157 - Top = 30 - Width = 87 - Height = 53 - Cursor = crHandPoint - Caption = 'WRITE' - TabOrder = 4 - OnClick = btnValueBlockInSectorWriteClick - end - object txtVBISWBlockAddress: TEdit - Left = 105 - Top = 57 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object txtVBISWWriteData: TEdit - Left = 8 - Top = 102 - Width = 144 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISWValueAddress: TEdit - Left = 205 - Top = 97 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 3 - end - object txtVBISWSectorAddress: TEdit - Left = 105 - Top = 31 - Width = 38 - Height = 26 - Color = clWhite - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlockInSector.~pas b/uFCoderAdvance_XE/ValueBlockInSector.~pas deleted file mode 100644 index 43d96e1..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSector.~pas +++ /dev/null @@ -1,670 +0,0 @@ -unit ValueBlockInSector; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder1x,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockInSectorReadWrite = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSector: TStatusBar; - pgValueBlockInSector: TPageControl; - tabValueBlockInSectorRead: TTabSheet; - pnlValueBlockInSectorRead: TPanel; - lblVBISRSectorAddress: TLabel; - lblVBISRReadData: TLabel; - lblVBISRBlockAddress: TLabel; - lblVBISRead: TStaticText; - txtVBISRSectorAddress: TEdit; - txtVBISRReadData: TEdit; - btnValueBlockInSectorRead: TButton; - txtVBISRBlockAddress: TEdit; - pnlValueBlockInSectorReadAKM1: TPanel; - lblVBISRSectorAddressAKM1: TLabel; - lblVBISRReadDataAKM1: TLabel; - lblVBISRBlockAddressAKM1: TLabel; - lblVBISReadAKM1: TStaticText; - txtVBISRSectorAddressAKM1: TEdit; - txtVBISRReadDataAKM1: TEdit; - btnValueBlockInSectorReadAKM1: TButton; - txtVBISRBlockAddressAKM1: TEdit; - pnlValueBlockInSectorReadAKM2: TPanel; - lblVBISRSectorAddressAKM2: TLabel; - lblVBISRBlockAddressAKM2: TLabel; - lblVBISReadAKM2: TStaticText; - txtVBISRSectorAddressAKM2: TEdit; - btnValueBlockInSectorReadAKM2: TButton; - txtVBISRBlockAddressAKM2: TEdit; - pnlValueBlockReadPK: TPanel; - lblVBISRSectorAddressPK: TLabel; - lblVBISRBlockAddressPK: TLabel; - lblVBISReadPK: TStaticText; - txtVBISRSectorAddressPK: TEdit; - btnValueBlockInSectorReadPK: TButton; - txtVBISRBlockAddressPK: TEdit; - tabValueBlockInSectorWrite: TTabSheet; - pnlVBISBlockWriteAKM1: TPanel; - lblVBISWBlockWriteAKM1: TStaticText; - pnlVBISBlockWriteAKM2: TPanel; - lblVBISWBlockWriteAKM2: TStaticText; - pnlVBISBlockWritePK: TPanel; - lblVBISWBlockWritePK: TStaticText; - lblVBISRValueAddress: TLabel; - txtVBISRValueAddress: TEdit; - lblVBISRValueAddressAKM1: TLabel; - txtVBISRValueAddressAKM1: TEdit; - lblVBISRReadDataAKM2: TLabel; - txtVBISRReadDataAKM2: TEdit; - lblVBISRValueAddressAKM2: TLabel; - txtVBISRValueAddressAKM2: TEdit; - lblVBISRReadDataPK: TLabel; - txtVBISRReadDataPK: TEdit; - lblVBISRValueAddressPK: TLabel; - txtVBISRValueAddressPK: TEdit; - lblVBISWBlockAddressAKM1: TLabel; - btnValueBlockInSectorWriteAKM1: TButton; - txtVBISWBlockAddressAKM1: TEdit; - lblVBISWBlockAddressAKM2: TLabel; - btnValueBlockInSectorWriteAKM2: TButton; - txtVBISWBlockAddressAKM2: TEdit; - lblVBISWBlockAddressPK: TLabel; - btnValueBlockInSectorWritePK: TButton; - txtVBISWBlockAddressPK: TEdit; - pnlVBISBlockWrite: TPanel; - lblVBISWBlockAddress: TLabel; - lblVBISWBlockWrite: TStaticText; - btnValueBlockInSectorWrite: TButton; - txtVBISWBlockAddress: TEdit; - lblVBISWWriteData: TLabel; - txtVBISWWriteData: TEdit; - lblBISRWValueAddress: TLabel; - txtVBISWValueAddress: TEdit; - lblVBISWWriteDataAKM1: TLabel; - txtVBISWWriteDataAKM1: TEdit; - lblVBISWSectorAddress: TLabel; - txtVBISWSectorAddress: TEdit; - lblVBISWSectorAddressAKM1: TLabel; - txtVBISWSectorAddressAKM1: TEdit; - lblBISRWValueAddressAKM1: TLabel; - txtVBISWValueAddressAKM1: TEdit; - lblVBISWWriteDataAKM2: TLabel; - txtVBISWWriteDataAKM2: TEdit; - lblVBISWSectorAddressAKM2: TLabel; - txtVBISWSectorAddressAKM2: TEdit; - lblBISRWValueAddressAKM2: TLabel; - txtVBISWValueAddressAKM2: TEdit; - lblVBISWWriteDataPK: TLabel; - txtVBISWWriteDataPK: TEdit; - lblBISRWValueAddressPK: TLabel; - txtVBISWValueAddressPK: TEdit; - lblVBISWSectorAddressPK: TLabel; - txtVBISWSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorReadClick(Sender: TObject); - procedure btnValueBlockInSectorReadAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorReadAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorReadPKClick(Sender: TObject); - procedure btnValueBlockInSectorWriteClick(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorWriteAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorWritePKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorReadWrite: TfrmValueBlockInSectorReadWrite; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -{ TfrmValueBlockInSectorReadWrite } - -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyPress(Sender: TObject; - var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; -procedure TfrmValueBlockInSectorReadWrite.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorReadWrite.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadClick(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - bSectorAddress :=StrToInt(txtVBISRSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddress.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - txtVBISRReadData.Text :=IntToStr(iValueData); - txtVBISRValueAddress.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM1Click(Sender: TObject); -var - PData :PLongint; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM1.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM1(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM1.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM1.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadAKM2Click(Sender: TObject); -var - PData :PLongint; - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressAKM2.Text); - pData:=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_AKM2(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - txtVBISRReadDataAKM2.Text :=IntToStr(iValueData); - txtVBISRValueAddressAKM2.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData:=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorReadPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - PData :PLongint; - pPKKey :PByte; - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress, - bBr :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISRSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISRBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISRBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pData); - bAuthMode :=AuthMode(rbAUTH1A); - bSectorAddress :=StrToInt(txtVBISRSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISRBlockAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - pData :=PLongint(@iValueData); - - iFResult:=ValueBlockInSectorRead_PK(pData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - txtVBISRReadDataPK.Text :=IntToStr(iValueData); - txtVBISRValueAddressPK.Text:=IntToStr(bValueAddress); - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pData :=nil; - Dispose(pData); - pPKKey :=nil; - Dispose(pData); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - - if Trim(txtVBISWSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddress.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteData.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteData.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddress.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iValueData :=StrToInt(txtVBISWWriteData.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddress.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddress.Text); - bValueAddress :=StrToInt(txtVBISWValueAddress.Text); - - iFResult:=ValueBlockInSectorWrite(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM1.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM1.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM1.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM1.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM1.Text); - - iFResult:=ValueBlockInSectorWrite_AKM1(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWriteAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressAKM2.SetFocus; - Exit; - end; -Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataAKM2.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressAKM2.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressAKM2.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressAKM2.Text); - - iFResult:=ValueBlockInSectorWrite_AKM2(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorReadWrite.btnValueBlockInSectorWritePKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bSectorAddress, - bBlockAddress, - bValueAddress :Byte; - iValueData :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISWSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR ADDRESS !',mtWarning,[mbOK],0); - txtVBISWSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBISWBlockAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISWWriteDataPK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISWWriteDataPK.SetFocus; - Exit; - end; - if Trim(txtVBISWValueAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the VALUE ADDRESS !',mtWarning,[mbOK],0); - txtVBISWValueAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iValueData :=StrToInt(txtVBISWWriteDataPK.Text); - bSectorAddress :=StrToInt(txtVBISWSectorAddressPK.Text); - bBlockAddress :=StrToInt(txtVBISWBlockAddressPK.Text); - bValueAddress :=StrToInt(txtVBISWValueAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorWrite_PK(iValueData,bValueAddress,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFresult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSector,iFResult); - end; - finally - pPKKey :=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -end. diff --git a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.dcu b/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.dcu deleted file mode 100644 index e0bceef49d8ba423152b3187da18371a5daf4cfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33734 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 diff --git a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.ddp b/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.dfm b/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.dfm deleted file mode 100644 index 7e065d3..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.dfm +++ /dev/null @@ -1,1067 +0,0 @@ -object frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr - Left = 432 - Top = 198 - Width = 529 - Height = 420 - Caption = 'ValueBlockInSectorInctDecr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Increment/Decrement (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSectorIncrDecr: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSectorIncDecr: TPageControl - Left = 0 - Top = 56 - Width = 513 - Height = 306 - ActivePage = tabValueBlockInSectorIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorIncrement: TTabSheet - Caption = 'ValueBlockInSector Increment' - object pnlValueBlockInSectorIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISIncrValue: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrement: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementClick - end - object txtVBISIncrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM1: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM1Click - end - object txtVBISIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM2: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM2Click - end - object txtVBISIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementPK: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementPKClick - end - object txtVBISIncrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlockInSector Decrement' - ImageIndex = 1 - object pnlVBISDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDec: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrement: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - HelpType = htKeyword - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementClick - end - object txtVBISDecrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM1: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM1Click - end - object txtVBISDecrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM2: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM2Click - end - object txtVBISDecrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecPK: TStaticText - Left = 2 - Top = 2 - Width = 173 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementPK: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementPKClick - end - object txtVBISDecrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.pas b/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.pas deleted file mode 100644 index 7df55a9..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.pas +++ /dev/null @@ -1,623 +0,0 @@ -unit ValueBlockInSectorIncrDecr; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder; - -type - TfrmValueBlockInSectorIncDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSectorIncrDecr: TStatusBar; - pgValueBlockInSectorIncDecr: TPageControl; - tabValueBlockInSectorIncrement: TTabSheet; - pnlValueBlockInSectorIncrement: TPanel; - lblVBISIncrValue: TLabel; - lblVBISIncrBlockAddress: TLabel; - lblVBISIncr: TStaticText; - txtVBISIncrementValue: TEdit; - btnValueBlockInSectorIncrement: TButton; - txtVBISIncrBlockAddress: TEdit; - pnlValueBlockInSectorIncrementAKM1: TPanel; - lblVBISIncrAKM1: TStaticText; - pnlValueBlockInSectorIncrementAKM2: TPanel; - lblVBISIncrAKM2: TStaticText; - pnlValueBlockInSectorIncrementPK: TPanel; - lblVBISIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - pnlVBISDecrement: TPanel; - lblVBISDecrementValue: TLabel; - lblVBISDecBlockAddress: TLabel; - lblVBISDec: TStaticText; - txtVBISDecrementValue: TEdit; - btnValueBlockInSectorDecrement: TButton; - txtVBISDecrBlockAddress: TEdit; - pnlVBISDecrementAKM1: TPanel; - lblVBISDecAKM1: TStaticText; - pnlVBISDecrementAKM2: TPanel; - lblVBISDecAKM2: TStaticText; - pnlVBISDecrementPK: TPanel; - lblVBISDecPK: TStaticText; - lblVBISIncSectorAddress: TLabel; - txtVBISIncrSectorAddress: TEdit; - lblVBISIncrValueAKM1: TLabel; - lblVBISIncrBlockAddressAKM1: TLabel; - txtVBISIncrementValueAKM1: TEdit; - btnValueBlockInSectorIncrementAKM1: TButton; - txtVBISIncrBlockAddressAKM1: TEdit; - lblVBISIncSectorAddressAKM1: TLabel; - txtVBISIncrSectorAddressAKM1: TEdit; - lblVBISIncrValueAKM2: TLabel; - lblVBISIncrBlockAddressAKM2: TLabel; - txtVBISIncrementValueAKM2: TEdit; - btnValueBlockInSectorIncrementAKM2: TButton; - txtVBISIncrBlockAddressAKM2: TEdit; - lblVBISIncSectorAddressAKM2: TLabel; - txtVBISIncrSectorAddressAKM2: TEdit; - lblVBISIncrValuePK: TLabel; - lblVBISIncrBlockAddressPK: TLabel; - txtVBISIncrementValuePK: TEdit; - btnValueBlockInSectorIncrementPK: TButton; - txtVBISIncrBlockAddressPK: TEdit; - lblVBISIncSectorAddressPK: TLabel; - txtVBISIncrSectorAddressPK: TEdit; - lblVBISDecrSectorAddress: TLabel; - txtVBISDecrSectorAddress: TEdit; - lblVBISDecrementValueAKM1: TLabel; - lblVBISDecBlockAddressAKM1: TLabel; - txtVBISDecrementValueAKM1: TEdit; - btnValueBlockInSectorDecrementAKM1: TButton; - txtVBISDecrBlockAddressAKM1: TEdit; - lblVBISDecrSectorAddressAKM1: TLabel; - txtVBISDecrSectorAddressAKM1: TEdit; - lblVBISDecrementValueAKM2: TLabel; - lblVBISDecBlockAddressAKM2: TLabel; - txtVBISDecrementValueAKM2: TEdit; - btnValueBlockInSectorDecrementAKM2: TButton; - txtVBISDecrBlockAddressAKM2: TEdit; - lblVBISDecrSectorAddressAKM2: TLabel; - txtVBISDecrSectorAddressAKM2: TEdit; - lblVBISDecrementValuePK: TLabel; - lblVBISDecBlockAddressPK: TLabel; - txtVBISDecrementValuePK: TEdit; - btnValueBlockInSectorDecrementPK: TButton; - txtVBISDecrBlockAddressPK: TEdit; - lblVBISDecrSectorAddressPK: TLabel; - txtVBISDecrSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorIncrementClick(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementPKClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementPKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockInSectorIncDecr.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBISIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddress.Text); - - iFResult:=ValueBlockInSectorIncrement(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM1(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM2(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorIncrement_PK(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBISDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddress.Text); - - iFResult:=ValueBlockInSectorDecrement(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM1(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM2(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; - -begin - try - if Trim(txtVBISDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorDecrement_PK(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - - - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~ddp b/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~dfm b/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~dfm deleted file mode 100644 index 7b8f18f..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~dfm +++ /dev/null @@ -1,1067 +0,0 @@ -object frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr - Left = 432 - Top = 198 - Width = 529 - Height = 420 - Caption = 'ValueBlockInSectorInctDecr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 26 - Align = alTop - Alignment = taCenter - AutoSize = False - BorderStyle = sbsSingle - Caption = 'ValueBlockInSector Increment/Decrement (AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 26 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockInSectorIncrDecr: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockInSectorIncDecr: TPageControl - Left = 0 - Top = 56 - Width = 513 - Height = 307 - ActivePage = tabValueBlockInSectorIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tabValueBlockInSectorIncrement: TTabSheet - Caption = 'ValueBlockInSector Increment' - object pnlValueBlockInSectorIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISIncrValue: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrement: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementClick - end - object txtVBISIncrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM1: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM1Click - end - object txtVBISIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementAKM2: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementAKM2Click - end - object txtVBISIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockInSectorIncrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBISIncrBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISIncSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorIncrementPK: TButton - Left = 162 - Top = 69 - Width = 77 - Height = 52 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorIncrementPKClick - end - object txtVBISIncrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISIncrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlockInSector Decrement' - ImageIndex = 1 - object pnlVBISDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBISDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddress: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddress: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDec: TStaticText - Left = 2 - Top = 2 - Width = 150 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSector Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrement: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - HelpType = htKeyword - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementClick - end - object txtVBISDecrBlockAddress: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddress: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBISDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM1: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM1: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM1: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM1Click - end - object txtVBISDecrBlockAddressAKM1: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM1: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBISDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressAKM2: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressAKM2: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 195 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementAKM2: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementAKM2Click - end - object txtVBISDecrBlockAddressAKM2: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressAKM2: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBISDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBISDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBISDecBlockAddressPK: TLabel - Left = 14 - Top = 102 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBISDecrSectorAddressPK: TLabel - Left = 14 - Top = 75 - Width = 87 - Height = 13 - Caption = 'Sector Address' - end - object lblVBISDecPK: TStaticText - Left = 2 - Top = 2 - Width = 173 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'InSectorDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 4 - end - object txtVBISDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockInSectorDecrementPK: TButton - Left = 160 - Top = 67 - Width = 79 - Height = 55 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 3 - OnClick = btnValueBlockInSectorDecrementPKClick - end - object txtVBISDecrBlockAddressPK: TEdit - Left = 119 - Top = 95 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - end - object txtVBISDecrSectorAddressPK: TEdit - Left = 119 - Top = 68 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~pas b/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~pas deleted file mode 100644 index c3b673d..0000000 --- a/uFCoderAdvance_XE/ValueBlockInSectorIncrDecr.~pas +++ /dev/null @@ -1,623 +0,0 @@ -unit ValueBlockInSectorIncrDecr; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, ComCtrls, StdCtrls, ExtCtrls,Global,uFCoder1x; - -type - TfrmValueBlockInSectorIncDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockInSectorIncrDecr: TStatusBar; - pgValueBlockInSectorIncDecr: TPageControl; - tabValueBlockInSectorIncrement: TTabSheet; - pnlValueBlockInSectorIncrement: TPanel; - lblVBISIncrValue: TLabel; - lblVBISIncrBlockAddress: TLabel; - lblVBISIncr: TStaticText; - txtVBISIncrementValue: TEdit; - btnValueBlockInSectorIncrement: TButton; - txtVBISIncrBlockAddress: TEdit; - pnlValueBlockInSectorIncrementAKM1: TPanel; - lblVBISIncrAKM1: TStaticText; - pnlValueBlockInSectorIncrementAKM2: TPanel; - lblVBISIncrAKM2: TStaticText; - pnlValueBlockInSectorIncrementPK: TPanel; - lblVBISIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - pnlVBISDecrement: TPanel; - lblVBISDecrementValue: TLabel; - lblVBISDecBlockAddress: TLabel; - lblVBISDec: TStaticText; - txtVBISDecrementValue: TEdit; - btnValueBlockInSectorDecrement: TButton; - txtVBISDecrBlockAddress: TEdit; - pnlVBISDecrementAKM1: TPanel; - lblVBISDecAKM1: TStaticText; - pnlVBISDecrementAKM2: TPanel; - lblVBISDecAKM2: TStaticText; - pnlVBISDecrementPK: TPanel; - lblVBISDecPK: TStaticText; - lblVBISIncSectorAddress: TLabel; - txtVBISIncrSectorAddress: TEdit; - lblVBISIncrValueAKM1: TLabel; - lblVBISIncrBlockAddressAKM1: TLabel; - txtVBISIncrementValueAKM1: TEdit; - btnValueBlockInSectorIncrementAKM1: TButton; - txtVBISIncrBlockAddressAKM1: TEdit; - lblVBISIncSectorAddressAKM1: TLabel; - txtVBISIncrSectorAddressAKM1: TEdit; - lblVBISIncrValueAKM2: TLabel; - lblVBISIncrBlockAddressAKM2: TLabel; - txtVBISIncrementValueAKM2: TEdit; - btnValueBlockInSectorIncrementAKM2: TButton; - txtVBISIncrBlockAddressAKM2: TEdit; - lblVBISIncSectorAddressAKM2: TLabel; - txtVBISIncrSectorAddressAKM2: TEdit; - lblVBISIncrValuePK: TLabel; - lblVBISIncrBlockAddressPK: TLabel; - txtVBISIncrementValuePK: TEdit; - btnValueBlockInSectorIncrementPK: TButton; - txtVBISIncrBlockAddressPK: TEdit; - lblVBISIncSectorAddressPK: TLabel; - txtVBISIncrSectorAddressPK: TEdit; - lblVBISDecrSectorAddress: TLabel; - txtVBISDecrSectorAddress: TEdit; - lblVBISDecrementValueAKM1: TLabel; - lblVBISDecBlockAddressAKM1: TLabel; - txtVBISDecrementValueAKM1: TEdit; - btnValueBlockInSectorDecrementAKM1: TButton; - txtVBISDecrBlockAddressAKM1: TEdit; - lblVBISDecrSectorAddressAKM1: TLabel; - txtVBISDecrSectorAddressAKM1: TEdit; - lblVBISDecrementValueAKM2: TLabel; - lblVBISDecBlockAddressAKM2: TLabel; - txtVBISDecrementValueAKM2: TEdit; - btnValueBlockInSectorDecrementAKM2: TButton; - txtVBISDecrBlockAddressAKM2: TEdit; - lblVBISDecrSectorAddressAKM2: TLabel; - txtVBISDecrSectorAddressAKM2: TEdit; - lblVBISDecrementValuePK: TLabel; - lblVBISDecBlockAddressPK: TLabel; - txtVBISDecrementValuePK: TEdit; - btnValueBlockInSectorDecrementPK: TButton; - txtVBISDecrBlockAddressPK: TEdit; - lblVBISDecrSectorAddressPK: TLabel; - txtVBISDecrSectorAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockInSectorIncrementClick(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorIncrementPKClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementClick(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockInSectorDecrementPKClick(Sender: TObject); - - private - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockInSectorIncDecr: TfrmValueBlockInSectorIncDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockInSectorIncDecr.FormCreate(Sender: TObject); -begin - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockInSectorIncDecr.OnPKKeyPress(Sender: TObject; var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBISIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddress.Text); - - iFResult:=ValueBlockInSectorIncrement(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM1(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorIncrement_AKM2(iIncrement,bSectorAddress,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBISIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISIncrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISIncrSectorAddressPK.Text); - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorIncrement_PK(iIncrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddress.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBISDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddress.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddress.Text); - - iFResult:=ValueBlockInSectorDecrement(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,bKeyIndex); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM1.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM1.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM1.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM1(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBISDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressAKM2.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressAKM2.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressAKM2.Text); - - iFResult:=ValueBlockInSectorDecrement_AKM2(iDecrement,bSectorAddress,bBlockAddress,bAuthMode); - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - - -end; - -procedure TfrmValueBlockInSectorIncDecr.btnValueBlockInSectorDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress, - bSectorAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; - -begin - try - if Trim(txtVBISDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter any data !',mtWarning,[mbOK],0); - txtVBISDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrSectorAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the SECTOR_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrSectorAddressPK.SetFocus; - Exit; - end; - if Trim(txtVBISDecrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK_ADDRESS !',mtWarning,[mbOK],0); - txtVBISDecrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBISDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBISDecrBlockAddressPK.Text); - bSectorAddress :=StrToInt(txtVBISDecrSectorAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey:=@baPKKey; - - iFResult:=ValueBlockInSectorDecrement_PK(iDecrement,bSectorAddress,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockInSectorIncrDecr,iFResult); - end; - - - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -end. diff --git a/uFCoderAdvance_XE/ValueBlockIncDec.dcu b/uFCoderAdvance_XE/ValueBlockIncDec.dcu deleted file mode 100644 index 51a934a09395fc7a0739c21f2cc0656f411e5e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28356 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 K5?^jU@&7+n2IV*a diff --git a/uFCoderAdvance_XE/ValueBlockIncDec.ddp b/uFCoderAdvance_XE/ValueBlockIncDec.ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlockIncDec.dfm b/uFCoderAdvance_XE/ValueBlockIncDec.dfm deleted file mode 100644 index 61c1b59..0000000 --- a/uFCoderAdvance_XE/ValueBlockIncDec.dfm +++ /dev/null @@ -1,881 +0,0 @@ -object frmValueBlockIncrDecr: TfrmValueBlockIncrDecr - Left = 343 - Top = 186 - Width = 529 - Height = 420 - Caption = 'ValueBlockIncr/Decr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment/Decrement(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockIncrDecr: TStatusBar - Left = 0 - Top = 362 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockIncDecr: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 305 - ActivePage = tavValueBlockIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockIncrement: TTabSheet - Caption = 'ValueBlock Increment' - object pnlValueBlockIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBIncrValue: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementClick - end - object txtVBIncrBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM1Click - end - object txtVBIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM2Click - end - object txtVBIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 94 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementPKClick - end - object txtVBIncrBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlock Decrement' - ImageIndex = 1 - object pnlVBDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDec: TStaticText - Left = 2 - Top = 2 - Width = 168 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementClick - end - object txtVBDecBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM1Click - end - object txtVBDecBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM2Click - end - object txtVBDecBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 98 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecPK: TStaticText - Left = 2 - Top = 2 - Width = 191 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementPKClick - end - object txtVBDecBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlockIncDec.pas b/uFCoderAdvance_XE/ValueBlockIncDec.pas deleted file mode 100644 index 67a8ae0..0000000 --- a/uFCoderAdvance_XE/ValueBlockIncDec.pas +++ /dev/null @@ -1,542 +0,0 @@ -unit ValueBlockIncDec; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockIncrDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockIncrDecr: TStatusBar; - pgValueBlockIncDecr: TPageControl; - tavValueBlockIncrement: TTabSheet; - pnlValueBlockIncrement: TPanel; - lblVBIncrValue: TLabel; - lblVBIncrBlockAddress: TLabel; - lblVBIncr: TStaticText; - txtVBIncrementValue: TEdit; - btnValueBlockIncrement: TButton; - txtVBIncrBlockAddress: TEdit; - pnlValueBlockIncrAKM1: TPanel; - lblVBIncrAKM1: TStaticText; - pnlValueBlockIncrAKM2: TPanel; - lblVBIncrAKM2: TStaticText; - pnlValueBlockIncrPK: TPanel; - lblVBIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - lblVBIncrValueAKM1: TLabel; - lblVBIncrBlockAddressAKM1: TLabel; - txtVBIncrementValueAKM1: TEdit; - btnValueBlockIncrementAKM1: TButton; - txtVBIncrBlockAddressAKM1: TEdit; - lblVBIncrValueAKM2: TLabel; - lblVBIncrBlockAddressAKM2: TLabel; - txtVBIncrementValueAKM2: TEdit; - btnValueBlockIncrementAKM2: TButton; - txtVBIncrBlockAddressAKM2: TEdit; - lblVBIncrValuePK: TLabel; - lblVBIncrBlockAddressPK: TLabel; - txtVBIncrementValuePK: TEdit; - btnValueBlockIncrementPK: TButton; - txtVBIncrBlockAddressPK: TEdit; - pnlVBDecrement: TPanel; - lblVBDecrementValue: TLabel; - lblVBDecBlockAddress: TLabel; - lblVBDec: TStaticText; - txtVBDecrementValue: TEdit; - btnValueBlockDecrement: TButton; - txtVBDecBlockAddress: TEdit; - pnlVBDecrementAKM1: TPanel; - lblVBDecrementValueAKM1: TLabel; - lblVBDecBlockAddressAKM1: TLabel; - lblVBDecAKM1: TStaticText; - txtVBDecrementValueAKM1: TEdit; - btnValueBlockDecrementAKM1: TButton; - txtVBDecBlockAddressAKM1: TEdit; - pnlVBDecrementAKM2: TPanel; - lblVBDecrementValueAKM2: TLabel; - lblVBDecBlockAddressAKM2: TLabel; - lblVBDecAKM2: TStaticText; - txtVBDecrementValueAKM2: TEdit; - btnValueBlockDecrementAKM2: TButton; - txtVBDecBlockAddressAKM2: TEdit; - pnlVBDecrementPK: TPanel; - lblVBDecrementValuePK: TLabel; - lblVBDecBlockAddressPK: TLabel; - lblVBDecPK: TStaticText; - txtVBDecrementValuePK: TEdit; - btnValueBlockDecrementPK: TButton; - txtVBDecBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockIncrementClick(Sender: TObject); - procedure btnValueBlockIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockIncrementPKClick(Sender: TObject); - procedure btnValueBlockDecrementClick(Sender: TObject); - procedure btnValueBlockDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockDecrementPKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockIncrDecr: TfrmValueBlockIncrDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockIncrDecr.FormCreate(Sender: TObject); -begin - - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddress.Text); - - iFResult:=ValueBlockIncrement(iIncrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM1.Text); - - iFResult:=ValueBlockIncrement_AKM1(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM2.Text); - - iFResult:=ValueBlockIncrement_AKM2(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - - iFResult:=ValueBlockIncrement_PK(iIncrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddress.Text); - - iFResult:=ValueBlockDecrement(iDecrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM1.Text); - - iFResult:=ValueBlockDecrement_AKM1(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM2.Text); - - iFResult:=ValueBlockDecrement_AKM2(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressPK.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - iFResult:=ValueBlockDecrement_PK(iDecrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -end. diff --git a/uFCoderAdvance_XE/ValueBlockIncDec.~ddp b/uFCoderAdvance_XE/ValueBlockIncDec.~ddp deleted file mode 100644 index 4370276c196a7fa73d6f8917622cba1c4e033dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxGe;K0Pl$;KI)SCUzhlbT}4#=r!G E07ZHWvj6}9 diff --git a/uFCoderAdvance_XE/ValueBlockIncDec.~dfm b/uFCoderAdvance_XE/ValueBlockIncDec.~dfm deleted file mode 100644 index b4551b9..0000000 --- a/uFCoderAdvance_XE/ValueBlockIncDec.~dfm +++ /dev/null @@ -1,881 +0,0 @@ -object frmValueBlockIncrDecr: TfrmValueBlockIncrDecr - Left = 343 - Top = 186 - Width = 529 - Height = 420 - Caption = 'ValueBlockIncr/Decr' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object lblHeader: TStaticText - Left = 0 - Top = 0 - Width = 513 - Height = 27 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment/Decrement(AKM1,AKM2,PK)' - Color = clWhite - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -19 - Font.Name = 'Verdana' - Font.Style = [] - ParentColor = False - ParentFont = False - TabOrder = 0 - end - object pnlAuth: TPanel - Left = 0 - Top = 27 - Width = 513 - Height = 30 - Align = alTop - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object lblKeyIndex: TLabel - Left = 176 - Top = 8 - Width = 59 - Height = 13 - Caption = 'Key Index' - end - object lblPKKey: TLabel - Left = 288 - Top = 8 - Width = 41 - Height = 13 - Caption = 'PK Key' - end - object rbAUTH1A: TRadioButton - Left = 11 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1A' - Checked = True - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - TabStop = True - end - object rbAUTH1B: TRadioButton - Left = 93 - Top = 7 - Width = 74 - Height = 17 - Cursor = crHandPoint - Caption = 'AUTH 1B' - Ctl3D = True - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - object cboKeyIndex: TComboBox - Left = 240 - Top = 3 - Width = 41 - Height = 24 - Cursor = crHandPoint - Ctl3D = True - DropDownCount = 15 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ItemHeight = 16 - ItemIndex = 0 - ParentCtl3D = False - ParentFont = False - TabOrder = 2 - Text = '0' - Items.Strings = ( - '0' - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' - '9' - '10' - '11' - '12' - '13' - '14' - '15' - '16' - '17' - '18' - '19' - '20' - '21' - '22' - '23' - '24' - '25' - '26' - '27' - '28' - '29' - '30' - '31') - end - end - object stbValueBlockIncrDecr: TStatusBar - Left = 0 - Top = 363 - Width = 513 - Height = 19 - Font.Charset = ANSI_CHARSET - Font.Color = clBtnText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - Panels = < - item - Alignment = taCenter - Text = 'Function Error:' - Width = 109 - end - item - Alignment = taCenter - Width = 50 - end - item - Alignment = taCenter - Width = 50 - end> - UseSystemFont = False - end - object pgValueBlockIncDecr: TPageControl - Left = 0 - Top = 57 - Width = 513 - Height = 306 - ActivePage = tavValueBlockIncrement - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Verdana' - Font.Style = [] - ParentFont = False - TabOrder = 3 - object tavValueBlockIncrement: TTabSheet - Caption = 'ValueBlock Increment' - object pnlValueBlockIncrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBIncrValue: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncr: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Increment' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementClick - end - object txtVBIncrBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBIncrValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM1: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM1Click - end - object txtVBIncrBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBIncrValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrAKM2: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementAKM2Click - end - object txtVBIncrBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlValueBlockIncrPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBIncrValuePK: TLabel - Left = 14 - Top = 39 - Width = 95 - Height = 13 - Caption = 'Increment Value' - end - object lblVBIncrBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBIncrPK: TStaticText - Left = 2 - Top = 2 - Width = 246 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockIncrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBIncrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 24 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockIncrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'INCREMENT' - TabOrder = 2 - OnClick = btnValueBlockIncrementPKClick - end - object txtVBIncrBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 26 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - object tabValueBlockDecrement: TTabSheet - Caption = 'ValueBlock Decrement' - ImageIndex = 1 - object pnlVBDecrement: TPanel - Left = 3 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 0 - object lblVBDecrementValue: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddress: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDec: TStaticText - Left = 2 - Top = 2 - Width = 168 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlock Decrement' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValue: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrement: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementClick - end - object txtVBDecBlockAddress: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM1: TPanel - Left = 262 - Top = 2 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 1 - object lblVBDecrementValueAKM1: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM1: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM1: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM1' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM1: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM1: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM1Click - end - object txtVBDecBlockAddressAKM1: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementAKM2: TPanel - Left = 3 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 2 - object lblVBDecrementValueAKM2: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressAKM2: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecAKM2: TStaticText - Left = 2 - Top = 2 - Width = 213 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_AKM2' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValueAKM2: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementAKM2: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementAKM2Click - end - object txtVBDecBlockAddressAKM2: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - object pnlVBDecrementPK: TPanel - Left = 262 - Top = 142 - Width = 252 - Height = 138 - BevelInner = bvRaised - BorderStyle = bsSingle - Ctl3D = False - ParentCtl3D = False - TabOrder = 3 - object lblVBDecrementValuePK: TLabel - Left = 14 - Top = 39 - Width = 99 - Height = 13 - Caption = 'Decrement Value' - end - object lblVBDecBlockAddressPK: TLabel - Left = 14 - Top = 69 - Width = 81 - Height = 13 - Caption = 'Block Address' - end - object lblVBDecPK: TStaticText - Left = 2 - Top = 2 - Width = 191 - Height = 20 - Align = alTop - Alignment = taCenter - BorderStyle = sbsSingle - Caption = 'ValueBlockDecrement_PK' - Color = clSilver - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - TabOrder = 3 - end - object txtVBDecrementValuePK: TEdit - Left = 119 - Top = 36 - Width = 119 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -13 - Font.Name = 'Verdana' - Font.Style = [] - ParentCtl3D = False - ParentFont = False - TabOrder = 0 - end - object btnValueBlockDecrementPK: TButton - Left = 13 - Top = 93 - Width = 225 - Height = 33 - Cursor = crHandPoint - Caption = 'DECREMENT' - TabOrder = 2 - OnClick = btnValueBlockDecrementPKClick - end - object txtVBDecBlockAddressPK: TEdit - Left = 119 - Top = 62 - Width = 38 - Height = 21 - Ctl3D = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Verdana' - Font.Style = [fsBold] - MaxLength = 2 - ParentCtl3D = False - ParentFont = False - TabOrder = 1 - end - end - end - end -end diff --git a/uFCoderAdvance_XE/ValueBlockIncDec.~pas b/uFCoderAdvance_XE/ValueBlockIncDec.~pas deleted file mode 100644 index 2988528..0000000 --- a/uFCoderAdvance_XE/ValueBlockIncDec.~pas +++ /dev/null @@ -1,542 +0,0 @@ -unit ValueBlockIncDec; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs,uFCoder1x,Global, ComCtrls, StdCtrls, ExtCtrls; - -type - TfrmValueBlockIncrDecr = class(TForm) - lblHeader: TStaticText; - pnlAuth: TPanel; - lblKeyIndex: TLabel; - lblPKKey: TLabel; - rbAUTH1A: TRadioButton; - rbAUTH1B: TRadioButton; - cboKeyIndex: TComboBox; - stbValueBlockIncrDecr: TStatusBar; - pgValueBlockIncDecr: TPageControl; - tavValueBlockIncrement: TTabSheet; - pnlValueBlockIncrement: TPanel; - lblVBIncrValue: TLabel; - lblVBIncrBlockAddress: TLabel; - lblVBIncr: TStaticText; - txtVBIncrementValue: TEdit; - btnValueBlockIncrement: TButton; - txtVBIncrBlockAddress: TEdit; - pnlValueBlockIncrAKM1: TPanel; - lblVBIncrAKM1: TStaticText; - pnlValueBlockIncrAKM2: TPanel; - lblVBIncrAKM2: TStaticText; - pnlValueBlockIncrPK: TPanel; - lblVBIncrPK: TStaticText; - tabValueBlockDecrement: TTabSheet; - lblVBIncrValueAKM1: TLabel; - lblVBIncrBlockAddressAKM1: TLabel; - txtVBIncrementValueAKM1: TEdit; - btnValueBlockIncrementAKM1: TButton; - txtVBIncrBlockAddressAKM1: TEdit; - lblVBIncrValueAKM2: TLabel; - lblVBIncrBlockAddressAKM2: TLabel; - txtVBIncrementValueAKM2: TEdit; - btnValueBlockIncrementAKM2: TButton; - txtVBIncrBlockAddressAKM2: TEdit; - lblVBIncrValuePK: TLabel; - lblVBIncrBlockAddressPK: TLabel; - txtVBIncrementValuePK: TEdit; - btnValueBlockIncrementPK: TButton; - txtVBIncrBlockAddressPK: TEdit; - pnlVBDecrement: TPanel; - lblVBDecrementValue: TLabel; - lblVBDecBlockAddress: TLabel; - lblVBDec: TStaticText; - txtVBDecrementValue: TEdit; - btnValueBlockDecrement: TButton; - txtVBDecBlockAddress: TEdit; - pnlVBDecrementAKM1: TPanel; - lblVBDecrementValueAKM1: TLabel; - lblVBDecBlockAddressAKM1: TLabel; - lblVBDecAKM1: TStaticText; - txtVBDecrementValueAKM1: TEdit; - btnValueBlockDecrementAKM1: TButton; - txtVBDecBlockAddressAKM1: TEdit; - pnlVBDecrementAKM2: TPanel; - lblVBDecrementValueAKM2: TLabel; - lblVBDecBlockAddressAKM2: TLabel; - lblVBDecAKM2: TStaticText; - txtVBDecrementValueAKM2: TEdit; - btnValueBlockDecrementAKM2: TButton; - txtVBDecBlockAddressAKM2: TEdit; - pnlVBDecrementPK: TPanel; - lblVBDecrementValuePK: TLabel; - lblVBDecBlockAddressPK: TLabel; - lblVBDecPK: TStaticText; - txtVBDecrementValuePK: TEdit; - btnValueBlockDecrementPK: TButton; - txtVBDecBlockAddressPK: TEdit; - procedure FormCreate(Sender: TObject); - procedure btnValueBlockIncrementClick(Sender: TObject); - procedure btnValueBlockIncrementAKM1Click(Sender: TObject); - procedure btnValueBlockIncrementAKM2Click(Sender: TObject); - procedure btnValueBlockIncrementPKClick(Sender: TObject); - procedure btnValueBlockDecrementClick(Sender: TObject); - procedure btnValueBlockDecrementAKM1Click(Sender: TObject); - procedure btnValueBlockDecrementAKM2Click(Sender: TObject); - procedure btnValueBlockDecrementPKClick(Sender: TObject); - private - - procedure OnPKKeyPress(Sender:TObject;var Key:Char); - procedure OnPKKeyExit(Sender:TObject); - public - { Public declarations } - end; - -var - frmValueBlockIncrDecr: TfrmValueBlockIncrDecr; - -implementation -uses - uFAdvanced; -{$R *.dfm} - -procedure TfrmValueBlockIncrDecr.FormCreate(Sender: TObject); -begin - - CreateKey(self,21,30,4,333,pnlAuth,'txtPKKey',false,OnPKKeyPress,OnPKKeyExit); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyExit(Sender: TObject); -begin - OnPK_KEY_Exit(Sender); -end; -procedure TfrmValueBlockIncrDecr.OnPKKeyPress(Sender: TObject;var Key: Char); -begin - if (Key in ['0'..'9']) or (ord(Key)=8) then Exit else Key:=#0; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValue.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iIncrement :=StrToInt(txtVBIncrementValue.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddress.Text); - - iFResult:=ValueBlockIncrement(iIncrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM1.Text); - - iFResult:=ValueBlockIncrement_AKM1(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressAKM2.Text); - - iFResult:=ValueBlockIncrement_AKM2(iIncrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockIncrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iIncrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBIncrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the INCREMENT VALUE !',mtWarning,[mbOK],0); - txtVBIncrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBIncrBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBIncrBlockAddressPK.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iIncrement :=StrToInt(txtVBIncrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBIncrBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - pPKKey :=@baPKKey; - - iFResult:=ValueBlockIncrement_PK(iIncrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementClick(Sender: TObject); -var - bAuthMode, - bKeyIndex :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValue.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValue.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddress.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddress.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - bKeyIndex :=cboKeyIndex.ItemIndex; - iDecrement :=StrToInt(txtVBDecrementValue.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddress.Text); - - iFResult:=ValueBlockDecrement(iDecrement,bBlockAddress,bAuthMode,bKeyIndex); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM1Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM1.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM1.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM1.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM1.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM1.Text); - - iFResult:=ValueBlockDecrement_AKM1(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementAKM2Click(Sender: TObject); -var - bAuthMode :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValueAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValueAKM2.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressAKM2.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressAKM2.SetFocus; - Exit; - end; - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValueAKM2.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressAKM2.Text); - - iFResult:=ValueBlockDecrement_AKM2(iDecrement,bBlockAddress,bAuthMode); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - frmuFrAdvanced.FunctionStart:=false; - end; - -end; - -procedure TfrmValueBlockIncrDecr.btnValueBlockDecrementPKClick(Sender: TObject); -var - baPKKey :array[0..5] of Byte; - pPKKey :PByte; - bAuthMode, - bBr :Byte; - bBlockAddress :Byte; - iDecrement :Longint; - iFResult :DL_STATUS; -begin - try - if Trim(txtVBDecrementValuePK.Text)=EmptyStr then - begin - MessageDlg('You must enter the DECREMENT VALUE !',mtWarning,[mbOK],0); - txtVBDecrementValuePK.SetFocus; - Exit; - end; - if Trim(txtVBDecBlockAddressPK.Text)=EmptyStr then - begin - MessageDlg('You must enter the BLOCK ADDRESS !',mtWarning,[mbOK],0); - txtVBDecBlockAddressPK.SetFocus; - Exit; - end; - - Except - on Exception:EConvertError do - MessageDlg(CONVERT_ERROR,mtWarning,[mbOK],0); - end; - - if frmuFrAdvanced.FunctionStart or frmuFrAdvanced.ReaderStart then Exit; - try - frmuFrAdvanced.FunctionStart := true; - New(pPKKey); - bAuthMode :=AuthMode(rbAUTH1A); - iDecrement :=StrToInt(txtVBDecrementValuePK.Text); - bBlockAddress :=StrToInt(txtVBDecBlockAddressPK.Text); - - for bBr:=0 to 5 do - baPKKey[bBr]:=StrToInt(TEdit(FindComponent('txtPKKey'+IntToStr(bBr+1))).Text); - - pPKKey :=@baPKKey; - iFResult:=ValueBlockDecrement_PK(iDecrement,bBlockAddress,bAuthMode,pPKKey); - - if iFResult=DL_OK then - begin - ReaderUISignal(FRES_OK_LIGHT,FRES_OK_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end - else - begin - ReaderUiSignal(FERROR_LIGHT,FERROR_SOUND); - SetStatusBar(stbValueBlockIncrDecr,iFResult); - end; - finally - pPKKey:=nil; - Dispose(pPKKey); - frmuFrAdvanced.FunctionStart:=false; - end; -end; - - - -end. diff --git a/uFCoderAdvance_XE/ViewAll.dcu b/uFCoderAdvance_XE/ViewAll.dcu deleted file mode 100644 index 66dbbb6b71cdeb8417f786202ee56529ffb91756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12611 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

I_5#LnR2+LD9&%65T@UrA!GYt^({P{Zv% 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