ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠΊΠ½Π° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊ — ΡΡΠΎ Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΠ‘. ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° TThread — ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Delphi, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠΎΡΠΎΠΊΡ ΠΠ‘. ΠΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ VCL ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΈΡΡΠ΅Π·Π½ΠΎΠ²Π΅Π½ΠΈΡ. ΠΡΠ±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Delphi, ΡΠ°ΠΊ ΠΊΠ°ΠΊ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠΊΠ½Π° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² Delphi
1.1 ΠΠΎΡΠΎΠΊΠΈ Π² Delphi
1.2 ΠΠ»Π°ΡΡ TThread
2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
2.1 ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
2.2 ΠΡΠ±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
2.3 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
2.4 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅)
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ° — ΡΡΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΡΠΎ ΡΡΠ΅Π΄ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΈ Π½Π΅ΠΌΡΡΠ»ΠΈΠΌΠ° Π±Π΅Π· Π½Π΅Π΅.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ — ΡΡΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ, ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
Π‘ΡΠ΅Π΄ΠΈ Π³Π»Π°Π²Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½, ΠΏΡΠΈΠ½Π΅ΡΡΠΈΡ Π·Π°ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
Β· ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΡΠΈΠ·ΠΈΡΠ° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ, Π·Π° ΡΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ;
Β· ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π½ΠΎΠ²ΡΠΌ, ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌ ΠΈ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈΠ΄Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΠ΄Π΅ΡΠΌΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π½Π°ΡΠΊΠΈ.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΠΠ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΠΠ Π² Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡΡΡΠΎΠΊ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ Π΄Ρ.). ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ½ΠΎΠΏΠΊΠ° (Button1) ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊΠ»Π°ΡΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ TButton. Π ΠΊΠ»Π°ΡΡ Π²Ρ ΠΎΠ΄ΠΈΡ ΡΠΊΠΎΠ»Ρ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ Π² ΠΎΠ΄Π½Ρ Π³ΡΡΠΏΠΏΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ΅Π΄Π΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ.
ΠΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Delphi Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡΠΎΠΉΡΠΈ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ ΡΡΠ΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠ΅Π½ΠΊΠΈ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ², ΠΈΠ·ΡΡΠ°ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΡΠΈΡΠΌΡ Borland, ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΊΡΠ°ΡΠ΅Π½Ρ Π² Π²ΠΎΡΡΠΎΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ½Π°. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎ Delphi ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΈΠ΄Π΅ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ΡΠ΅Π΄Π° Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΡΠΈΡΡΠ½ΠΎΠ΅ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ².
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ:
Β· ΠΠΎΡΠΎΠΊΠΈ Π² Delphi.
Β· ΠΠ»Π°ΡΡ TThread.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠΊΠ½Π° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
1. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² Delphi
1.1 ΠΠΎΡΠΎΠΊΠΈ Π² Delphi
Π Π°Π±ΠΎΡΠ°Ρ Ρ Delphi, Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ: ΡΡΠΎΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΄Π½Π° ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Delphi, — ΡΡΠΎ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ (threads) ΠΈΠ»ΠΈ Π½ΠΈΡΠΈ.
ΠΠΎΡΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π΄Π°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π‘ Π½Π΅Π΄Π°Π²Π½ΠΈΡ ΠΏΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° (ΠΠ‘) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° (Π¦Π) ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ ΡΠ΅Π·ΠΊΠΎ ΡΠΏΠ°Π»ΠΈ Π² ΡΠ΅Π½Π΅, Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Windows NT ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠ»Π°Π½ΠΈΡΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Windows 95 ΠΈΠ»ΠΈ Windows NT ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π° Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ.
ΠΠΎΡΠΎΠΊΠΈ — ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ²Π°Π½ΡΠ°ΠΌΠΈ. ΠΠ²Π°Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ — ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π», ΠΈΠΌΠ΅ΡΡΠΈΠΉΡΡ Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ° Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ. ΠΏΠΎΠΊΠ° Π²ΡΠ΅ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
1.2 ΠΠ»Π°ΡΡ Tthread
Delphi ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Win32.
ΠΠ»Π°ΡΡ TThread — ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠ°ΡΠ΅ΠΌ ΠΆΠ΅ Π½ΡΠΆΠ΅Π½ ΠΊΠ»Π°ΡΡ Thread ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠΈ? ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊ Π±Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈΠ»ΠΈ, ΠΏΠΎΡΠΎΠΊΠΎΠ²). ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΡΠ°ΠΊ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ (ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ). Π-ΡΡΠ΅ΡΡΠΈΡ , ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Ρ.ΠΊ. ΠΊΠ»Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ, ΠΏΠΎ ΡΡΡΠΈ, ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ — ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠ½ΠΈΡΠΎΠΌ (unit). Π-ΡΠ΅ΡΠ²Π΅ΡΡΡΡ , ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² TThread ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π-ΠΏΡΡΡΡ , ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ — Π·Π°ΠΏΡΡΠΊΠ°ΡΡ, Π·Π°Π²Π΅ΡΡΠ°ΡΡ, ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ, ΠΏΡΠ΅ΡΡΠ²Π°ΡΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΡΡΡ, ΠΈ Ρ. Π΄.
Π‘Π°ΠΌ API ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ΅Π½, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠΎΠΌ TThread Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ. ΠΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, — ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Execute.
ΠΡΡΠ³Π°Ρ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° TThread — ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² VCL. ΠΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° TThread Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² VCL ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΡΠΎΠΊ — ΡΡΠΎ Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΠ‘. ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° TThread — ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Delphi, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠΎΡΠΎΠΊΡ ΠΠ‘. ΠΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ VCL ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΈΡΡΠ΅Π·Π½ΠΎΠ²Π΅Π½ΠΈΡ.
2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
2.1 ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠΊΠ½Π° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ: ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ «ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°», «ΠΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ°», «ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°» ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ, ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ» ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½. ΠΠΎΡΠ»Π΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΡ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ±ΡΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ:
1. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TThread.
2. Π’ΠΈΠΏ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: GUI
2.2 ΠΡΠ±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Delphi, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ ΠΏΡΠΎΡΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ, ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΌΠΎΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΊΠΎΠ½ΠΎΠΌΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ.
Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ TThread-Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ².
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° TThread, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ 1 ΠΈ 2.
Π’Π°Π±Π»ΠΈΡΠ° 1.
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΊΠ»Π°ΡΡΠ° TΠ’hread.
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | |
property FreeOnTerminate: Boolean; | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ° ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°Π²Π½ΠΎ True, ΡΠΎ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ, Π΅ΡΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°Π²Π½ΠΎ False, ΡΠΎ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ ΡΠ²Π½ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. | |
property Handle: THandle; | Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Windows API. | |
property Priority: TThreadPriority; | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅. | |
property ReturnValue: Integer; | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΡΠΈ Π΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ. | |
property Suspended: Boolean; | ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ. ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² True, ΡΠΎ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² False Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ. | |
property Terminated: Boolean; | ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π±ΡΠ» Π»ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Terminate. | |
property ThreadID: THandle; | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. | |
Π’Π°Π±Π»ΠΈΡΠ° 2.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° TΠ’hread.
ΠΠ΅ΡΠΎΠ΄ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | |
constructor Create (CreateSuspended: Boolean); | Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ CreateSuspended ΡΠ°Π²Π΅Π½ False, ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Execute Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΡΡΠ°Π·Ρ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ CreateSuspended ΡΠ°Π²Π΅Π½ True, ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Execute Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Resume. | |
destructor Destroy; override; | Π£Π½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΠ°ΠΌΡΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ. | |
procedure DoTerminate; virtual; | ΠΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ OnTerminate. | |
procedure Execute; virtual; abstract; | ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΡΠΎΠΊΠ°. | |
procedure Resume; | ΠΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. | |
procedure Suspend; | ΠΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°. | |
procedure Synchronize (Method: TThreadMethod); | ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΠ·Π²Π°Π½Π½ΡΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ VCL ΠΏΠΎΡΠΎΠΊΠ°. | |
procedure Terminate; | ΠΠ°Π΅Ρ ΠΏΠΎΡΠΎΠΊΡ ΡΠΈΠ³Π½Π°Π» Π½Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Terminated Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True. | |
function WaitFor: LongWord; | ΠΠΆΠΈΠ΄Π°Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ReturnValue. | |
2.3 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ delphi
Π ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 20.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
Π ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π», ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΎΡ 1 Π΄ΠΎ 20.
Π ΡΠ°ΠΉΠ» ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π³ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ. Π ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΡΡ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TThread.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 3-Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ (unit). ΠΠ²Π° ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΎΡΠΌΡ ΠΈ ΠΎΠ΄ΠΈΠ½ (ΠΌΠΎΠ΄ΡΠ»Ρ) — ΠΏΠΎΡΠΎΠΊ TMyThread.
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π.
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
Β· Π‘ΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° TThread: TMyThread = class (TThread).
Β· ΠΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠ»Π°ΡΡ TThread: procedure TMyThread.Execute.
Β· Π‘ΠΎΠ·Π΄Π°Π»ΠΈ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΏΠΎΠ»Π΅ Πemo, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΏΠΎΡΠΎΠΊ.
Β· ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΡΠΊΠ°, ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΌΠ΅Π½Ρ, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 5 ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ:
— «ΠΠ°ΠΏΡΡΠΊ» — Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠΎΡΠΎΠΊ;
— «ΠΠ°ΡΠ·Π°» — «ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ» — ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ;
— «ΠΡΡΠ°Π½ΠΎΠ²ΠΊΠ°» — ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ;
— «Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ» — ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ;
— «ΠΠ°Π³ΡΡΠ·ΠΊΠ°» — Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π΅Π»Π°ΡΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ Π»ΠΈΡΡ ΠΊΠΎΠ³Π΄Π° ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ.
Β· ΠΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ SyncObjs, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.
Β· ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠ»Π°ΡΡ Tcriticalsection. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΠ½ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠ°Ρ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΡΠΎΠΊ.
Β· ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠ»Ρ Πemo ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΡΠΎΠΊΡ Memo1.Lines.SaveToFile (ExtractFilePath (Application.ExeName) + Save. txt'); Π³Π΄Π΅ ExtractFilePath (Application.ExeName) — ΡΡΠΎ ΠΏΡΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ.
Β· ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π΅ΡΠ΅ 2 ΡΠΎΡΠΌΡ, Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΈΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, Π° Π² Π΄ΡΡΠ³ΠΎΠΉ — ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
2.4 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Delphi: Button, Memo, Label, SpinEdit.
Label — ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°, ΡΠΎ Π΅ΡΡΡ Π½Π°Π΄ΠΏΠΈΡΠ΅ΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠΊ Π½Π° Π€ΠΎΡΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Memo — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΡΠΌΠΎΠ² ΡΠ΅ΠΊΡΡΠ°.
Button — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ OnClick ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
SpinEdit — ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ Edit ΠΈ UpDown, ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΠΎΠ΅ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΎΡΠΌΡ:
Π ΠΈΡ. 1. ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠ°ΠΏΡΡΠΊ» ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 20.
Π ΠΈΡ. 2. ΠΠ°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠ°ΠΏΡΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠ°ΡΠ·Π°», ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° «ΠΠ°ΡΠ·Π°» ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ», ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠΎΠΊ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ.
Π ΠΈΡ. 3. ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠ°.
Π ΠΈΡ. 4. ΠΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΠ°ΠΏΡΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΡΡΠ°Π½ΠΎΠ²ΠΊΠ°», ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠ°» ΠΏΠΎΡΠΎΠΊ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ. ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΠ΅Ρ». ΠΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ».
Π ΠΈΡ. 5. ΠΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°.
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ Π±ΡΠ» ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΠ°Π³ΡΡΠ·ΠΈΡΡ» ΠΈ «ΠΠ°ΠΏΡΡΠΊ».
Π ΠΈΡ. 6. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
Π ΠΈΡ. 7. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
Π ΠΈΡ. 8. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΠ²ΠΎΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Delphi.
Π¦Π΅Π»ΡΡ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ DELPHI ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ.
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»Π° ΠΈΠ·ΡΡΠ΅Π½Π° ΡΠ΅ΠΎΡΠΈΡ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅Π΄ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Borland Delphi7 ΠΈ TThread-Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ².
Π Ρ ΠΎΠ΄Π΅ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Π±ΡΠ»Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
1. ΠΡΡ Π°Π½Π³Π΅Π»ΡΡΠΊΠΈΠΉ Π. Π―. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Delphi: Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²Π΅ΡΡΠΈΡΠΌ Delphi. — Π.: ΠΠΈΠ½ΠΎΠΌ, 2006.
2. ΠΠΌΠΈΡΡΠΈΠΉ ΠΡΠΈΠΏΠΎΠ². Delphi. ΠΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.-2006
3. Π€Π°ΡΠΎΠ½ΠΎΠ² Π. Π. Delphi. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ: Π£ΡΠ΅Π±Π½ΠΈΠΊ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ² — Π‘ΠΏΠ±.: ΠΠΈΠ΄Π΅Ρ, 2010.
4. Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΡΠ½ΠΎΠ²Ρ Delphi URL — http://delphibasics.ru/
5. ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΠΌΠΎΠ², ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Delphi.
6. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ½ΡΠΈΠΊΠ»ΠΎΠΏΠ΅Π΄ΠΈΡ Wikipedia. URL — http://ru.wikipedia.org/
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅)
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SyncObjs, Spin;
type
TForm1 = class (TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button4: TButton;
Button6: TButton;
Button3: TButton;
SpinEdit1: TSpinEdit;
Button5: TButton;
Button7: TButton;
procedure Button1Click (Sender: TObject);
procedure FormShow (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure Button4Click (Sender: TObject);
procedure Button6Click (Sender: TObject);
procedure SpinEdit1Change (Sender: TObject);
procedure Button7Click (Sender: TObject);
procedure Button5Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TMyThread = class (TThread)
private
{ Private declarations }
public
{ Public declarations }
StringListCount:integer;
StringListLoads:TStringList;
procedure LoadFromFileMemo;
procedure Execute; override;
constructor Create (CreateSuspended: boolean);
end;
var
MyThread:TMyThread;
Form1: TForm1;
StopItSynchronize:Tcriticalsection;
iteri, g, delay:integer;
implementation
uses Unit2, Unit3;
{$R *.dfm}
constructor TMyThread. Create (CreateSuspended: boolean);
begin
inherited Create (CreateSuspended);
delay:=Form1.SpinEdit1.Value;
end;
procedure TMyThread. Execute;
begin
StopItSynchronize.Enter;
StringListLoads:=TStringList.Create;
StringListLoads.LoadFromFile (ExtractFilePath (Application.ExeName) + 'Loading.txt');
for iteri:=g to StringListLoads. Count -1 do
begin
if self. Terminated then break;
sleep (delay);
StringListLoads[iteri];
StringListCount:=iteri;
Synchronize (LoadFromFileMemo);
end;
StopItSynchronize.Leave;
g:=0;
end;
procedure TForm1. FormShow (Sender: TObject);
begin
StopItSynchronize:=Tcriticalsection.create;
end;
Procedure TMyThread. LoadFromFileMemo;
begin
Form1.Memo1.Lines.Add (StringListLoads[StringListCount]);
end;
procedure TForm1. Button1Click (Sender: TObject);
begin
MyThread:=TMyThread.Create (true);
MyThread.FreeOnTerminate:=true;
MyThread.Resume;
end;
procedure TForm1. Button2Click (Sender: TObject);
begin
if Button2. Caption='ΠΠ°ΡΠ·Π°' then begin
Button1.Enabled:=false;
Button3.Enabled:=false;
Button4.Enabled:=false;
Button6.Enabled:=false;
MyThread.Suspend;
Memo1.Lines.SaveToFile (ExtractFilePath (Application.ExeName) + 'Save.txt');
Button2.Caption:='ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ';
exit;
end;
if Button2. Caption='ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ' then begin
MyThread.Resume;
Button2.Caption:='ΠΠ°ΡΠ·Π°';
Button1.Enabled:=true;
Button3.Enabled:=true;
Button4.Enabled:=true;
Button6.Enabled:=true;
end;
end;
procedure TForm1. Button3Click (Sender: TObject);
begin
Memo1.Lines.SaveToFile (ExtractFilePath (Application.ExeName) + 'Save.txt');
Button2.Caption:='ΠΠ°ΡΠ·Π°';
MyThread.Terminate;
end;
procedure TForm1. Button4Click (Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.LoadFromFile (ExtractFilePath (Application.ExeName) + 'Save.txt');
g:=memo1.Lines.Count;
end;
procedure TForm1. Button6Click (Sender: TObject);
begin
MyThread.Terminate;
Form2.ShowModal;
Memo1.Clear;
end;
procedure TForm1. SpinEdit1Change (Sender: TObject);
begin
delay:=SpinEdit1.Value;
end;
procedure TForm1. Button7Click (Sender: TObject);
begin
Close;
end;
procedure TForm1. Button5Click (Sender: TObject);
begin
MyThread.Terminate;
Form3.ShowModal;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class (TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2. Button1Click (Sender: TObject);
begin
Form1.Memo1.Lines.SaveToFile (ExtractFilePath (Application.ExeName) + 'Save.txt');
Close;
end;
procedure TForm2. Button2Click (Sender: TObject);
begin
Close;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class (TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3. Button1Click (Sender: TObject);
begin
Close;
end;
end.