3. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ², Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΏΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠ°ΠΌΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π² ΡΠ»ΡΡΠ°Π΅ DDB ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ScanLine Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ TBitmap ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ DIB-ΡΠ΅ΠΊΡΠΈΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° HandleType ΠΈ PixelFormat ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DDB. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ°ΡΡΠΎ ΡΡΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΠΎ Π²ΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΏΡΠ»Π΅ Π½Π΅Ρ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ DDB-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ TBitmap ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΡΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ DIB-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅ΠΌ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ. ΠΡΠΈΠΌΠ΅Ρ BitmapSpeed Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ DDB- ΠΈ DIB-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
1.1.12. ANSI ΠΈ Unicode
Windows ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ: ANSI ΠΈ Unicode. Π ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ ANSI (American National Standard Institute) ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎΠ΄Ρ ΠΎΡ 0 Π΄ΠΎ 127 ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ ASCII, ΠΊΠΎΠ΄Ρ ΠΎΡ 128 Π΄ΠΎ 255 ΠΌΠΎΠ³ΡΡ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΎΠ΄ΠΎΠ²ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΌΠ΅ΡΡΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠ½ΡΠΉ ΠΊΠΎΠ΄, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ, Ρ.Π΅. Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ. ΠΠ΅Π²Π΅ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½Π°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ "ΠΊΡΠ°ΠΊΠΎΠ·ΡΠ±ΡΠ°ΠΌΠΈ") Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°.
Π ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Unicode ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ 2 Π±Π°ΠΉΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ», ΡΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ 65 536 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠΎΠ³ΠΎ Ρ Π²Π°ΡΠ°Π΅Ρ Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π»Π°ΡΠΈΠ½ΠΈΡΡ ΠΈ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ, Π³ΡΠ΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π»ΡΠ°Π²ΠΈΡΠ°, ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈΡ ΠΈΠ΅ΡΠΎΠ³Π»ΠΈΡΠΎΠ², Π°ΡΠ°Π±ΡΠΊΠΈΡ ΠΈ Π΅Π²ΡΠ΅ΠΉΡΠΊΠΈΡ Π±ΡΠΊΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ (ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ , ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Ρ. ΠΏ.) ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠΎΠ΄ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡ Π² Unicode Π½Π΅Ρ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠΎΠ΄ΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° ΡΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π² ANSI ΠΈΠΌΠ΅Π΅Ρ Π½ΠΎΠΌΠ΅Ρ 1251. ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π½Π΅ΠΉ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠΈΠ½ΡΡΠΎΠΉ Π² DOS ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ. Π ΡΠ΅Π»ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ DOS-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ ΡΠ΅ ΡΠ°ΠΌΡΠ΅ "ΠΊΡΠ°ΠΊΠΎΠ·ΡΠ±ΡΡ". Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠ³ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ANSI Π² DOS ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ β ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ CharToOem ΠΈ OemToChar.
Windows NT/2000/XP ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ANSI ΠΈ Unicode Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ΅. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π»ΡΠ±Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² Π΄Π²ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ : Π΄Π»Ρ ANSI ΠΈ Π΄Π»Ρ Unicode. Windows 9x/ΠΠ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ANSI. Unicode-Π²Π°ΡΠΈΠ°Π½ΡΡ Π² ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π΅ΡΡΡ Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° MSDN, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ (ΠΈΠ»ΠΈ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠΈ), Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π΄ΠΏΠΈΡΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π»ΠΈ Unicode-Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ NT/2000/XP ΠΈΠ»ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠΊΡΠ°Π½. Unicode-Π²Π΅ΡΡΠΈΡ Π½Π° Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ ΠΈΠ· Π½ΠΈΡ TextOut ΠΈ ExtTextOut. Π€ΡΠ½ΠΊΡΠΈΠΈ DrawText ΠΈ DrawTextEx ΠΈΠΌΠ΅ΡΡ Unicode-Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Windows NT/2000/XP. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠΊΠ½Π°ΠΌΠΈ, ΡΠΎ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ Π½Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π»Π° Π±Ρ Unicode-Π²Π°ΡΠΈΠ°Π½Ρ Π² Windows 9Ρ /ΠΠ. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Microsoft ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Windows 9x/ΠΠ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Unicode Π² ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ MSLU (Microsoft Layer for Unicode), Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° Microsoft.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ RegisterWindowMessage. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΡΠ°Π²ΠΊΠ΅, ΠΎΠ½Π° ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ user32.dll. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ (ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ»ΠΈΡΡ TDump.exe, Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΡΠΎΡΡΠ°Π² Delphi), ΡΠΎ ΡΠ°ΠΌ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ, Π·Π°ΡΠΎ Π±ΡΠ΄ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ RegisterWindowMessageA ΠΈ RegisterWindowMessageW. ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· Π½ΠΈΡ β ΡΡΠΎ ANSI-Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠΎΡΠ°Ρ β Unicode-Π²Π°ΡΠΈΠ°Π½Ρ (Π±ΡΠΊΠ²Π° W ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Wide β ΡΠΈΡΠΎΠΊΠΈΠΉ; ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Unicode ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΡΠΎΠΊΠΈΠΌΠΈ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π½Π΅ ΠΎΠ΄ΠΈΠ½, Π° Π΄Π²Π° Π±Π°ΠΉΡΠ°).
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Microsoft Visual C++. Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ UNICODE. ΠΡΡΡ Π΄Π²Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΠΈΠΏΠ° β CHAR Π΄Π»Ρ ANSI ΠΈ WCHAR Π΄Π»Ρ Unicode. ΠΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡ UNICODE ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, ΡΠΈΠΏ TCHAR ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΏΡ WCHAR, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ β ΡΠΈΠΏΡ CHAR (ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΠΎΡ TCHAR ΡΠΈΠΏΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ LPCTSTR Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π½Π°Π»ΠΈΡΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ UNICODE). Π Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡ RegisterWindowMessage. ΠΠ³ΠΎ ΡΠΌΡΡΠ» ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΌΠ°ΠΊΡΠΎΡΠ° UNICODE: Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, RegisterWindowMessage ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ RegisterWindowMessageW, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ β RegisterWindowMessageA. ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΡΠ°Π²Π»ΡΡ ΠΈΠ»ΠΈ ΡΠ±ΠΈΡΠ°Ρ ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ UNICODE, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΠΌΠ΅Π½ΡΡ Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅ ANSI- ΠΈΠ»ΠΈ Unicode-Π²Π΅ΡΡΠΈΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Delphi Π½Π΅ ΡΡΠ°Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π»Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ°Ρ Π² Delphi ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ (ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ ΡΠ°ΡΡΡ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ²). ΠΠΎΡΡΠΎΠΌΡ Π² Delphi Π½Π΅Ρ ΡΠΈΠΏΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ TCHAR.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ° ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ RegisterWindowMessage ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Windows (Π»ΠΈΡΡΠΈΠ½Π³ 1.19).
ΠΠΈΡΡΠΈΠ½Π³ 1.19. ΠΠΌΠΏΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ RegisterWindowMessageinterface
...
function RegisterWindowMessage(lpString: PChar): UINT; stdcall;
function RegisterWindowMessageA(lpString: PAnsiChar): UINT;
stdcall; function RegisterWindowMessageW(lpString: PWideChar): UINT; stdcall;
...
implementation
...
function RegisterWindowMessage;
external user32 name 'RegisterWindowMessageA';
function RegisterWindowMessageA;
external user32 name 'RegisterWindowMessageA';
function RegisterWindowMessageW;
external user32 name 'RegisterWindowMessageW';
ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ RegisterWindowMessageA ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ: ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌ Π½Π°ΡΡΠΎΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π° Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· β ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ RegisterWindowMessage. ΠΡΠ±ΠΎΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ANSI-Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ, ΡΡΠΎ ΡΠΈΠΏΡ PChar ΠΈ PAnsiChar ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ). Π§ΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ Unicode-Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ RegisterWindowMessageW.
Π‘ΡΡΡΠΊΡΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ANSI- ΠΈ Unicode-Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΡΠΊΡΡΡΠ° WNDCLASS Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Windows ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΡΠΈΠΏΠ°ΠΌΠΈ TWndClassA (Ρ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠ°ΠΌΠΈ WNDCLASSA ΠΈ tagWNDCLASSA) ΠΈ TWndClassW (Ρ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠ°ΠΌΠΈ WNDCLASSW ΠΈ tagWHDCLASSW). Π’ΠΈΠΏ TWndClass (ΠΈ Π΅Π³ΠΎ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ WNDCLASS ΠΈ tagWNDCLASS) ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΡΠΈΠΏΡ TWndClassA. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ RegisterClassA ΠΈ RegisterClassExA ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠΏ TWndClassA, ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ RegisterClassW ΠΈ RegisterClassExW β ΡΠΈΠΏ TWndClassW.
1.1.13. Π‘ΡΡΠΎΠΊΠΈ Π² Windows API
Unicode Π² Delphi Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅Π΄ΠΊΠΎ, Ρ.ΠΊ. ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Windows 9x/ΠΠ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° VCL ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Unicode, ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡ ANSI. ΠΠΎΡΡΠΎΠΌΡ Π΄Π°Π»Π΅Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ± ANSI. Π‘ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ Unicode ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² PChar Π½Π° PWideChar ΠΈ string Π½Π° WideString.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π² Delphi Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ ΡΠΈΠΏ AnsiString, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎ string (Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π² Π³Π»Π°Π²Π΅ 3). ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° string ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΡΡΡΠΎΠΊΡ, Ρ ΡΠ°Π½ΡΡΡΡΡΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΡΡΡΠΎΠΊΠΈ. ΠΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅ ΠΈ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ "ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ". ΠΡΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠΎ ΡΡΡΠΎΠΊΠ° Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ, Π° ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΡΠΎΠΊΡ. Π‘ΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΠΎΠ³Π΄Π° ΡΡΡΠΎΠΊΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ: Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΠ°Π²Π΅Π½ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΡΠΎ ΡΡΡΠΎΠΊΠ° ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ, ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ ΡΡΠ°ΡΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ, Ρ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π½ΠΎΠ²ΡΡ ΠΊΠΎΠΏΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΡΠΎΠΊΠ° ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΡΠ»Π°ΡΡΠΈΡ ΡΡ Π½Π° Π½Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ ΠΊΠΎΡΠ½ΡΠ»ΠΈΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΡΠΈ Π»ΡΠ±ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ ΡΡΡΠΎΠΊΠΈ Π² Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» (ΠΏΡΠΈ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ΅ Π΄Π»ΠΈΠ½Ρ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Length ΠΎΠ½ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ). ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ°Π½Π΅Ρ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ (nil), ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° #0 Π²ΡΠ΄Π΅Π»Π΅Π½Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΡΠΈ Π²ΡΡ ΠΎΠ΄Π΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ (Ρ. Π΅., Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠΎΠ»Π΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ) ΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ, Ρ.Π΅. ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΠ»ΠΎΠΊ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ, ΠΏΠ°ΠΌΡΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½Π°Ρ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ. (Π Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ AnsiString ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄. 3.3.)