Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ Π΄ΠΎΠΊΡ‚ΠΎΡ€Π° Π‘ΠΎΠ±Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 4

Автор Bob Swart

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TUUCode ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°; ΠΎΠ΄ΠΈΠ½ public конструктор, ΠΎΠ΄ΠΈΠ½ protected ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΎΠ΄ΠΈΠ½ public ΠΌΠ΅Ρ‚ΠΎΠ΄:

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Create ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ свойств Π°ΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (default) для Active, FileMode, Headers ΠΈ About.

ΠœΠ΅Ρ‚ΠΎΠ΄ Activate ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° UUCode Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ измСняСтС состояниС свойства Π² True. ΠŸΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΡ‰Π΅ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° UUCode.

ΠœΠ΅Ρ‚ΠΎΠ΄ UUCode это ΠΌΠ΅Ρ‚ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ производится ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅/Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° (InputFile), Π±Π°Π·ΠΈΡ€ΡƒΡΡΡŒ Π½Π° состоянии Π΄Ρ€ΡƒΠ³ΠΈΡ… свойств ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TUUCode.

1.1.8. Бобытия

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TUUCode ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ свойство:

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ OnProgress ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ callback функция, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ TUUCode Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ TGauge ΠΈΠ»ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ TprogressBar, для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° показывая прогрСсс выполнСния кодирования/дСкодирования ΠΎΡ‚ 0 Π΄ΠΎ 100%.

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅/Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ использовании быстрой ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ быстрых дисков. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ приятно ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ процСсс выполнСния. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй, сигнализатора ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события. Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² состоянии ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сообщСниС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ событиС. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ поступлСнии события.

Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ динамичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ самого класса (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Click) ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ Windows, Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΊΠ°ΠΊ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ (notification) ΠΈΠ»ΠΈ callback сообщСния. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ присваиваСтся свойству, Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΊΠ°ΠΊ OnClick, OnChange ΠΈΠ»ΠΈ OnProgress. Если ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½, Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ любой ΠΊΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события.

1.1.9. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ события ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса, Π° Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Self). Для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΠΌΡ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ:

TNotifyEvent = procedure(sender: TObject) of object;

Π’ΠΈΠΏ TNotifyEvent для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСдаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ sender. Π­Ρ‚ΠΈ события просто ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ спСцифичСского события Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° sender. НапримСр, OnClick, Ρ‚ΠΈΠΏΠ° TNotifyEvent, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ€Π³Π°Π½Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ событиС click Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΡ€Π³Π°Π½Π°. Если Π±Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Sender отсутствовал, Ρ‚ΠΎ ΠΌΡ‹ Π±Ρ‹ Π·Π½Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ событиС, Π½ΠΎ Π½Π΅ Π·Π½Π°Π»ΠΈ Π±Ρ‹ Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ€Π³Π°Π½Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΌ трСбуСтся Π·Π½Π°Ρ‚ΡŒ, Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΎΡ€Π³Π°Π½Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ событиС, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этим ΠΎΡ€Π³Π°Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ..

Как Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅, ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ свойствам Ρ‚ΠΈΠΏΠ° событиС (event), ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ° Π² инспСкторС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Object Inspector), для различСния ΠΈΡ… ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… свойств. Основой для помСщСния этого свойства Π½Π° Π·Π°ΠΊΠ»Π°Π΄ΠΊΡƒ события являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠ° "procedure/function of Object". Π€Ρ€Π°Π·Π° "of Object" ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°, ΠΈΠ½Π°Ρ‡Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сообщСниС ΠΎΠ± ошибкС "cannot publish property".

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ TUUCode трСбуСтся событиС Ρ‚ΠΈΠΏΠ° TProgressEvent. Π”Π°Π½Π½ΠΎΠΌΡƒ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π΅ трСбуСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ sender (это всСгда ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅), Π½ΠΎ Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, для Ρ†Π΅Π»ΠΈ опишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ:

TProgressEvent = procedure(percent: Word) of object;

1.1.10. Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ событий

Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ событий Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для указания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ события, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ событиС, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события смог Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свои дСйствия. Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ динамичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Click) ΠΈΠ»ΠΈ сообщСния Windows, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ callback ΠΈΠ» notification сообщСния.

Π’ случаС с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ TUUCode, сигнализатор ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ нСпосрСдствСнно Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ UUCode. ПослС кодирования ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки, вызываСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ OnProgress, рСализация этого ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

if Assigned(FOnProgress) then FOnProgress(trunc((100.0 * Size) / OutputBufSize))

Π“Π΄Π΅ Size это Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ позиция Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅, ΠΈ OutputBufSize это Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Size увСличиваСтся ΠΎΡ‚ нуля Π΄ΠΎ OutputBufSize, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события FOnProgress вызываСтся с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΎΡ‚ 0 Π΄ΠΎ 100.

1.1.11. РСгистрация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

ΠŸΡ€ΠΈ рСгистрации ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TUUCode, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ свойства FileName (InputFile), Ρ‡Ρ‚ΠΎ обСспСчит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚ для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ этого свойства Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ UUReg, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рСгистрируСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TUUCode Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π”Π΅Π»ΡŒΡ„ΠΈ.

unit UUReg;

 interface

 {$IFDEF WIN32}

   {$R UUCODE.D32}

 {$ELSE}

   {$R UUCODE.D16}

 {$ENDIF}

 uses

   DsgnIntf;

 type

   TFileNameProperty = class(TStringProperty)

   public

     function GetAttributes: TPropertyAttributes; override;

     procedure Edit; override;

   end;


 procedure Register;


 implementation

 uses

   UUCode, Classes, Dialogs, Forms, SysUtils;


   function TFileNameProperty.GetAttributes: TPropertyAttributes;

   begin

     Result := [paDialog]

   end {GetAttributes};


   procedure TFileNameProperty.Edit;

   begin

     with TOpenDialog.Create(Application) do

     try

       Title := GetName; { name of property as OpenDialog caption }

       Filename := GetValue;

       Filter := 'All Files (*.*)|*.*';

       HelpContext := 0;

       Options := Options +

                 [ofShowHelp, ofPathMustExist, ofFileMustExist];

       if Execute then SetValue(Filename);

     finally

       Free

     end

   end {Edit};


   procedure Register;

   begin

     { component }

     RegisterComponents('DrBob42', [TUUCode]);

     { property editor }

     RegisterPropertyEditor(TypeInfo(TFilename), nil,

                           'InputFile', TFilenameProperty);

   end {Register};

 end.

Если Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TUUCode Π² составС, ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ UUCode Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния (runtime package), ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ UUReg Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (design-time), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, для использования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UUCode Wizard ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ доступным Π² IDE Delphi для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ!

1.1.12. UUCode Example Wizard

Для ΠΏΠΎΠΊΠ°Π·Π° прогрСсса 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ TGauge ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя 32-битная вСрсия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Windows 95 Progress Control.

рис. 1.1. 16-битная вСрсия ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° UUCode

рис. 1.2. 32-битная вСрсия ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° UUCode

Π’ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π΄Π²Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Если Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» пуст ΠΈ Π²ΠΎ врСмя кодирования, Ссли Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» пуст. Для 16 Π±ΠΈΡ‚Π½ΠΎΠΉ вСрсии ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ссли Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» большС 65000 Π±Π°ΠΉΡ‚ (16-битная вСрсия Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎ 64 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚). На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 48 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚. 32-битная вСрсия Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ограничСния).

1.1.13. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрСли uuencode/uudecode, xxencode/xxdecode, ΠΈ Base64 Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ кодирования/дСкодирования. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ простой VCL ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ эти Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ простому ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Бвойства, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ события Π΄Π΅Π»Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ для построСния Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TBUUCode сСйчас Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° "DrBob42 component package for Delphi and C++Builder".

1.2. HTML

АббрСвиатура HTML ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ HyperText Mark-up Language (язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ гипСртСкстовых Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для построСния статичСских страниц. HTML страница являСтся простым тСкстовым ASCII Ρ„Π°ΠΉΠ»ΠΎΠΌ с HTML-Ρ‚Π΅Π³Π°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ "<" ΠΈ ">" (часто ΠΏΠ°Ρ€Π°ΠΌΠΈ). Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Netscape Navigator ΠΈ Internet Explorer просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ HTML ΠΊΠΎΠ΄Ρ‹ Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… страницах для ΠΏΠΎΠΊΠ°Π·Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², ΠΆΠΈΡ€Π½ΠΎΠ³ΠΎ ΠΈ Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠ³ΠΎ тСкста, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ нСсколько основных HTML Ρ‚Π΅Π³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π΄Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅.