Changeset 120
- Timestamp:
- Feb 19, 2022, 12:09:21 AM (3 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Forms/UFormMain.lfm
r115 r120 83 83 Height = 34 84 84 Top = 5 85 Width = 1 0985 Width = 145 86 86 Align = alNone 87 87 AutoSize = True … … 97 97 Transparent = True 98 98 object ToolButton5: TToolButton 99 Left = 7399 Left = 109 100 100 Top = 0 101 101 Action = Core.ASettings … … 110 110 Top = 0 111 111 Action = Core.AFind 112 end 113 object ToolButton8: TToolButton 114 Left = 73 115 Top = 0 116 Action = Core.AFileCompare 112 117 end 113 118 end … … 146 151 Action = Core.AFileSplit 147 152 end 153 object MenuItem12: TMenuItem 154 Action = Core.AFileCompare 155 end 148 156 object MenuItem2: TMenuItem 149 157 Caption = '-' -
trunk/Forms/UFormMain.pas
r115 r120 19 19 MenuItem10: TMenuItem; 20 20 MenuItem11: TMenuItem; 21 MenuItem12: TMenuItem; 21 22 MenuItem3: TMenuItem; 22 23 MenuItem4: TMenuItem; … … 52 53 ToolButton6: TToolButton; 53 54 ToolButton7: TToolButton; 55 ToolButton8: TToolButton; 54 56 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); 55 57 procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); -
trunk/Languages/vCardStudio.cs.po
r116 r120 28 28 msgstr "Sloučit..." 29 29 30 #: tcore.afilecompare.caption 31 msgid "Compare..." 32 msgstr "Porovnat..." 33 30 34 #: tcore.afilenew.caption 31 35 msgid "New" … … 103 107 msgid "Select directory" 104 108 msgstr "Vybrat adresář" 109 110 #: tformcompare.caption 111 msgid "Compare" 112 msgstr "Porovnání" 105 113 106 114 #: tformcontact.aphotoclear.caption -
trunk/Languages/vCardStudio.pot
r116 r120 16 16 #: tcore.afilecombine.caption 17 17 msgid "Combine..." 18 msgstr "" 19 20 #: tcore.afilecompare.caption 21 msgid "Compare..." 18 22 msgstr "" 19 23 … … 94 98 msgstr "" 95 99 100 #: tformcompare.caption 101 msgid "Compare" 102 msgstr "" 103 96 104 #: tformcontact.aphotoclear.caption 97 105 msgctxt "tformcontact.aphotoclear.caption" -
trunk/UContact.pas
r119 r120 229 229 procedure SaveToFile(FileName: string); override; 230 230 procedure LoadFromFile(FileName: string); override; 231 procedure Sort; 232 procedure Assign(Source: TContactsFile); 231 233 constructor Create; override; 232 234 destructor Destroy; override; … … 1870 1872 end; 1871 1873 1874 function CompareContactFullName(const Item1, Item2: TContact): Integer; 1875 begin 1876 Result := CompareStr(Item1.Fields[cfFullName], Item2.Fields[cfFullName]); 1877 end; 1878 1879 function ComparePropertyName(const Item1, Item2: TContactProperty): Integer; 1880 begin 1881 Result := CompareStr(Item1.Name + ';' + Item1.Attributes.Text, 1882 Item2.Name + ';' + Item2.Attributes.Text); 1883 end; 1884 1885 procedure TContactsFile.Sort; 1886 var 1887 I: Integer; 1888 begin 1889 Contacts.Sort(CompareContactFullName); 1890 for I := 0 to Contacts.Count - 1 do 1891 Contacts[I].Properties.Sort(ComparePropertyName); 1892 end; 1893 1894 procedure TContactsFile.Assign(Source: TContactsFile); 1895 begin 1896 inherited Assign(Source); 1897 Contacts.Assign(Source.Contacts); 1898 end; 1899 1872 1900 constructor TContactsFile.Create; 1873 1901 begin -
trunk/UCore.lfm
r115 r120 12 12 Top = 208 13 13 Bitmap = { 14 4C7A120000001000000010000000801200000000000078DADD9A095855D5DAC7 15 0F9969DDAFC16B659A9939809246696A9A58396BC8E58AA29228A0A0A8209302 16 A2A28242379C70489C1071C032074C734045C5D4524B031C0225152115E1C87C 17 18FEDF7AD7DEFBB039EC733807EAABFB2D9EFFB3F75EEBFDADF75DEF5E7B589B 18 A352FD79256D8D2B245D899A584BE1637AA02EBEA8A848AF8CE1351A0D909B59 19 5BACD4C53F4E39C9ED32534FE2DE8D33B898305F9137669C2879023CBA252AA3 20 165FD73825FFA989E1C8485E518BAF6B9C28CE0372AE554BC6A7AC72E6C7096B 21 26E2588C87E2380DF9FF79C5047E5C3DBEDAE334E4FFE2D2F1B5FCEBFA512A12 22 7F6AB1835021EF5FC7CF4F897BF8565772DE907F43F3C418FF46F17A4A5DBCD2 23 B894C6F9772EAFBD960452525212EA63DBB6ED79C8A5AF1F43EDE6E6972197AE 24 8DBE7ADDD2B9F31548926CE5FBC6942E5D52A02B53782A5656D720C954B65BB7 25 9BD095B17DF4E891014912A37BACAF7CF0412624E9DAEAAB974A9F3E7720C990 26 4D437863FA3035D7F529FF577E8C2CA84346F14AC5683E2C4CB10F253EAC769D 27 C02BF4A1CB136B90D7E943CE4BAC5CC6F24AAC297C43FD1B3D7E9D736972FEEB 28 F0AF77EEE9F0F5988FBA7CFDAE8386F12A13AE99BAFAF84BCAD9B081381DDA1F 29 D7377A226DED54A4AC9EC4B709417DB13FF0431866FB237D6B000A6E9E434589 30 1AA8AAE2AA28CC853A2D09E7563961C7CCEE8A7D24870D40D691686E5B7EF514 31 34F1E1A80C1F83CAB05128DDBE0825978F43A3CEC6D59D731037CD1235D941DC 32 2FB19A933B80390380639BD93B6B01F75F959B054DB4370A0E6D4469FE7D1CFB 33 C201EB269B6BFB480EFD04F937CF4073250908FA1858E725C47E2101952B2743 34 F3FD5E5415A95114608DDCB309B8F7E301AC707A4BCB5F09B5E1E3D5B038E1D7 35 0708B305F6FC075533BAA2648A05D45153797FBF878EC2B5C5CE28553FC2C2D1 36 6F6AF94B644F795A680378BF074CEF824A8F4E28756B8FC228375432DF852967 37 F1BDDD6B383ACE829956227478EB6A7EE110CE97CE198CB2A99D51ECD6116AE7 38 B6502FB1E7F5F927E371D6B1030ED9BC82EFC674E07CC8D056D57CC8209EBB47 39 5FFA22C7F92D643ABE815FC7B644EE579F73FEBCED3F71C4A6190ED834C7B960 40 7B14E73F62296EA9E5BF0DEA83BCB4533C37198EAD90EAD00257ED9BE3FABC11 41 B8BB63098E113BFC9F3834FC25DC3AB203E9170EC3A1EFF35AFE50C0FB488B9E 42 8EB2FC6C646C8BC039BBE648B26D86F41D11DCFFC161CD389BBA79110A1E6563 43 BDDF480C7BFFF91A7320C1FB6DFCFAF50294E665E3CEB11DB838DF01A7C6B647 44 D29876B810E2805B4777E2C9C36C1C58351B43DF6BAA3807633DBA2029622C32 45 2F7C8B12768EAA2A2BB88AD87829E6CD816330440F2B9595933B6331CB7584DD 46 2B5834FC0DCC1FD21241035B606CDF176AC5FC4796D28B7178BCF663BD2ABD1C 47 6F78ADCC6C907E1E2C494085A6FA01AA2941D9DEA9283D178DDCE4CD30C83FBC 48 0DDCFA912DB82F0377AE00777F01B252395FF138139AABDFE8ED83F3456C8DF9 49 DB4F5A0EF7AFB335D84DCE57B1F56745DE1D94FDB885CDB31828F22C568165EB 50 B6EC9BC0EF193CA6870973791F92F2E3C622373717B57876AE919526B00F68FD 51 FB1BF0F81ED437CEE1C98DF382EEA4227FF774DCB871A3364F25FB0663334436 52 0B50E7B09C3E009BB882988F82EF82F5F339E92CE64CEE176AC6B1EB12C56AE1 53 FB43490137293C11519BFFF21381A7B839FBBB904F62CA8A85DC9058293ABDBC 54 36BF8EDD33D97D01B9778498C92FF924B6A24CC84D65B9C8AF548E9FE64DDE7D 55 610E91EFD242A0BC54CBA1B252E093962AF3141FC55DF858F45DC4F83281A7D8 56 2806763F283C16AACC539E28C7F271135F512EF4C1C750898203FECA3C9D278A 57 99C6C17D556A9F61C2BE10837AD7A45A7CF1F975DA6B2D3FE6DF50C73BE3C99E 58 192848F047C1B7B3D9D68F1D4F877AE744DC4F5C558BA7F2F0E1435E6F8CC8F6 59 2F5A1F34F45D067FC03B8E6E2C26AF556AC421BDAB56BFAF9AF4DE29B106B786 60 DE5BEB62EBE0F5D81A2F5D56FE2EAE4FB2FC3580D58EBF9EACF2FAC178566562 61 AEFE76252E7828485BE70CC1D6A0C1880D1C842D0103B165F600C4CCEA8FCDFE 62 9F60B3DFC7D8E4FB1136FAF4C3466F6B6C98D917EBBD3EC47ACF3E9C3DB13504 63 2762E7E378EC3C1CDF3217C763E622312698BD42CFC1B14DA4201CDD1888231B 64 98D607E0F0FAD9381C3D0BD1337A73BF52A9A2776DA64A768FAD64F7C90A76DF 65 AD282F4779B906E59A32684865A5282B63EF14A5255837BD176259CCFC1B6978 66 389C9C9CB065CB16768B35C032AE9454528C2FA7F564E31DC87D4E9C3811AB57 67 AF86BDBD3D678383831114148459B366C1D7D7175E5E5E9836CD03EEEEEE7075 68 7545494911D67AF4E079AA62F146464662E4C891D8B66D9BE093A93A5EC96F31 69 F74B6C497121D64E799FE75818AB10B310AF01B658608B8B0AB1C6BD3B3F3FC4 70 1E3C7810616C8E9E387EBC569E04B648C61670AD767B0F9BD8B9A53C2D5CB810 71 C9C9C958BE7C39678383E788E3F787AF8F0F3C3D3DE1E141E37763E3774151E1 72 13AC9AFC2E9B17FD78CC31319B111212823D7BBEA991E312D16FB1E8B7A8B080 73 B385056A44B95AF1F924C45B261BAB0E5B549B2D2CC84794CB3B7C2E52BC274E 74 1C4754541412138FD5C87135FBA49A7D928F02A695CE5DF93C26BF73E7CEE5E3 75 A779443EE7CC9983C0C040F8FBFBC3C7C79B8D7F061BFF54B8B9B9C1C5C5054F 76 D4795831F16D44B36B80625EB366356737AC5F5F23C7D5F1AAB9CF8227799C7D 77 A27E8CE5132CD935F0018FB754374F86D8FCC750E7E7629953677E0DD03CA6B9 78 48F389E6C46AB76EFCDCD2F9A11C539E68AC2B9CBBF098973B5962D9F8CE58FA 79 5927FC09CFF7FADC0FF57EBF53FA9EA7F03C34896FA87FC567D0FF07DE986F67 80 FA9EC1C63C3F0D3DC38DFF76572FBEA1E3FF93795503AF9F3FBCC4AE89C0C615 81 A15CB46F0C23D9D37EF4D205DA31D3BE6EBB6E895E1E8A8B674FB025D863AC08 82 0DE0CACDCEE4928EA98D6C766D595BA38F294E76B8F4FD49DE5E5A52C845A582 83 3D972BC435A3544F3664EBE16CAFED83F6A9FED8EE4DB87DFD173CCECBC3C3EC 84 3BB87BE30A17ED531DB5910DD9CA79A98FDBB76F715D493E8A652CDE81BDDFE1 85 A27DAA93DAE5ECB2D0407C3ECF17614133703DF5175C387D04BB36AEC0B87F0D 86 D2BE163B3B8CE075D44636644B0CB1E1C1DEDA3C9F4C3C8CB44B67E131C15ECB 87 4AA23A6A231BEDFF9519FBF97C7FE4645EE3DAB73B1E397733F4F2D4C66D447B 88 62077F68857EDD3BC1C5C1067BE3B7E154E221BE95F741FBF236B2258658290F 89 54F71BCBF5EEB80DB8F75BBAB60F89A53A6A231BB295E7FEA3F73BF17A3A4FB4 90 DDB3730BEE64DCC477FBBFE6A27DAA93DB1023E70FEDDBC5EBCF9FF856BBCDCD 91 CAE092D7D1966CE5BCD447F83C3FDE3E66447FCC9E3149CBD33ED5511BD9E8B2 92 F23EA4B6004F7764FD7A958BF675DBEB2A92AD298C54BC7779433599DD5F5C55 93 F0DEE16DFA7D86B18FD85F6455249BBC2AA4A4A4C0549EB3392C86092A242424 94 98C6BB8A7C16E3C7D7837716F94CC63B1AE6B5B912F345AC96CF60FB63991C98 95 4631D933D9B19C6E94E554962BB954B798ED0DA614A69F992E329D674A661A2E 96 CBA934D607ACFE3ED31D95C0DED4C39E661A5A3D267E7E270879A2B16AE34D13 97 5916AFCA96C946F04BB29D6D5B2327140B1D4BE263BDCA745960E56D920CCE09 98 7B91FD41F06BF2F9B313D9EF85784DE66D65F91A6A3AEFBDC15BC8D5D0DAB932 99 B6C8736AF2F5F31794C8C8632CC608085B7DEDB314DB25D66503BD1F2D61EBCE 100 9AFF6B9058A1DDAB56BB961DC3348A6C16696D6AB07D987A50FB54A4A7A7A366 101 FF4B047624932DD9CC15FBD065A7B0F5EFCA5AE754B05D24B09F320D81A25F89 102 95FBAFD9C75C81EDCFD4CF78B6661FB3EAC52AE6EA5DA6B7A90F1785BCD7C1B2 103 5CA9BAB0AD05537B3A1EA7D8873E966226BF9C7D93E975AA1FA5D087AFDE7324 104 D88E13D8D7985EA1763B85F3EFA53757421FA3B4ACFEF33F456F9E85763B83E7 105 81EA0C9DA3BADAFF8B4B43D73786D6F9F5E64DF9FD91DCA7B45FC76F760CFAA7 106 12A650AFEFF7370ADF36F4F2D2D658FFF271E9FBFD90B1FE75FB37C5BFEE7A3A 107 ACE6FF821AE25FB198E0DF20DF10FF75A9C1179ECE3AEF8F90981FBDC7FF0DBC 108 C4C8F7EB13437D58B9DFFAF20DF14D5A20FA5E50CF3E246E81D887B1FDE8DACB 109 B9BAFA50B2FDAB79F9984C19FF9F715D2AEA4FF8AB75AF34D15EFB3F5D7DF75E 110 5D362C8CFFEF4BFB5D55CE49CF62B13D4CFA4E2EE3C314EA956294FB50F45FC7 111 F7DA3003FEE563A86BABD7BF7C6BF89951A7FF3003CFE43023FD1B7AA64B7DD4 112 E55FE999AB3B1653FC2B3C7F8DF6AF148BBEF96BAC7F7DF3CD98677F9811D796 113 11D79E54CC985A31F9339D62CA60BAC57492C993A90DD3537A5E2388ED493FA3 114 64FA996915D34C915BC7749969BF68A3543A88ED27987A313591B53565EACF94 115 28B63FAFC336669A4E9F4C98ACF5F44F71F715C7E3A6D3D6528C7B31D37375BC 116 2EAD643AC3F48CACAE3DD305FA846DC4EB9613532AD3EB0DE0D3985A3720FEB3 117 3AF19B92BFDB4C53F59CBF3D469CBF32A6DE7AE64F37A6BD06E64F2E5325D341 118 262B3D714AF3F7345316530E539238BE814C3F3095D34F8E993AD7E375B939FD 119 DC9BA982E93CD3FBF5E8E31DA6A34C1AA623F5E0E95C7467DA2E4A55CF3E5E15 120 55F362B0B168D4366CF0E821F3FB6DF798DAF587B90E6D7F7076ECB8D3EA3373 121 C716BD5F6D6CA8D3F60B867469BBCAEE9751CB86615DE427D81FDA1BF1BE56D8 122 E0F4166C5D2DD16C7CBBEB2F8F78BDBB12DB76B6B595F9D24FF362B73BE0DA71 123 17A41C76C2A56F1C702A7A281216F644C8E4B7D1D2D30AAF39B42DEC36A4452F 124 39DBC6C6A2F1A0907ED7966D1D85EB5703F128F30B3CC85882CC4BFEB87A603C 125 CEC50EC3E855367821A8179AF874C533C35EC97CB1E74BDA6B659AABA5D3B028 126 1B5C3C3315E76EAF82A6E42C8AD5BB70FF5A20AE254E46F2E6E198B16A385E9C 127 DF074DD978CC46B6C23F06369F2EF1CB9DDA7FB377AB1DECBF0F81E36F71D85F 128 7C1977F3F7202BD58FF1AE38B36918F68574C7C099EFA1F3F88E6834B60D1A0F 129 7E3951E2574F6C9FBA7BC3A7B04A9A870FAF44624CD62EB8DC8BC3D29F4390B4 130 EF331C59FA11BE9A698935C35E4180456374FCB4151A8F6A99A5E5C7BD793D21 131 D21A567B3DD0EBDCE7B0BEFA25BA5F8A80E5513F2CFC6210760776C33A8737B0 132 B8F70BF07EEB297C30B0059A4E6B9723F19F0F6F7168875767848659A343DC44 133 74391284CE077D61B5C111F17EEF62233B7FCB063547D0DB4DE0D346858EC35F 134 47B3E85E67B5EBD4012FCF881CFA2A62277540CF106BB488B285F96A3BCC73B3 135 44341B6BD4D097B1F0BDE730BD8D1966B656A1F50C4B7CB4F7932089FF97E5F3 136 CFFFA7DF4BF7233F6E867E2EE67821A027EC1DDB23BC7F73445ABF88B95D9B6A 137 599F764F63C017DD1E8D1FD1B2B9ECE6D1C8B279E3F1A1EF3E5B3EB2CF8BB0F8 138 776B04757D167E16CFC0BB5D23B8BDAE827B4B15E7E7BDFB6CE5076D9ABA3732 139 5335D2B90776336FF6F47A4F8B26A503FBBE044F66EBC698A94CD35AA9E0F966 140 2384F4F89FB2EEAD9AC488F7AAC63AD713DD7B6C9F6B6CB6B477FB7F5CF96870 141 ABFC09235A5738BB58547CEA6AAEB6357FEEEA0B4D9E5ACEFFBB20D8EA3E4B9F 142 667A59BC3F0C139F073345B98875EF88364F1B780E3F2D3E075E12EF57CDC5FD 143 E7C436B3BFD387BFD1E347232E3E8E691BB6B2EDD69D5B11BB23966BCBF658C4 144 6CDF82986D317CBB996D37C76DC626A68D5B3761ECC471709F3905E14B23F86F 145 F84C296B377C09374F77F804F962FF91042C895C62741FC47E7D603767491753 146 2E61DFE1FD46F521B1C4C87963FA90B34A3C69EF77FB14FBD065F5F149E74FC1 147 73B617167F51DD07B13E737C799B21FED485D398EE3703C917CF62CF777B312F 148 741E42168760F7B7DFF03A6A231B25FEF40F6730CD6F3AB793FB908BDAC8866C 149 E5FC991F93E1E13B4D5B6F486443B6C410EB39CB0B1E3EC6B135FA600CB17D06 150 7C08EF201FCC0E093049C4F41D640DB55ADD2035F4FA3333BBCB748F69B74A7C 151 779B485B3A3633CB12A5D4764F6439BF888919ADB998969606DAD2B15C0A6D8B 152 04368394101A0A585BA762FFFEFD7C3B7F3E6A48DE46B6C4086C2AE948404025 153 ACAC4EA159B308BEF5F22AAF21791BD91243AC4AF523E9B4A7A7066969E5888D 154 7D84F878359293733079729156E3C7E7C1D6F61EDF922D31024BCB813317264D 155 2AC5E0C1B7606797CD45FB8E8EF98A225B6204B613C957FC05B491A27569275F 156 81B520CDAAAAA2DF0F6B588EB661DDBA706CDFBE961F57D72DD11E932D31026B 157 4E0AACA8A0DF0B1769B56CD93CBDC7644B8CC89282359A421415E5E1FAF59FB0 158 68910F1213F7F163495427ED932D3102DB9114525A9AC7E6738E56FEFE93F41E 159 932D31024B4B8F0E8B8A8B1F2237F70ED7EDDBBFC0DD7DB4F698F625D131D912 160 23B0B4FC6ABFA4A8281BE9E997E1E3E3CC633D7468271E3C485714D91243AC99 161 592BA6764BCBCA1EA0A0E09E51225B6288A5770133B337D747477F0553448CF8 162 1ED1DDCCECD50833B337B69BA6572388FD5F9659580A 14 4C7A1300000010000000100000008B1500000000000078DADD9B075854C7DAC7 15 E11A6F7273BF14AF498CC624468D2D26249AA65193187B9070C560B91241C588 16 0A5254C0860A2A89288A6068D2416C741069A2808222369A0A8805410561E9FD 17 FFCDCCD9B31C96DD6517922FB9DFF0FC9F73CECCFB9BF79DF7CC29B3BBA8A9FD 18 7125D76519785D775ADA457B167C86EEF8BABA3AB952866F6E6E062A8ABB8A94 19 EEF867D967995D71CE593CBC9582CC886D327965C689866AA0BC48ACC22E7C77 20 E3E4FDE724EC4161EA812E7C77E3447D255096D721019F7D489F1D47B82C45BC 21 B791CC712AF27FEDC04FECB8637C5DC7A9C87FE6BE255DFC4BFB915578FEDC2E 22 5DAE42D8BF949FAB09216C2B2D21AFC8BFA279A28C7FA57839A53B5ED6B8648D 23 F3AF5CDE7C331954C9C9C9E889ED9021E9104A5E3F8ADA478CC88250D236F2EA 24 A5CBE8D1D7C18BB715EE2B53C68ECD86B454E169D1D0C8032F55D971E36E435A 25 CAF6F1D96785E0C533D2C7F2CA975F168397B4ADBC7ABE4C9C781FBC14D9F486 26 57A60F5573DD93F27FE547C9826EA4142FAB28CDDBD9C9EC43166FD7B58EE365 27 F421CD5356212FD58790E759A194E565B1AAF0BDF5AFF4F8A5CEA5CAF9EFC6BF 28 DCB927C5F7603E4AF33DBB0E7AC7ABA970CD74D7C79F52D2ECA6E1BCED54E47B 29 1A23F7F02A643B2F67DB08EB4908B7FA0A8AD9A928F0B344CDED8B686D1001ED 30 ED4CADB51510E526E3E2213D04AD1B2FB38F54BBEF5072C68DD9B6DC3887E6E0 31 3D68DBB3006D76F3D118B8130D5989681695E2C6D14DF05F3D069DD9E9CC2F65 32 9BCF06019BBE03E2BDC83B6B0DF3DF5E5182663753D4C478A2B1EA11E2F7EAC2 33 75C508491FA9B6DFA2EA760A9AAF2703D6DF00AE265CEC1911683BB802CD1742 34 D15E27429DE56454A445E0E1E5481CD07B4FC25FB7D564E36D2671C2622260A7 35 0584FC8AF6B51FA2E1E7911039AD62FD3DB69D8FBC5DFA68149563C78FEF4AF8 36 2BD49EE669872660FA09B0662CDA8C46A1D170186A9D0CD1467CD766A7E182F6 37 9B885B349298B6C176CEE00E7EC74CC6376E9A81A655A3516FF83E44FA4320DA 38 ADC3EAABCE06236DF170C468BE8ED30B8633DE66D6A00EDE663ACB5DF96FE628 39 D37F0FC58BDFC69D85035171FC17C6A76BFD0B6734FB2152B33F2E6ED6417D55 40 3949F140091F653D1195B9E7586E0A170F428EEE00DCD0E98FFCAD73F1206837 41 E2293BE75F8899F32A8ACE04A1202316BA935E92F031969F22D76D0D9AAA4A51 42 18608F8BDAFD91ACD50F0541F6CC7FF4EC7E8CCDF1DA899AF252B85BCCC3EC4F 43 5FEA3407224C3FC09D13DBD158598AFBF141C8DCA68B730B872179C15064D8E8 44 A228EE28AA9F9622F2D046CCFAE4059973D0D7682C92ED17A238230A0DE41CB5 45 B7B532D591F1D298BDAC1660A61C962F07578CC62E926B7BEDD7B173CEDBD836 46 7320ACA70DC0C2492F7789F9F72C8D99FE7876F81BB96ACC0A56BC5626362848 47 074912D0DADCF1006D6E4053E82A345E744345AA1714F24FEF024597C9823B0B 48 B87F1D78701328C9617CEBB36234DF3825B70FC6D79135E6BDAB120E8FF2C91A 49 EC36E3DBC9FAB3B5F23E9A2EFB9079E60D993C899563C9BAADF436F0B890C5F4 50 34620BEB835795FF42545454A00B4FCE354A7239F6095DFFDE039E3D84E8D645 51 54DF4AE7743F075527D7E0D6AD5B5D795A4A6F11B650CC9600A23292D3272013 52 9713F151737AB37CBEAC80C45CCCFC424438725DA25EC47DFED050C34C6A93EC 53 BBF2BF7DCBF1346EC63EE6F24999A67A2E3754A4D49D77ECCABB927B26B92FA0 54 E23E1733F54B7D52B6B589CB4D5B8B983F283B7E3A6F2A1F717388FA6EAC055A 55 1A251CDADA383E799F6C9EC647E3AE7D26F65D47F8268EA7B1D118C8FDA036DE 56 56364FF344732C1C37E55B5BB83ED818DA5013B95E364FCF138D998E83F96A93 57 3CC3B87D2E06D1B1E55DF8FA7457C9B556E5FD6F8882F5511DB2163511EB5113 58 B5916C2DC8F11A888E2EC5A384435D785A9E3E7DCAEA9511B5FD93D607BD7D97 59 C1EFF08E231D8BCA6B954E71F0EFAA1DEFAB2ABD77F2ACC2ADA2F7D6EED86E78 60 39B6CA4B9A15BE8BCB93207FBD6025E3EF212B7BFDA03CABA662AEFE72C57FF3 61 2C50F96D9A093FEB19F0B59A0E1FCB69F0D9F81DBC374C85D7FA6FE165F10D8E 62 987F0D4FB329F0349D0C8F7593E06EF215DC8D273236C9CF0649BEDB90E8BB15 63 893E5B90E8BD0509DE9BC92BF426C41FA1B2469CA715CE7810B95B22D67D2362 64 DD36C06DED04E6972FEDF45D9BA88DDC63DBC87DB295DC775B5B5AD0D2D28C96 65 E62634533535A2A989BC533436C075CD17F02531B3CF48F7EC819E9E1E7C7C7C 66 C82D56014BB846AA867AFCB6FA7332DE69CCE7D2A54BE1ECEC0C1D1D1DC66EDE 67 BC19D6D6D6D8B06103CCCDCD61626282D5AB8DB072E54A2C5BB60C0D0D75386C 68 F419CB533B89D7C1C101F3E6CD43404000E793A8235EDE6F3DF34BD986FA5A1C 69 FEF95396636EAC5CCC5CBC0AD87A8EADAFAB85CBCAF1ECFC50363A3A1A76648E 70 26252676C913C7D609D81A2667C34F70849C5B9AA71D3B76203535158E8E8E8C 71 DDBC799378FCEB616E66066363631819D1F11B92F11BA0AEB61A87567C4CE6C5 72 1416B3B7B7176C6C6C101272AA538E1BC47EEBC57EEB6A6B185B5B2382D3320D 73 369FB8789B04639562EBBAB2B535557032F888CD451A6F5252229C9C9C909010 74 DF29C71D6C75075B5D851AA283FA1FB2794CFD6ED9B2858D9FCE23EA73D3A64D 75 B0B2B2C2FAF5EB6166664AC6BF968C7F150C0D0D616060806A51250E2CFD006E 76 E41AA031BBB83833D6C3DDBD538E3BE215319F35D5958CAD163D83E34F63C835 77 F0258BB7513A4F8AD8AA6710555560BFDE68760DD0794CE7229D4F744E381B8E 78 63E7969E1F9A639A273AD603FA6359CC8E7A63B07FC968ECFBCF28FC01CFF79E 79 DC0FE57E7E27EBF33C19CF4395F8DEFA97F90CFAFFC02BF3D999BC67B032CF4F 80 45CF70E53FBBEB11DFDBF1FFC1BC5A2FAF9FDFBDF8BAD8C3F3802D13DD5786E1 81 EDE9BEDBBEED9231D37DE976E9E2E6688BCCB424B2047B8603B6964C15A5C54C 82 FC316DA336C77C0E77EAE3673D6D5CB97096B53736D432D1D24A9ECBADE23523 83 5F4F6DA8AD91BE8EA40FBA4FEBE34F1EC1DDFC9B78565989A7A5F7F1E0D67526 84 BA4FEB681BB5A1B6429EEFE3EEDD22A6EBA971D84FE29D36E12326BA4FEBF876 85 21BBDFD60ABF6C35879DF55AE4E7DC44C6F93338E679008B7E982E792DD6D79D 86 CBEA681BB5A1B694A1EC9ECDA6923C9F4D8845EE953418FDA4236179D13ADA46 87 6D24DF2B13F6976DEB51569CC714763218650F0AE5F2B48DD988ED293BE32B0D 88 4C193F0A06BA9A080D0EC0B98418B615F641F7856DD4963294E5F340EBEE915C 89 9FF4F7C0C37B05923E7896D6D1366A436D85B9FFFAD351AC9E9E27BA0D39EA83 90 FB85B7713AFC0413DDA775421BCA08F998B063AC3E3D294AB2AD28296412D6D1 91 2DB515F27C1F7BB65AB0F60573A762E3DAE5129EEED33ADA466DA459611F7C9B 92 A5F14A94DCB9C144F7A5DBBB2BBCAD2A0C5F4C8F99426D05B9BF2C53836990A9 93 EAF719C296933F8776073279D5909D9D0D5579C69691187E52434444846AFC32 94 315F42F8253DE0F5C57C31E1172BE625B912E78BB212BE90EC2F24D2259A4FA4 95 43A44D72EA29C8A9205742A91511DB5B44D944D7883289D2895289E60872CA8F 96 F509A97F44745F8D636FCB61CF13CDEA18133BBF3F7179A26395C49B2B6649BC 97 6A5A449A9C5F2AAD8D5A9D724263A1C7BCD8586F106571ACB08D97C239A12366 98 2F717E553E7FDA62F60217AFCABC96205FB354E74D3D4CB95CCDEA9A2B658B30 99 A72A5F3F7F427170882731DA83DBCA6BDF20B39D670D3CE8FBD16EB2EEECFC5D 100 03CF72ED265DDA25EC02A2F9D466A7C4A6133B91E833DABE0A050505E8DCFF6E 101 8E9D47A4456DB688FB90667F26EBDF835DCE2967BB9363BF279A09997E7956E8 102 BF731F5B38762AD114E5D9CE7D6CE8112B33571F137D40FB309091F76E58922B 103 B5B1643B9268183D5E24B30F792C8D99FA65ECBB446FD1FAF932FA30977B8E38 104 DB451CFB26D1EBB45D5BC6F937919B2BAE8FF91256FEF9FF596E9EB9766D85E7 105 81D6293A47DDB5FF1797DEAE6F14ADF37BCCABF2FB23A14F7EBF9BDFEC28F44F 106 8B9D8C7A79BFBF91F1D9865C9EDF2AEB5F382E79BF1F52D6BF74FFAAF8975E4F 107 DB75FE2EA837FE651615FC2BE47BE3BF3BF5FAC2935AE7FD1E12E747EEF17F03 108 CF33C2FD9EC4D01356E8B7A77C6F7C536D17FBDEDEC33E786EBBB80F65FB91B6 109 1772DDF521CBF6CFE685635265FC7FC47529537FC05F977BA58AF692EF74E5DD 110 7BA5593B3BF6DD97E4735521C73F8BC5ED76FCE7E402DE4E46BDAC18853E64FA 111 EFE6F35A3B05FE8563E86E2BD7BF70ABF899D1AD7F3B05CF643B25FD2B7AA6F3 112 7D74E75FD633577A2CAAF897F1FC55DABFAC58E4CD5F65FDCB9B6FCA3CFBED94 113 B8B694B8F6F8A24E3488683DD139A242A222A2B344C644EF10FD4DCE6B04653F 114 A73FA324BA467488689D987325CA220A17DBC82AC3C5ED49445F103D2F687B81 115 682A5182B8FD2529B62FD11AFA9109D16439FDD3B82789C76328D536501CF72E 116 A217BB795D3A489442F47741DD30A20CFA11B612AF5B7A4439446FF582CF251A 117 DC8BF8D3A4E257257F778956C9397F214A9CBF26A20972E6CF38A25005F3A782 118 A88D289A48434E9CFCFC3D4F54425446942C1EDF34A24B442DF427C744A37BF0 119 BADC9FFEDC9BA895289DE8D31EF4F111511C5133D1991EF0F45C8C270A144BAD 120 877DBC2156E78B4173649F2176337E9CB96D4AA0D1AA0F2F6DD11D72497FF1FB 121 4735FE3362F180096FF455D4E9B0ED33C70E39A47D73FEFED97075F816E1B613 122 106CAE010FBDF7A0B56C0CFA2D199AFFDADCB7C6CB62876C9CAC3162DFF795BE 123 81BAC84B344076AC1EAE9CD2C539B75988D8F1396C567C8081C61A78537748ED 124 B89903BE10B2EF688EEC3BDD664ADE7EBFF9C8BF6185F2E2BD7852B81BC557D6 125 E346E4125CF49D8D1F0F69E265EB2FF0BCD987F8FBECD78B5FF9FC55C9B5B27A 126 D918BDD94E9AC84C59858B770FA1B9210DF5A26378946785BC841548F59A83B5 127 87E6E0956D13F102198FFABC41F8E7B4FE6B78DE516FD8A9503F6DE85CB0C1E2 128 7BFE08AFCFC283AA1094E458107E19528ECC4698CD784C5BF709462F791F7D16 129 BE83BE335E4BE079E7A5C3724E7A7C0F8DE4ADF8EABA0316941C83C1437FECBB 130 6683E4B0FFE0CCBEAF717CDD18B8CC7E1D9623FBE2FDEF07A1EFFC8125127ED1 131 BBF9110E93A1116A842F2EFE82C9377EC3F82BF6181367811D7BA7E3A4D538B8 132 EABE8D5D135E86E97B7FC397D306E085D543CB78FE97390362824C46C3D66E32 133 86FB2FC5D833D6181D6D0E0D8FC508B6F8189EE4FCED9FDE1FD61F3C0FB377D4 134 F0FE9CB7D0CFED8B34C93AF5BBD7D63ACC7A03BECB87E3739BC918E0A48511CE 135 DAD86A38066E64AC4EB35EC38E4F5EC49A77D4B16EB01A06AF1D83AF43BFB5E6 136 F91FC6BCF4D2AF535E7DE4F04D3F4C311881972D3F87CEE261D833B53F1C26BF 137 822D1FBE2061CD863E87EFF68E2B5F3277607FC1CDA3CF98FE7D97D87EFC8F96 138 79135FC1C87F0F86F587FF80C5C8BFC374681F18BEA5869503D518BFF5E37FB4 139 7DF9CE0B2BFBA8ABF591BA078E1BD1EF3977E391CF374E9BF42A8C89AD216156 140 11AD1EA406E377FBC0E6B3FF691A3FE8796FF1BDAAAFD4F544EF3D5A2FF655DF 141 3761D83FAF7F3D6350D54F7307B7EA1B8C6CFD7ED90891D688176FBCFCFCDF1C 142 D9B70B9CADF4B3F439A2D7C4F787D9E2E7C13AB10CC4751F896D9E53F01C7E4E 143 FC1C78557CBFEA2FDE7F51DCA6FE57FAE0EFC7253FC23FD89F28007E64EB77D4 144 0FBE41BE4C3E81BEF00EF481778037DB7A91AD97BF178E1079FA1DC1C2A58BB0 145 72DDCFD8B3CF9EFD864F9572D8E337181AAF8499B539C2CF4460B7C36EA5FBA0 146 EC89C8938CA5CACCBE82B0D870A5FAE059CA087965FA10B2B278AAD0D36132FB 147 9066E5F1C9E9E760BCD104BBF676F44159B34DE6AC4D117F2EE33CD658AC456A 148 661A424E8762ABED56D8ECB2C1C9A853AC8EB6511B59FCF94B29586DB186D909 149 7D0845DBA80DB515F22997536164BE5A52AF48D486DA5286B2C61B4C6064A61C 150 DBA90FC25076E2775FC1D4DA0C1B6D2C551265264D9F0C9148D42BF5F6FA5357 151 7F40F490E8A49AF8DD6D29DDD26375F512B164B53D14B38CDF49448C5C327373 152 7341B7F45828196D3B39B6902AC2D616983C3907E1E1E16CBB6D1B3A49D8466D 153 29C3B13954672C2DDBA0A1710EFDFAD9B3AD89494B2709DBA82D6528ABA67699 154 EABCB1713372735BE0EB5B8EE060115253CBB062459D444B9654424BEB21DB52 155 5BCA702C5D0EA4642C5FDE8819338AA0AD5DCA44F7172FAE92296A4B198E1D45 156 652EFE05B492A2EBD251E61C3B926A437B3BFDFD7033C951005C5DF72030F030 157 3BEEA8DB2D39A6B694E1D8115456ADADF4F7C27512EDDFBF55EE31B5A58C98A5 158 DADCDC5C8BBABA4AE4E75FC5CE9D6648480863C7BC681DBF4F6D29C3B1EF53D9 159 34365692F95C26D1FAF5CBE51E535BCA702C5D7A0CDF595FFF141515F799EEDE 160 BD89952B7F941CD37D5EF498DA528663E9F26BD8EEBABA52141464C1CC4C9FC5 161 1A1373144F9E14C814B5A50C65D5D507110DDDD7D4F40435350F9512B5A50C65 162 E9BB80BAFABBEE6E6EC7A18A28237E8F18AFAEFE86BDBAFADB81AAE90D7BF13A 163 8295E8E8E8C1FEFEFEB73C3C3CC0CBDDDD9DCC1B57041D0D722A4291CCB53FB9 164 26DF727171F9DED1D1F1D7C8C8485CBE7C992927271B0F1EDEC7D9B3493876FC 165 580379C65BA6E6A5F691E6838383B3AF5DBBD69E9F9FCFFE2F292F2F8FFDDE21 166 2E2E0E691752C97598823B77EE20323AB231E844D0C6B2674F3BAD4148CCA8AE 167 AE466D6D2D13DD2F2F2F4756561632323210111E868B69A9C8BC948EE3C7831B 168 0B0B6F6B0A793F3F3FC9BDB4AAAA8A89FE6F546666260A8AEEC2F7740A2C7D62 169 611F9A0207FF134848495B21ED9F67F97EAA896E1716C13B261166873DF0C36E 170 5BCC23B9FC76AF27743D93AFEE8ABE2959BFD2FF17A0FF4BF8E4C913894A9F94 171 23E74E3E4E450620392D0407629DE15B40DE0D4EFE0A932301D03E1C7FD5FE58 172 D470DEFFE3C78FD977C2344F37C93DD627360181A7DC71253B1EB7EF5D8073B2 173 2BFC1F46C129F13062CF46C1C42F1A9A4E51BB843C658B0A0B11929A050B376F 174 24A51CC71DC2E61625C129D905EE45A7601BB31F918927E0753A0AF39DC38B03 175 4E858FA23C8DF9DEBD7B2821E7FB50FC4D981F7645566E34F28A1371B3200E8E 176 670E62FFCD206C3A618B93A703111C1F091DE7A87627BF8039942F2B2B4321F1 177 5D54781B87E23261E4E286CB37C29053184F9EB7B1D81EBC0776173C6116B005 178 FEA1E41D302A148B5CC3DB9CFD7C243CFBBF363287225233B1E8801FA2CF06E2 179 CACDD3484C3B0A6BEFCD300BDB05C3FD26F03BEE0D8FA8D3D8111C5D75FCC4B1 180 4981818178F4E8114A4A4AF0E0C1031417176353501CACFC03712E3D04213187 181 61E960821DBF6DC721CF033893148BD84B3770E45468729CBB43DFD0D0D08D64 182 AE3E8B8F8F436C6C6C7BECE9D3EDBEC1C7DB17FF72A45D6F9F2BD6396C87838F 183 338E9077A0C31191F0894FC3D5C2FB389D7AB134E3EAA525F41C9039392933F3 184 E2BFD3D3D37E387FFEFC0F6929293FB87AF9CE9D61EB6FABED78BC78A14B64BB 185 BE7B589B955F78EB37168E6D9B7C639055F8106732B25ABA7BBEFB9C3A39CAD1 186 EFE81C173FBFD91161A13366AFDBBB6EE8D29D8D8E61E7F1B8AA16FF0B3DC6FA 187 AB 163 188 } 164 189 end … … 261 286 OnExecute = AViewSourceExecute 262 287 ShortCut = 114 288 end 289 object AFileCompare: TAction 290 Category = 'File' 291 Caption = 'Compare...' 292 ImageIndex = 18 293 OnExecute = AFileCompareExecute 263 294 end 264 295 end -
trunk/UCore.lrj
r115 r120 17 17 {"hash":371876,"name":"tcore.atest.caption","sourcebytes":[84,101,115,116],"value":"Test"}, 18 18 {"hash":131740677,"name":"tcore.aviewsource.caption","sourcebytes":[86,105,101,119,32,115,111,117,114,99,101],"value":"View source"}, 19 {"hash":109897550,"name":"tcore.afilecompare.caption","sourcebytes":[67,111,109,112,97,114,101,46,46,46],"value":"Compare..."}, 19 20 {"hash":218146437,"name":"tcore.opendialog1.title","sourcebytes":[79,112,101,110,32,101,120,105,115,116,105,110,103,32,102,105,108,101],"value":"Open existing file"}, 20 21 {"hash":159035875,"name":"tcore.savedialog1.title","sourcebytes":[83,97,118,101,32,102,105,108,101,32,97,115],"value":"Save file as"}, -
trunk/UCore.pas
r117 r120 17 17 AAbout: TAction; 18 18 AboutDialog1: TAboutDialog; 19 AFileCompare: TAction; 19 20 AViewSource: TAction; 20 21 ATest: TAction; … … 47 48 procedure AExitExecute(Sender: TObject); 48 49 procedure AFileCombineExecute(Sender: TObject); 50 procedure AFileCompareExecute(Sender: TObject); 49 51 procedure AFileNewExecute(Sender: TObject); 50 52 procedure AFileOpenExecute(Sender: TObject); … … 110 112 uses 111 113 UFormMain, UFormSettings, UContact, UFormContacts, UFormFindDuplicity, 112 UFormGenerate, UFormError, UFormFind, UFormTest, UFormSource ;114 UFormGenerate, UFormError, UFormFind, UFormTest, UFormSource, UFormCompare; 113 115 114 116 resourcestring … … 163 165 ShowMessage(Format(SCombinedContacts, [LoadedFiles])); 164 166 UpdateFile; 167 end; 168 end; 169 170 procedure TCore.AFileCompareExecute(Sender: TObject); 171 var 172 TempFile: TDataFile; 173 LeftContacts: TContactsFile; 174 RightContacts: TContactsFile; 175 begin 176 TempFile := DefaultDataFileClass.Create; 177 try 178 OpenDialog1.Filter := TempFile.GetFileFilter; 179 finally 180 TempFile.Free; 181 end; 182 OpenDialog1.DefaultExt := ''; 183 if Assigned(DataFile) then begin 184 OpenDialog1.InitialDir := ExtractFileDir(DataFile.FileName); 185 OpenDialog1.FileName := ExtractFileName(DataFile.FileName); 186 end; 187 OpenDialog1.Options := OpenDialog1.Options - [ofAllowMultiSelect]; 188 if OpenDialog1.Execute then begin 189 with TFormCompare.Create(nil) do 190 try 191 LeftContacts := TContactsFile(DefaultDataFileClass.Create); 192 RightContacts := TContactsFile(DefaultDataFileClass.Create); 193 try 194 LeftContacts.Assign(TContactsFile(DataFile)); 195 LeftSide := LeftContacts; 196 RightContacts.LoadFromFile(OpenDialog1.FileName); 197 RightSide := RightContacts; 198 ShowModal; 199 finally 200 LeftContacts.Free; 201 RightContacts.Free; 202 end; 203 finally 204 Free; 205 end; 165 206 end; 166 207 end; … … 553 594 AFileSplit.Enabled := Assigned(DataFile); 554 595 AFileCombine.Enabled := Assigned(DataFile); 596 AFileCompare.Enabled := Assigned(DataFile); 555 597 AFind.Enabled := Assigned(DataFile); 556 598 AFindDuplicate.Enabled := Assigned(DataFile); -
trunk/UDataFile.pas
r29 r120 23 23 function GetFileName: string; virtual; 24 24 function GetFileFilter: string; virtual; 25 procedure Assign(Source: TDataFile); 25 26 procedure LoadFromFile(FileName: string); virtual; 26 27 procedure SaveToFile(FileName: string); virtual; … … 72 73 end; 73 74 75 procedure TDataFile.Assign(Source: TDataFile); 76 begin 77 FFileName := Source.FFileName; 78 FModified := Source.FModified; 79 end; 80 74 81 procedure TDataFile.LoadFromFile(FileName: string); 75 82 begin -
trunk/vCardStudio.lpi
r115 r120 107 107 </Item3> 108 108 </RequiredPackages> 109 <Units Count="2 3">109 <Units Count="25"> 110 110 <Unit0> 111 111 <Filename Value="vCardStudio.lpr"/> … … 248 248 <IsPartOfProject Value="True"/> 249 249 </Unit22> 250 <Unit23> 251 <Filename Value="Forms\UFormCompare.pas"/> 252 <IsPartOfProject Value="True"/> 253 <ComponentName Value="FormCompare"/> 254 <HasResources Value="True"/> 255 <ResourceBaseClass Value="Form"/> 256 </Unit23> 257 <Unit24> 258 <Filename Value="Diff.pas"/> 259 <IsPartOfProject Value="True"/> 260 </Unit24> 250 261 </Units> 251 262 </ProjectOptions> -
trunk/vCardStudio.lpr
r115 r120 8 8 {$ENDIF} 9 9 Interfaces, // this includes the LCL widgetset 10 Forms, UFormMain, UCore, Common, SysUtils;10 Forms, UFormMain, UCore, Diff, Common, SysUtils, UFormCompare; 11 11 12 12 {$R *.res}
Note:
See TracChangeset
for help on using the changeset viewer.