Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΆΠ°ΡΠΈΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ
Π Π°Π±ΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ, ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ, ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ². ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ ΡΠΆΠ°ΡΠΈΡ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΡΡΠ°ΡΠΎΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅. ΠΠΎΠΈΡΠΊ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² Π² ΠΎΡΡΠ°ΡΠΊΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ². Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ. ΠΡΠΈ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΆΠ°ΡΠΈΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΠ΅Π΄Ρ Delphi:
1. SaveDialog, OpenDialog. ΠΠΎΠΏΠΎΠΌΠ½Π΅Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ ΠΏΡΡΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ.
2. Button — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°.
3. ListBox — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΡΡΠΎΠΊ, Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ ΡΠ»ΠΎΠ²Π°.
4. ProgressBar — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°ΠΏΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
5. Label — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
1. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Button1 «Π‘ΡΠΈΡΠ°ΡΡ Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ» ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΡΡΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ. ΠΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° (ΡΡΠ½ΠΊΡΠΈΡ FileSize). ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΈΡΠ°ΡΡΡΡ Label.
2. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Button2 «ΠΡΠΎΠ²Π΅ΡΠΈΡΡ» ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ (ΠΏΠΎ-Π±Π°ΠΉΡΠΎΠ²ΠΎ) ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΆΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠ΅Π΄Π½ΡΡ Π΄Π»ΠΈΠ½Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. ΠΠ½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΆΠ°ΡΠΈΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠΈΠΌΠ°ΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ. Π’Π°ΠΊ ΠΆΠ΅ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΡΡΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΡΠΎΠΎΡΠ½Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅.
3. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Button3 «Π‘ΠΆΠ°ΡΡ» ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΎΠ΅ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠΆΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ BlockRead. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΡΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌΡ ΡΠ»ΠΎΠ²Ρ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΠΎΡΠ½Π΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠ°ΡΡΠΎΡΠ΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅. Π§Π΅ΠΌ ΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ Π΄Π»ΠΈΠ½Π½Ρ Π΅ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ. ΠΠ°ΠΏΠΈΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ BlockWrite ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎ-Π±Π°ΠΉΡΠΎΠ²ΠΎ. ΠΠΎΠ²ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ³Π΄Π° ΡΠ°ΠΉΠ» ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠΈΡΠ°Π½, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π±ΠΈΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ, ΡΠΎ ΠΏΡΡΡΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π·Π°Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½ΡΠ»ΡΠΌΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 8.
4. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Button4 «Π‘ΡΠΈΡΠ°ΡΡ Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ» ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΏΡΡΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ.
5. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Button5 «ΠΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ» ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π·ΠΆΠ°ΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΡΠ°ΠΏΠΎΠ². ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π² 1 Π±Π°ΠΉΡ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π·Π°ΠΏΠΈΡΡ ΡΡΠΈΡΠ°Π½Π½ΡΡ Π±Π°ΠΉΡΠΎΠ² Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΠΎΠ³Π΄Π° Π΄Π»ΠΈΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 16 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π°Π½Π°Π»ΠΈΠ· ΡΡΠΈΡΠ°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΡΠΌ ΡΠ»ΠΎΠ²Π°ΠΌ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ». ΠΠ° Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΡΡΠ°ΡΠΎΠΊ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡΠ½ΠΈΡ Π΄Π°Π½Π½ΡΡ (ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½ΡΠ»ΡΠΌΠΈ ΠΏΡΠΈ ΡΠΆΠ°ΡΠΈΠΈ).
ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class (TForm)
ListBox1: TListBox;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
ProgressBar1: TProgressBar;
Button4: TButton;
Button5: TButton;
Label3: TLabel;
Label4: TLabel;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
SaveDialog2: TSaveDialog;
OpenDialog2: TOpenDialog;
procedure Button1Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure Button4Click (Sender: TObject);
procedure Button5Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f, f1, f2,f3: file;
buff: byte;
conR, conW: string;
a: array [0.255] of real; // ΠΌΠ°ΡΡΠΈΠ² Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ΅ΠΉ
word: array [0.255] of string; // ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ²
l: array [0.255] of byte; // ΠΌΠ°ΡΡΠΈΠ² Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ²
e: array [0.255] of real; // ΠΌΠ°ΡΡΠΈΠ² Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
inf: array [0.255] of integer; // ΠΌΠ°ΡΡΠΈΠ² ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
i, j, k, size, prog, buff1, buff3,check, dop: integer;
sl, sum, sort, sort1, buff2: real;
implementation
{$R *.dfm}
procedure TForm1. Button1Click (Sender: TObject);
begin
if OpenDialog1. Execute then
AssignFile (f, OpenDialog1. FileName); // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΡΡΡ Π΄ΠΎ Π½Π΅Π³ΠΎ
Reset (f, 1); // ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
size: =FileSize (f); // ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°
Label4.Caption: =IntToStr (size) + ' Π±Π°ΠΉΡ';
// Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π² Label4
Label2.Caption: ='';
Label6.Caption: ='';
Label8.Caption: ='';
end;
procedure TForm1. Button2Click (Sender: TObject);
begin
ProgressBar1.Position: =0; // ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ProgressBar
prog: =0; // ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ Π΄Π»Ρ Progress Bar
sl: =0; // ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Π½Π΅ΠΉ Π΄Π»ΠΈΠ½Π½Ρ
sum: =0; // ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
sort: =0; // ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
sort1: =0;
buff: =0;
for i: =0 to 255 do
begin
e [i]: =i; // ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ², Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ², Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
l [i]: =0;
word [i]: ='';
a [i]: =0;
end;
while not EOF (f) do // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄ΠΎ Π΅Π³ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ
begin
BlockRead (f, buff, 1); // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π±Π»ΠΎΠΊΠΈ Π² 1 Π±Π°ΠΉΡ
a [buff]: =a [buff] +1; // Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΡΠΎΡ Π±Π°ΠΉΡ Π² ΠΌΠ°ΡΡΠΈΠ²
prog: =prog+1;
ProgressBar1.Position: =round ((prog/size) *100);
end;
for i: =0 to 255 do
begin
word [i]: =ListBox1. Items. Strings [i]; // Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈΠ· ListBox1 Π² ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ²
if a [i] <>0 then // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ Π±Π°ΠΉΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
begin
sum: = sum+a [i]; // ΡΡΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ°
end;
end;
CloseFile (f); // Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΏΠΎΡΠ»Π΅ ΡΡΠ΅Π½ΠΈΡ
for i: =0 to 255 do
begin
for j: =0 to 254 do
begin
if (a [j] < a [j+1]) then
begin
sort: =a [j]; // ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
sort1: =e [j];
a [j]: =a [j+1];
a [j+1]: =sort;
e [j]: =e [j+1];
e [j+1]: =sort1;
end;
end;
end;
for k: =0 to 255 do
begin
if a [k] <>0 then // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
begin
a [k]: =a [k] /sum; // ΡΡΠΈΡΠ°Π΅ΠΌ Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°
l [k]: =length (word [k]); // Π²ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π΄Π»ΠΈΠ½Ρ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ²
sl: =sl+l [k] *a [k]; // ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅ΠΉ Π΄Π»ΠΈΠ½Π½Ρ
end;
end;
Label2.Caption: =FloatToStr (sl); // Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ
if sl < 8 then // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ
begin
Button3.Enabled: =true; // Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ «Π‘ΠΆΠ°ΡΡ»
showmessage ('Π‘ΠΆΠ°ΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ');
end;
if sl > 8 then
begin
showmessage ('Π‘ΠΆΠ°ΡΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ');
end;
end;
procedure TForm1. Button3Click (Sender: TObject);
begin
SaveDialog1.FileName: =OpenDialog1.FileName+'.gop';
// Π·Π°Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
SaveDialog1.DefaultExt: ='gop';
if SaveDialog1. Execute then
begin
AssignFile (f1, SaveDialog1. FileName);
Rewrite (f1,1); // ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ
end;
buff1: =0;
i: =0;
while i <> 256 do // Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ».
begin
buff1: =StrToInt (FloatToStr (e [i]));
BlockWrite (f1,buff1,1);
Reset (f, 1);
i: =i+1;
end;
buff1: =0;
seek (f1,256); // ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° 256-ΠΎΠΉ Π±Π°ΠΉΡ Π² ΡΠ°ΠΉΠ»Π΅
ProgressBar1.Position: =0;
prog: =0;
while not EOF (f) do // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄ΠΎ Π΅Π³ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ
begin
BlockRead (f, buff, 1); // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π±Π»ΠΎΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 1 Π±Π°ΠΉΡ
buff1: =buff1+1;
prog: =prog+1;
for i: =0 to 255 do
begin
if buff=e [i] then // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ
begin
conR: =conR+word [i]; // Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
if length (conR) >=8 then // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
begin
conW: =copy (conR, 1,8); // ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠ΅ 8 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
buff2: = ((strtoint (conW [1])) *128) + ((strtoint (conW [2])) *64) + ((strtoint (conW [3])) *32) + ((strtoint (conW [4])) *16) + ((strtoint (conW [5])) *8) + ((strtoint (conW [6])) *4) + ((strtoint (conW [7])) *2) + (strtoint (conW [8]));
// ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΡΠΊΠΎΠΏΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
buff3: =strtoint (floattostr (buff2));
BlockWrite (f1,buff3,1); // Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ»
Delete (conR, 1,8); // ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠ΅ 8 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
end;
if (EOF (f) =true) and (conR<>'') and (length (conR) <8) then
// ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΡΠ°ΡΠΊΠ°
begin
k: =0;
check: =length (conR); // Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ ΠΎΡΡΠ°ΡΠΊΠ°
dop: =8-check; // Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ²
while k<>dop do // ΡΠΈΠΊΠ» Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½ΡΠ»ΡΠΌΠΈ
begin
conR: =conR+'0'; // Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π½ΡΠ»ΠΈ
k: =k+1;
end;
conW: =copy (conR, 1,8); // ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅
buff2: = ((strtoint (conW [1])) *128) + ((strtoint (conW [2])) *64) + ((strtoint (conW [3])) *32) + ((strtoint (conW [4])) *16) + ((strtoint (conW [5])) *8) + ((strtoint (conW [6])) *4) + ((strtoint (conW [7])) *2) + (strtoint (conW [8]));
// ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
buff3: =strtoint (floattostr (buff2));
BlockWrite (f1,buff3,1); // Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
end;
end;
end;
ProgressBar1.Position: =Round ((prog/size) *100);
end;
Label6.Caption: =Inttostr (FileSize (f1)) + ' Π±Π°ΠΉΡ';
// Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
Label8.Caption: =IntToStr (Round (100- (FileSize (f1) *100/size))) + ' %';
// ΡΡΠΈΡΠ°Π΅ΠΌ ΠΏΡΠΎΡΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π°
ShowMessage ('Π€Π°ΠΉΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΆΠ°Ρ');
CloseFile (f); // Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ»Ρ
CloseFile (f1);
conR: =''; // ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
conW: ='';
Button3.Enabled: =false;
end;
procedure TForm1. Button4Click (Sender: TObject);
begin
if OpenDialog2. Execute then
AssignFile (f2,OpenDialog2.FileName); // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΡΡΡ Π΄ΠΎ Π½Π΅Π³ΠΎ
Reset (f2,1); // ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ
size: =FileSize (f2); // Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°
Label4.Caption: =IntToStr (size) + ' Π±Π°ΠΉΡ';
Label2.Caption: ='';
Label6.Caption: ='';
Label8.Caption: ='';
Button5.Enabled: =true;
for i: =0 to 255 do
begin
BlockRead (f2,buff, 1);
inf [i]: =buff; // Π·Π°Π΄Π°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
word [i]: =ListBox1. Items. Strings [i]; // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ²
end;
end;
function IntToBin (n: Integer): String; // ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΈΠ· Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅
var
m: integer;
begin
Result: ='';
while n<>0 do
begin
if n and 1=0 then Result: ='0'+Result else Result: ='1'+Result;
n: =n shr 1;
end;
if length (result) <8 then
begin
for m: =1 to 8-length (result) do result: ='0'+result;
end;
end;
procedure TForm1. Button5Click (Sender: TObject);
begin
if SaveDialog2. Execute then
begin
ProgressBar1.Position: =0;
prog: =0;
AssignFile (f3, SaveDialog2. FileName); // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΡΡΡ Π΄ΠΎ Π½Π΅Π³ΠΎ
ReWrite (f3,1); // ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ
conR: =''; // ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
conW: ='';
seek (f2,256); // ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° 256-ΠΎΠΉ Π±Π°ΠΉΡ
form1.Refresh;
While not EOF (f2) do // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄ΠΎ Π΅Π³ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ
begin
if length (conR) <16 then // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
begin
BlockRead (f2,buff, 1); // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΏΠΎ 1 Π±Π°ΠΉΡΡ
conR: =conR+IntToBin (buff); // ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΡΡΠΈΡΠ°Π½Π½ΡΠΉ Π±Π°ΠΉΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
prog: =prog+1;
end;
if length (conR) >=16 then // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² Π±Π΅Π· ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½ΡΠ»Π΅ΠΉ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌ ΡΠ»ΠΎΠ²Π΅. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ, ΡΡΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ². ΠΠ»Ρ ΠΏΠ΅ΡΠ²ΡΡ 6 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
begin
if conR ='1' then
begin
conW: =copy (conR, 1,2); // ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
for i: =0 to 1 do
begin
if word [i] =conW then // ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ
begin
BlockWrite (f3, inf [i], 1); // Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠ°ΠΉΠ»
Delete (conR, 1,2); // ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
break; // ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΠΌ ΡΠΈΠΊΠ»
end;
end;
end
else
if conR ='1' then
begin
conW: =copy (conR, 1,4);
for i: =2 to 5 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,4);
Break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,6);
for i: =6 to 13 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,6);
Break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,8);
for i: =14 to 29 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,8);
Break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,10);
for i: =30 to 61 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,10);
Break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,12);
for i: =62 to 125 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,12);
Break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,14);
for i: =126 to 253 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,14);
Break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,16);
for i: =254 to 255 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,16);
Break;
end;
end;
end;
if (EOF (f2) = true) and (length (conR) >1) then
// ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΎΡΡΠ°ΡΠΎΠΊ
begin
for j: =1 to length (conR) do // ΡΡΠΈΡΠ°Π΅ΠΌ Π΄Π»ΠΈΠ½Ρ ΠΎΡΡΠ°ΡΠΊΠ°
begin
if conR='' then break;
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΡΡΠ°ΡΠΎΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅. ΠΠΎΠΈΡΠΊ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² Π² ΠΎΡΡΠ°ΡΠΊΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ². Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ.
if conR ='1' then
begin
conW: =copy (conR, 1,2);
for i: =0 to 1 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
delete (conR, 1,2);
break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,4);
for i: =2 to 5 do
begin
if word [i] =conW then
begin
blockWrite (f3, inf [i], 1);
delete (conR, 1,4);
break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,6);
for i: =6 to 13 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,6);
break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,8);
for i: =14 to 29 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,8);
break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,10);
for i: =30 to 61 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,10);
break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,12);
for i: =62 to 125 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,12);
break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,14);
for i: =126 to 253 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,14);
break;
end;
end;
end
else
if (conR ='0') and (conR ='1') then
begin
conW: =copy (conR, 1,16);
for i: =254 to 255 do
begin
if word [i] =conW then
begin
BlockWrite (f3, inf [i], 1);
Delete (conR, 1,16);
break;
end;
end;
end;
end;
end;
end;
ProgressBar1.Position: =Round ((prog/size) *100);
end;
Label6.Caption: =IntToStr (FileSize (f3)) + ' Π±Π°ΠΉΡ';
ShowMessage ('ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½Π°');
end;
CloseFile (f3);
CloseFile (f2);
end;
procedure TForm1. FormCreate (Sender: TObject);
begin
for i: =0 to 255 do
a [i]: =0;
e [i]: =i;
end;
end.
Π ΠΈΡ. 1. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π Π°Π±ΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ, ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ, ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ². ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ ΡΠΆΠ°ΡΠΈΡ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅.
ΠΠΌΡΡΠΈΠΏ ΡΠ°ΠΉΠ»Π° | Π Π°Π·ΠΌΠ΅Ρ Π΄ΠΎ ΡΠΆΠ°ΡΠΈΡ | ΠΠΌΡ ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° | Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ | Π‘ΠΆΠ°ΡΠΈΠ΅ | |
8bit org. bmp | 68,7 ΠΠ | 8bit org.bmp.gop | 18,1 ΠΠ | 73% | |
24bit org. bmp | 203 ΠΠ | 24bitorg.bmp.gop | 54,1 ΠΠ | 73% | |
DOC org. doc | 1516 ΠΠ | DOC org.doc.gop | 843 ΠΠ | 45% | |
RTF org. rtf | 711 ΠΠ | RTF org.rtf.gop | 539 ΠΠ | 24% | |
TXT org. txt | 1 619 Π±Π°ΠΉΡ | TXT org.txt.gop | 1 392 Π±Π°ΠΉΡ | 14% | |
midi org. mid | 40 075 Π±Π°ΠΉΡ | midi org.mid.gop | 36 551 Π±Π°ΠΉΡ | 9% | |
Unit1 org. pas | 15 721 Π±Π°ΠΉΡ | Unit1 org.pas.gop | 9 068 Π±Π°ΠΉΡ | 42% | |
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΆΠ°ΡΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 73−75%. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ ΡΠΎΡΠΌΠ°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΆΠ°ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ Π² ΡΠ²ΡΠ·ΠΈ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΎΠΉ Π½Π΅ΡΡΡ Π² ΡΠ΅Π±Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΆΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. Π ΡΠ°ΠΊΠΈΠΌ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ: *.tiff, *.gif, *.wav, *.jpeg, *.avi, *.mp3, *.3gp, *.odt.
ΠΡΠΎΡΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅ΡΡΡ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΠ»ΠΎΠ² ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ 75%, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° ΡΠ°Π²Π½Π° 2. Π‘ΠΆΠ°ΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΎ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ ΠΈΠ· 2 Π±ΠΈΡ Π±Π»ΠΎΠΊΠΈ ΠΈΠ· 8 Π±ΠΈΡ.
ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°ΡΡΡΡ ΡΠΆΠ°ΡΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΠΌΠ΅Π½Π΅Π΅ ΡΠΆΠΈΠΌΠ°Π΅ΠΌΡ ΠΈ ΠΏΠ»ΠΎΡ ΠΎ ΡΠΆΠΈΠΌΠ°Π΅ΠΌΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΡ ΡΠ°ΠΉΠ»Ρ.