ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. 
НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… с фамилиями Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΡ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌΠΈ ΠΈ адрСсами

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ списков (list box). Бписок — это Π½Π°Π±ΠΎΡ€ тСкстовых строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выводится Π½Π° ΡΠΊΡ€Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ столбца тСкста. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ строки Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ посылки сообщСний ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ списка. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ элСмСнтов списка осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… с фамилиями Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΡ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌΠΈ ΠΈ адрСсами (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Для удобства контроля Π½Π°Π΄ рСсурсами памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° vector. Vector — C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ динамичСский массив ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа с Π°Π²Ρ‚оматичСским ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнта. Как ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΠΊ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ воспользовавшись ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ индСксирования [].

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ использовались ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Β· CreateFile.

ВсС дСйствия с Ρ„Π°ΠΉΠ»ΠΎΠΌ происходят послС использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateFile (). Π­Ρ‚Π° функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€Π°Π²Π° Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для создания Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π½Π΅ΡˆΠ½ΠΈΠΌΠΈ ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ (функция довольно ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π° ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ…). ВсС это ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ дСйствий ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ, пСрСдавая Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ многочислСнныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π²Ρ‹Π±ΠΎΡ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ частной Π·Π°Π΄Π°Ρ‡ΠΈ.

Β· OpenFile.

Данная функция, ΠΏΠΎ ΡΡƒΡ‚ΠΈ своСй, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для открытия Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ устройств. Ѐункция OpenFile Π² ΡΠ»ΡƒΡ‡Π°Π΅ успСха Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дискриптор (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ) ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ дискриптора Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ INVALID_HANDLE_VALUE.

Β· ReadFile, WriteFile.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ³ΠΎ открытия ΠΈΠ»ΠΈ создания Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² Π½Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Π΅ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ReadFile () — для чтСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ WriteFile () — для записи ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. По ΡΠΈΠ½Ρ‚аксису ΠΎΠ½ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈ. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ°ΠΌΠΎΠΌ использовании рассматриваСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ся Π² Ρ„Π°ΠΉΠ», Π° ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π½Π΅Π³ΠΎ. А Ρ‚Π°ΠΊ, Π±ΡƒΡ„Π΅Ρ€, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ… Π±ΡƒΡ„Π΅Ρ€Π° ΠΈ Ρ‡ΠΈΡΠ»ΠΎ считанных Π±Π°ΠΉΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ.

Β· CloseFile.

Π­Ρ‚Π° функция достаточно проста. ВыполняСт дСйствия ΠΏΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ указатСля Π½Π° Ρ„Π°ΠΉΠ». Π•Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ указатСлями ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π΅Π΅ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° пСрСдаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

Для сохранСния Ρ„Π°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ комбинация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ CreateFile () ΠΈ WriteFile ().

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ произвСсти ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ дСйствия с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΏΡ€ΠΈ отсутствии Ρ„Π°ΠΉΠ»Π°, появляСтся сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π°.

Для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ списков (list box). Бписок — это Π½Π°Π±ΠΎΡ€ тСкстовых строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выводится Π½Π° ΡΠΊΡ€Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ столбца тСкста. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ строки Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ посылки сообщСний ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ списка. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ элСмСнтов списка осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SendMessage для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния ΠΎΠΊΠ½Ρƒ списка. Бсылка Π½Π° ΡΡ‚Ρ€ΠΎΠΊΠΈ тСкста ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся с 0, Ρ‡Ρ‚ΠΎ соотвСтствуСт самому Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ элСмСнту списка. Для сортировки элСмСнтов списка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΡ‚ΠΈΠ»ΡŒ LBS_SORT. Бписок заполняСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ сообщСния LB_ADDSTRING. Для обновлСния ΠΎΠΊΠ½Π° списка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сообщСниС LB_RESETCONTENT, Π° Π·Π°Ρ‚Π΅ΠΌ список Π·Π°Π½ΠΎΠ²ΠΎ заполняСтся. Для расчСта Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π° списка использовалась структура TEXTMETRIC. Для установки Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π° ΠΈ Ρ‚Скста ΠΎΠΊΠ½Π° списка использовалось сообщСниС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ WM_CTLCOLORLISTBOX, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetTextColor () ΠΈ SetBgColor ().

РСализация ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π° с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π±Ρ‹Π»Π° осущСствлСна ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ — Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаСт прикладная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΡΡ‚Π°ΠΏΠ΅ поиска, добавлСния, просмотра Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², удалСния элСмСнтов Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° (dialog box procedure) — опрСдСляСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ функция ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Windows Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° опСрационная систСма ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ Π·Π°Π΄Π°Ρ‡Ρƒ для выполнСния Π² Π±Π»ΠΎΠΊΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³Π°. Π₯отя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, Ρƒ Π½Π΅Ρ‘ Π½Π΅ Ρ‚Π΅ ΠΆΠ΅ самыС обязанности. Диалоговая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСния, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΎΠΊΠ½ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³Π°. Π₯отя ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ сильно Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, это Π½Π΅ Π½Π°ΡΡ‚оящая оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. Оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠΊΠ½Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π° находится Π² Windows. Π­Ρ‚Π° оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΡˆΡƒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, пСрСдавая Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сама. Для создания ΠΎΠΊΠ½Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция DialogBox. Ѐункция DialogBox, которая вызываСтся для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ ΠΎΠΊΠ½Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π°, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² WndProc Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠΊΠ½ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ. Π¦Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ошибок Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Ρ„Π°ΠΉΠ» Π΄Π°Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π’ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΊΠ½Π°Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° управлСния, ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ (button), ΠΎΠΊΠ½Π° рСдактирования (edit) ΠΈ ΡΡ‚атичСский тСкст (static). ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ этих Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠΊΠΎΠ½ осущСствляСтся ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого использовались ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Β· SetWindowText.

Данная функция использовалась для помСщСния Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ»Π΅ тСкста (ΠΏΡ€ΠΈ поискС).

Β· GetWindowText.

Данная функция использовалась для получСния ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ поля тСкста (ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ, поискС элСмСнтов).

Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ удобства Π΄ΠΈΠ°Π»ΠΎΠ³Π° с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ использовались ΠΎΠΊΠ½Π° сообщСний (Message boxes). Π­Ρ‚ΠΈ ΠΎΠΊΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для оповСщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ для получСния ΠΊΡ€Π°Ρ‚ΠΊΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° Π²ΠΎΠΏΡ€ΠΎΡΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ситуациях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎ Π²Ρ€Π΅ΠΌΡ сохранСния Ρ„Π°ΠΉΠ»). Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠΊΠ½Π° сообщСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для оповСщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…одящих событиях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта).

ΠšΡ€ΠΎΠΌΠ΅ Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ использовались ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinAPI.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ стандартныС срСдства языка Π‘++, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinAPI, Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ windows. h (для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ WinAPI), vector (для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° vector), использовано пространство ΠΈΠΌΡ‘Π½ std.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • Β· Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта;
  • Β· Поиск элСмСнта;
  • Β· Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта;
  • Β· Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ элСмСнтов.

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Β· Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ:

Π­Ρ‚Π° функция осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° добавлСния элСмСнта. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта происходит ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetDlgItemText ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

GetDlgItemText (hDlg, IDC_ADD_ADRESS, dbBook[numOfNow]. adress, sizeof (dbBook[numOfNow]. adress));

GetDlgItemText (hDlg, IDC_ADD_NAME, dbBook[numOfNow]. name, sizeof (dbBook[numOfNow]. name));

GetDlgItemText (hDlg, IDC_ADD_PHONE, dbBook[numOfNow]. phone, sizeof (dbBook[numOfNow]. phone));

Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ являСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π° рСдактирования.

Β· Поиск элСмСнта Π² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅:

Π­Ρ‚Π° функция осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° поиска элСмСнтов. Поиск элСмСнта происходит ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ strstr ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

for (int i = 0; i.

dbFind[numOfFind] = &dbBook[i];

numOfFind++;}}, Π³Π΄Π΅.

numOfNow — Π½ΠΎΠΌΠ΅Ρ€ послСднСго элСмСнта, numOfFind — ΠΊΠΎΠ»-Π²ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… элСмСнтов.

Β· Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ:

Π­Ρ‚Π° функция осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска элСмСнтов. Π’Ρ‹Π·ΠΎΠ² этого Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° осущСствляСтся сразу послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ поиска.

for (int i = 0;iadress);i++).

dbFind[numElemNow]->adress[i] = '';

for (int i = 0;iname);i++).

dbFind[numElemNow]->name[i] = '';

for (int i = 0;iphone);i++).

dbFind[numElemNow]->phone[i] = '';

ПослС этого осущСствляСтся сдвиг элСмСнтов, стоящих послС ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΎΠ΄Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²ΠΏΠ΅Ρ€Ρ‘Π΄.

Β· Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ элСмСнтов Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ:

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ происходит Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ добавлСния элСмСнтов послС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сохранСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetDlgItemText, Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠΊΠΎΠ½ рСдактирования Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° списка осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sprintf ΠΈ Ρ†ΠΈΠΊΠ»Π° с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ for ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

for (int i = 0; i.

SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) buffer);}.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ для обновлСния ΠΎΠΊΠ½Π° списка вызываСтся функция SendMessage (hwndList, LB_RESETCONTENT, 0, 0), которая ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ списка, Π° ΠΏΠΎΡΠ»Π΅ этого проводится Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ опСрация, Π½ΠΎ Π±Π΅Π· Ρ†ΠΈΠΊΠ»Π° с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ for.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ