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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π°

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

Π’ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ общСствС ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΈΠ΅ услуги пСрСстали Π±Ρ‹Ρ‚ΡŒ Ρ€ΠΎΡΠΊΠΎΡˆΡŒΡŽ, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ Π² ΡΡƒΡ€ΠΎΠ²ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅ΠΌ Ρ‚Π΅ΠΌΠΏΠ΅ ΠΆΠΈΠ·Π½ΠΈ всС Ρ‡Π°Ρ‰Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ трСбуСтся срочно ΠΏΠ΅Ρ€Π΅ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³ΠΎΡ€ΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ страну. Но Ρƒ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΈΡ… слуТб ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°ΠΌΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»Π°ΡΡŒ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π• Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

1. АналитичСский ΠΎΠ±Π·ΠΎΡ€ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1.1 ДинамичСскиС структуры

1.2 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства

4. Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ общСствС ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΈΠ΅ услуги пСрСстали Π±Ρ‹Ρ‚ΡŒ Ρ€ΠΎΡΠΊΠΎΡˆΡŒΡŽ, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ Π² ΡΡƒΡ€ΠΎΠ²ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅ΠΌ Ρ‚Π΅ΠΌΠΏΠ΅ ΠΆΠΈΠ·Π½ΠΈ всС Ρ‡Π°Ρ‰Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ трСбуСтся срочно ΠΏΠ΅Ρ€Π΅ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³ΠΎΡ€ΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ страну. Но Ρƒ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΈΡ… слуТб ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°ΠΌΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»Π°ΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ срСдство, способноС ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΈΠΌ слуТбам ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ своС врСмя Π½Π° Π΄Π΅ΠΉΡΡ‚вия Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π°.

На Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². Π’Π°ΠΊ Π² ΡΠ²ΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ я Π²Ρ‹Π΄Π΅Π»ΠΈΠ»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈΡ… Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ:

Β· ВрСмя доставки Π·Π°ΠΊΠ°Π·Π° ΠΈ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

Β· ОбъСм Π·Π°ΠΊΠ°Π·Π° ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΡƒΡ€ΡŒΠ΅Ρ€;

Β· ВСс Π·Π°ΠΊΠ°Π·Π° ΠΈ Π³Ρ€ΡƒΠ·ΠΎΠΏΠΎΠ΄ΡŠΠ΅ΠΌΠ½ΠΎΡΡ‚ΡŒ автомобиля ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

БоотвСтствСнно, исходя ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π±ΡƒΠ΄ΡƒΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π²Π° списка: список ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ² ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… список Π·Π°ΠΊΠ°Π·ΠΎΠ². Данная Ρ€Π°Π±ΠΎΡ‚Π° посвящСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ структуры Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Delphi.

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

список ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс

1. ΠΠΠΠ›Π˜Π’Π˜Π§Π•Π‘ΠšΠ˜Π™ ΠžΠ‘Π—ΠžΠ  Π›Π˜Π’Π•Π ΠΠ’Π£Π Π«

1.1 ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ… ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ… — Π΄Π°Π½Π½Ρ‹Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ пСрСмСнная Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Однако ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ указатСлями. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ — это пСрСмСнная, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся адрСс Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…. ГрафичСски ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1.

Рисунок 1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Π°Ρ другая пСрСмСнная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ объявлСния. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ объявлСниС указатСля выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Имя: ^ Π’ΠΈΠΏ;

Π³Π΄Π΅: имя — имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля; Π’ΠΈΠΏ — Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ пСрСмСнная-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ; ^ - объявляСмая пСрСмСнная являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ объявлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ: p1: ^integer; Ρ€2: ^real;

p1 — это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° integer, a p2 — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° real.

Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΈΠΏΠΎΠΌ указатСля. НапримСр, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ объявлСн ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ€:integer, Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΡΡ‚:Ρ€ — «ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°» ΠΈΠ»ΠΈ «Ρ€ — это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΠΎΠ΅» .

Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСмСнная-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ «Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚». Π’ ΡΡ‚ΠΎΠΌ случаС говорят, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля Ρ€Π°Π²Π½ΠΎ NIL. Π—Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ слово NIL соотвСтствуСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ указатСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ NIL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΠ½ΡΡ‚рукциях присваивания ΠΈ Π² ΡƒΡΠ»ΠΎΠ²ΠΈΡΡ…. НапримСр, Ссли ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ p1 ΠΈ Ρ€2 ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Ρ‚ΠΎ ΠΈΠ½ΡΡ‚рукция p1 := NIL;

устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° ΠΈΠ½ΡΡ‚рукция if Ρ€2 = NIL then ShowMessage ('Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ€2 Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½!');

провСряСт, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ€2.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° (Π² Ρ‚СкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ — это имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ стоит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ @). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° инструкция, послС выполнСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пСрСмСнная Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ n, Ρ€ := @n;

Помимо адрСса ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ указатСля ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. НапримСр, Ссли ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ p1 ΠΈ Ρ€2 ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями Ρ‚ΠΈΠΏΠ° integer, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния инструкции: p2 := p1;

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. НапримСр, Ссли Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ i, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния инструкции: Ρ€^: = 5;

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ пяти. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ ^ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡΡ‚ΡŒ присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ пСрСмСнная-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

ДинамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ называСтся пСрСмСнная, ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выдСляСтся Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти для динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ осущСствляСтся Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ new. Π£ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ new ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°Π΄ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ. НапримСр, Ссли Ρ€ ΡΠ²Π»ΡΠ΅Ρ‚ся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ‚ΠΈΠΏ real, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ new (p); Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° real (создана пСрСмСнная Ρ‚ΠΈΠΏΠ° real), ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ адрСс памяти, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ для этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π£ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΈ, поэтому ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ указатСля.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ динамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡƒΡŽ этими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ говорят программисты, «ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ динамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅». Для освобоТдСния памяти, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Dispose, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

НапримСр, Ссли Ρ€ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° инструкциСй new (p), Ρ‚ΠΎ ΠΈΠ½ΡΡ‚рукция dispose (Ρ€) освобоТдаСт Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡƒΡŽ динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, использованиС ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ динамичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Var p1, p2,p3:^ Integer; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° integer

begin

// созданиС динамичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° integer

// Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти для динамичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

New (p1);

New (p2);

New (p3);

Ρ€1^ := 5;

Ρ€2^ := 3;

Ρ€3^ := Ρ€1^ + Ρ€2^;

ShowMessage ('БуммачисСлравна ' + IntToStr (Ρ€3^));

// ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ динамичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, освобоТдСниС памяти

Dispose (p1);

Dispose (Ρ€2);

Dispose (Ρ€3);

end;

Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создаСт Ρ‚Ρ€ΠΈ динамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π”Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ p1 ΠΈ Ρ€2, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния инструкции присваивания. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ вычисляСтся ΠΊΠ°ΠΊ сумма ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ….

Бписки Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС динамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ списки ΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡ.

Бписок ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ графичСски, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Рисунок 2. ГрафичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ списка.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт списка (ΡƒΠ·Π΅Π») прСдставляСт собой запись, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· Π΄Π²ΡƒΡ… частСй. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ — информационная. Вторая Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡΠ²ΡΠ·ΡŒ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ элСмСнтом списка. Бписок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ обСспСчиваСтся связь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтом, называСтся односвязным.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠ³Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ список, Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² списка ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт списка. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объявлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° списка студСнтов:

type

TPStudent = ^TStudent; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° TStudent

// описаниС Ρ‚ΠΈΠΏΠ° элСмСнта списка

TStudent = record

FIO: string[60]; // фамилия

group: integer; // Π½ΠΎΠΌΠ΅Ρ€Π³Ρ€ΡƒΠΏΠΏΡ‹

address: string[60]; // домашний адрСс

next: TPStudent; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт списка

end;

var head: TPStudent; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт списка Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π°Ρ‡Π°Π»ΠΎ, Π² ΠΊΠΎΠ½Π΅Ρ† ΠΈΠ»ΠΈ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто списка. Π’ΠΎ Π²ΡΠ΅Ρ… этих случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ процСсс добавлСния элСмСнтов Π² Π½Π°Ρ‡Π°Π»ΠΎ списка.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² Π½Π°Ρ‡Π°Π»ΠΎ динамичСского списка

type

TPStudent=^TStudent; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ‚ΠΈΠΏ TStudent

TStudent = record

f_name:string[20]; // фамилия

l_name: string[20]; // имя

next: TPStudent; // ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΡΠΏΠΈΡΠΊΠ°

end;

var head: TPStudent; // Π½Π°Ρ‡Π°Π»ΠΎ (Π³ΠΎΠ»ΠΎΠ²Π°) списка, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² Π½Π°Ρ‡Π°Π»ΠΎ списка

procedure add;

var

curr: TPStudent; // новыйэлСмСнтсписка

begin

new (curr); // Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ для элСмСнта списка

curr^.f_name := `Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²';

curr^. l _ name := `Иван';

// Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»ΠΎ списка

curr^.next := head; head := curr;

end;

Рисунок 3. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² ΡΠΏΠΈΡΠΎΠΊ Π’Ρ‹Π²ΠΎΠ΄ Ρ†Π΅Π»ΠΎΠ³ΠΎ списка:

var

curr: TPStudent; // Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт списка

n:integer; // Π΄Π»ΠΈΠ½Π° (ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов) списка

st:string; // строковоС прСдставлСниС списка

begin

n := 0; st := '';

curr := head; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт списка

while curr <> NIL do begin

n := n + 1;

st := st + curr^.f_name + ' ' + curr^.1_name+#13;

curr := curr^.next; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт

end;

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта Π² ΡΠΏΠΈΡΠΎΠΊ выполняСт ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° add, которая создаСт Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-запись, присваиваСт Π΅Π΅ ΠΏΠΎΠ»ΡΠΌ значСния, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ содСрТимому ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля head.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΡƒΠ·Π΅Π», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля ΡƒΠ·Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится ΠΏΠ΅Ρ€Π΅Π΄ удаляСмым ΡƒΠ·Π»ΠΎΠΌ (рисунок 4).

Рисунок 4. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠ·Π΅Π» являСтся динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΠ·Π»Π° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° занимаСмая ΠΈΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ освобоТдСна. ОсвобоТдСниС динамичСской памяти, ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΈΠ½ΠΎΠ³Π΄Π° говорят, «ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ», выполняСтся Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ dispose. Π£ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ dispose ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ΠŸΠ°ΠΌΡΡ‚ΡŒ, занимаСмая этой динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ освобоТдСна. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Var Ρ€: ^integer;

begin

new (p);

{ инструкции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ }

dispose (p);

end

1.2 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ срСдство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ список Π·Π°ΠΊΠ°Π·ΠΎΠ² Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сутки. КаТдая запись списка содСрТит: Π½ΠΎΠΌΠ΅Ρ€ Π·Π°ΠΊΠ°Π·Π°, адрСс доставки, врСмя доставки (ΠΎΡ‚…, Π΄ΠΎ …), объСм Π·Π°ΠΊΠ°Π·Π° Π² ΠΌ3, вСс Π² ΠΊΠ³. Π’Π°ΠΊΠΆΠ΅ имССтся список ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ². КаТдая запись списка содСрТит: Π½ΠΎΠΌΠ΅Ρ€ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°, ЀИО ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°, врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ (ΠΎΡ‚…, Π΄ΠΎ …), Π³Ρ€ΡƒΠ·ΠΎΠΏΠΎΠ΄ΡŠΠ΅ΠΌΠ½ΠΎΡΡ‚ΡŒ автомобиля, max объСм Π³Ρ€ΡƒΠ·Π° Π·Π° ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΊΡƒ. ВрСбуСтся:

Β· НаиболСС эффСктивно Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°ΠΌΠΈ;

Β· Π’Ρ‹Π΄Π°Ρ‚ΡŒ список всСх Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

Β· ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ записи ΠΈΠ· ΡΠΏΠΈΡΠΊΠΎΠ², Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ списки ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ

2. Π ΠΠ—Π ΠΠ‘ΠžΠ’ΠšΠ ΠΠ›Π“ΠžΠ Π˜Π’ΠœΠ

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прСдставлСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ интСрфСйсу. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстрого доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠ³ΠΎ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±Ρ‹Π»ΠΎ задСйствовано минимальноС количСство элСмСнтов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ Π²ΠΎΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ всС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π’ Ρ‡Π°ΡΡ‚ности Ρ‚Π°ΠΊΠΈΠΌΠΈ элСмСнтами являСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° ListZakStringGrid, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ выводится список ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΈ ΠΈΠ½Ρ„ормация ΠΎ Π½ΠΈΡ…, тСкстовая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ MemoCour, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π°ΠΊΠ°Π·ΠΎΠ² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°, списки FIOCourListBox, OtTimeCourListBox, DoTimeCourListBox, WeightCourListBox ΠΈ VolumeCourListBox для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π΅ ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ: ΠΊΠ½ΠΎΠΏΠΊΠΈ добавлСния, рСдактирования ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ. ВсС это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ наглядной ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ, Π½Π΅ Π² ΡƒΡ‰Π΅Ρ€Π± Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Условно ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 3 этапа:

1) ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ этап Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°Ρ… ΠΈ Π·Π°ΠΊΠ°Π·Π°Ρ…, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ.

2) Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ этапа ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ этап распрСдСлСния Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°ΠΌΠΈ.

3) На Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ этапС, этапС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, происходит сохранСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ‚СкстовыС Ρ„Π°ΠΉΠ»Ρ‹.

Π Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ» ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ рисунок 4.1.

3. Π ΠΠ—Π ΠΠ‘ΠžΠ’ΠšΠ ΠŸΠ ΠžΠ“Π ΠΠœΠœΠΠžΠ“Πž БРЕДБВВА

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ· Ρ‚Скстовых Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ односвязныС списки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ списки Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΈ ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ².

Π’ Π·Π°ΠΏΠΈΡΠΈ zakaz ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля, содСрТащиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π·Π°ΠΊΠ°Π·Π΅:

— name: string; - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°;

— number: integer; - Π½ΠΎΠΌΠ΅Ρ€ Ρ‚ΠΎΠ²Π°Ρ€Π°;

— adress: string; - адрСс доставки Π·Π°ΠΊΠ°Π·Π°;

— othour: time; - с ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ осущСствляСтся доставка;

— dohour: time; - Π΄ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·;

— ves: integer; - вСс Ρ‚ΠΎΠ²Π°Ρ€Π°;

— volume: integer; - объСм Ρ‚ΠΎΠ²Π°Ρ€Π°;

— next: Tzakaz; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт списка;

— addToCour: boolean; - логичСский элСмСнт, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·Π° ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Ρƒ;

Π’ Π·Π°ΠΏΠΈΡΠΈ courier ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°:

— number: integer; - Π½ΠΎΠΌΠ΅Ρ€ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

— fiocour: string; - ЀИО ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

— ottime: time; - с ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΡƒΡ€ΡŒΠ΅Ρ€;

— dotime: time; - Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΡƒΡ€ΡŒΠ΅Ρ€;

— Volume: integer; - ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм Π·Π°ΠΊΠ°Π·Π°, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΈΠΌΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ;

— weight: integer; - Π³Ρ€ΡƒΠ·ΠΎΠΏΠΎΠ΄ΡŠΠ΅ΠΌΠ½ΠΎΡΡ‚ΡŒ автомобиля ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

— next: Tcourier; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт списка;

— NowWeight: integer; - Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ вСс Π·Π°ΠΊΠ°Π·ΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡƒΡ€ΡŒΠ΅Ρ€Ρƒ;

— NowVolume: integer; - Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ объСм, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Ρƒ;

— PointZak: TCurZakaz; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΊΠ°Π·ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

ПолС PointZak записи courier содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

— zak: Tzakaz; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΠ°Π· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°;

— next: TCurZakaz; - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт списка;

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

istZak, listCour — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ списков ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ² ΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ²;

temp, current, prev — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ Π²Ρ‹ΡˆΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹Ρ….

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ основныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’Π°Π±Π»ΠΈΡ†Π° 1 «ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ»

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

НазначСниС

TMainWind.FormCreate (Sender: TObject);

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с Ρ„Π°ΠΉΠ»ΠΎΠ², созданиС списков ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ² ΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ².

TMainWind.AddZakButtonClick (Sender: TObject);

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π°.

TMainWind.AddCourButtonClick;

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°.

TMainWind.FormClose;

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Ρ‹.

TMainWind.DisplayCourList;

Π’Ρ‹Π²ΠΎΠ΄ списка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΡƒ.

TMainWind.DisplayZakList;

Π’Ρ‹Π²ΠΎΠ΄ списка Π·Π°ΠΊΠ°Π·ΠΎΠ² Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

TMainWind.GetCourierByIndex;

НахоТдСниС записи Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°.

TMainWind.FIOCourListBoxClick

Π’Ρ‹Π²ΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ всСх Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°.

TMainWind.AddZakazToCur (zak:TZakaz):boolean;

РаспрСдСлСниС Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΏΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°ΠΌ.

TMainWind.ChangeCourButtonClick (Sender: TObject);

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ записи ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°.

TMainWind.DeleteCourButtonClick (Sender: TObject);

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записи ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°.

TMainWind.ChangeZakButtonClick (Sender: TObject);

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ записи Π·Π°ΠΊΠ°Π·Π°.

TMainWind.DeleteZakButtonClick (Sender: TObject);

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·Π°.

4. Π Π£ΠšΠžΠ’ΠžΠ”Π‘Π’Π’Πž ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π•Π›Π―

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ ΠΎΠΊΠ½ΠΎ с ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ элСмСнтами (ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ), Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΠΌΠΈ списками (рисунок 5.1).

Рисунок 5.1

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ осущСствляСтся курсором. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ происходит ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ.

Для добавлСния Π·Π°ΠΊΠ°Π·Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚ Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, послС Ρ‡Π΅Π³ΠΎ Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ (Рисунок 5.2.) ввСсти Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ подтвСрТдСния. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ записи ΠΈ Π΅Π΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Ρƒ. ПослС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ автоматичСски закроСтся.

Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ происходит ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°. ПослС сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π½Π΅ΠΌ выводятся Π² ΡΠΏΠΈΡΠΎΠΊ Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°/Π·Π°ΠΊΠ°Π·Π°. ПослС подтвСрТдСния выполнСния Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅.

Рисунок 5.2.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выдСляСтся Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ происходит ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌ.

Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для осущСствлСния Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ достаточно Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΡ€ΠΎΡ‡Π΅Π΅. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»Ρ‹ courierΠΈ zakaz с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ прСдставлСниСм Π΄Π°Π½Π½Ρ‹Ρ… записСй.

1.Бобровский, Π‘.И., Delphi 7. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ курс. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2004. 736с.

2.Π€Π°Ρ€ΠΎΠ½ΠΎΠ², Π’. Π’. Π’ΡƒΡ€Π±ΠΎ Паскаль 7.0. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ курс. Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС / Π’. Π’. Π€Π°Ρ€ΠΎΠ½ΠΎΠ². М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «ΠžΠœΠ” Π³Ρ€ΡƒΠΏΠΏ», 2003. — 616с.

3.Π“Π»ΡƒΡ…ΠΎΠ²Π° Π›. А., Π€Π°Π΄Π΅Π΅Π²Π°Π•.П., Π€Π°Π΄Π΅Π΅Π²Π°Π•.Π•. ΠžΡΠ½ΠΎΠ²Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ программирования: Π›Π°Π±. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌ для студ. спСц. I-40 01 01 «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ» Π΄Π½Π΅Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ±ΡƒΡ‡. Π’ 4 Ρ‡. Π§.2. -Мн.: Π‘Π“Π£Π˜Π , 2005.

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π•

Π’Π•ΠšΠ‘Π’ ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«

unit MainWindowUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, NewOrderUnit, GlobalTypes, NewCourierUnit,

EditCourUnit, Grids, EditZakUnit;

type

TMainWind = class (TForm)

TableGroupBox: TGroupBox;

GroupBox2: TGroupBox;

ZakazGroupBox: TGroupBox;

AddCourButton: TButton;

ChangeCourButton: TButton;

DeleteCourButton: TButton;

AddZakButton: TButton;

ChangeZakButton: TButton;

DeleteZakButton: TButton;

MemoCour: TMemo;

FIOCourListBox: TListBox;

OtTimeCourListBox: TListBox;

DoTimeCourListBox: TListBox;

VolumeCourListBox: TListBox;

WeightCourListBox: TListBox;

FIOCourLabel: TLabel;

OtTimeCourLabel: TLabel;

DoTimeCourLabel: TLabel;

VolumeCourLabel: TLabel;

WeightCourLabel: TLabel;

ZakListLabel: TLabel;

ListZakStringGrid: TStringGrid;

procedure AddZakButtonClick (Sender: TObject);

procedure AddCourButtonClick (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure FormCreate (Sender: TObject);

procedure DisplayCourList;

Procedure DisplayZakList;

Procedure Number;

Procedure NumberZak;

procedure FIOCourListBoxClick (Sender: TObject);

procedure OtTimeCourListBoxClick (Sender: TObject);

procedure DoTimeCourListBoxClick (Sender: TObject);

procedure VolumeCourListBoxClick (Sender: TObject);

procedure WeightCourListBoxClick (Sender: TObject);

function AddZakazToCur (zak:TZakaz):boolean;

function GetCourierByIndex (index:integer;var prevCour: Tcourier):TCourier;

procedure ChangeCourButtonClick (Sender: TObject);

procedure DeleteCourButtonClick (Sender: TObject);

procedure ChangeZakButtonClick (Sender: TObject);

procedure DeleteZakButtonClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainWind: TMainWind;

zak:zakaz;

cour:courier;

listZak:Tzakaz;

listCour:TCourier;

implementation

{$R *.dfm}

{Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π°}

procedure TMainWind. AddZakButtonClick (Sender: TObject);

var

temp, current, prev: Tzakaz;

i:integer;

begin

NewZakForm.ShowModal;

if (NewOrderUnit.ifAddButClick=true) then

begin

temp:=NewOrderUnit.newZak;

temp.addToCour:=false;

AddZakazToCur (temp);

If ListZak=nil then

begin

ListZak:=temp;

ListZak.number:=1;

ListZak.next:=nil;

end

else

begin

i:=1;

current:=ListZak;

While current<>nil do

begin

if current.dohour.hour>temp.dohour.hour then

break

else

if current.dohour.hour=temp.dohour.hour then

if current.dohour.min>=temp.dohour.min then

break;

prev:=current;

current:=current.next;

inc (i);

end;

if i=1 then

begin

temp.next:=listZak;

listZak:=temp;

end

else

begin

temp.next:=current;

prev.next:=temp;

end;

end;

numberZak;

DisplayZakList;

end;

end;

{Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°}

procedure TMainWind. AddCourButtonClick (Sender: TObject);

var

tempCour, CurrCour, PrevCour: TCourier;

j:integer;

begin

NewCourForm.ShowModal;

if (NewCourierUnit.ifAddButClick=true) then

begin

tempCour:=NewCourierUnit.NewCour;

If ListCour=nil then

begin

ListCour:=tempCour;

ListCour.number:=1;

ListCour.next:=nil;

end

else

begin

j:=1;

currCour:=ListCour;

While currCour<>nil do

begin

if currCour.dotime.hour>tempCour.dotime.hour then

break

else

if currCour.dotime.hour=tempCour.dotime.hour then

if currCour.dotime.min>=tempCour.dotime.min then

break;

prevCour:=currCour;

currCour:=currCour.next;

inc (j);

end;

if j=1 then

begin

tempCour.next:=ListCour;

ListCour:=tempCour;

end

else

begin

tempCour.next:=currCour;

prevCour.next:=tempCour;

end;

end;

Number;

DisplayCourList;

end;

end;

{Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»}

procedure TMainWind. FormClose (Sender: TObject; var Action: TCloseAction);

var

f1:textfile;

currZak:Tzakaz;

currCur:TCourier;

begin

assignfile (f1,'zakaz.txt');

rewrite (f1);

currZak:=listZak;

while currZak<>nil do

begin

writeln (f1,currZak.number);

writeln (f1,currZak.name);

writeln (f1,currZak.adress);

writeln (f1,currZak.othour.hour);

writeln (f1,currZak.othour.min);

writeln (f1,currZak.dohour.hour);

writeln (f1,currZak.dohour.min);

writeln (f1,currZak.volume);

writeln (f1,currZak.ves);

currZak:=currZak.next;

end;

closefile (f1);

assignfile (f1,'courier.txt');

rewrite (f1);

currCur:=listCour;

while currCur<>nil do

begin

writeln (f1,currCur.number);

writeln (f1,currCur.fiocour);

writeln (f1,currCur.ottime.hour);

writeln (f1,currCur.ottime.min);

writeln (f1,currCur.dotime.hour);

writeln (f1,currCur.dotime.min);

writeln (f1,currCur.volume);

writeln (f1,currCur.weight);

currCur:=currCur.next;

end;

closefile (f1);

end;

{Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ}

procedure TMainWind. FormCreate (Sender: TObject);

var

f1:textfile;

currZak, prevZak: Tzakaz;

currCur, prevCur: TCourier;

begin

assignfile (f1,'zakaz.txt');

reset (f1);

prevZak:=nil;

while not eof (f1) do

begin

new (currZak);

readln (f1,currZak.number);

readln (f1,currZak.name);

readln (f1,currZak.adress);

readln (f1,currZak.othour.hour);

readln (f1,currZak.othour.min);

readln (f1,currZak.dohour.hour);

readln (f1,currZak.dohour.min);

readln (f1,currZak.volume);

readln (f1,currZak.ves);

currZak.addToCour:=false;

if (prevzak=nil) then

listZak:=currZak

else

prevZak.next:=currZak;

prevZak:=currZak;

end;

if (prevZak<>nil) then

prevZak.next:=nil;

closefile (f1);

NumberZak;

DisplayZakList;

assignfile (f1,'courier.txt');

reset (f1);

prevCur:=nil;

while not eof (f1) do

begin

new (currCur);

readln (f1,currCur.number);

readln (f1,currCur.fiocour);

readln (f1,currCur.ottime.hour);

readln (f1,currCur.ottime.min);

readln (f1,currCur.dotime.hour);

readln (f1,currCur.dotime.min);

readln (f1,currCur.volume);

readln (f1,currCur.weight);

currCur.NowWeight:=0;

currCur.NowVolume:=0;

currCur.PointZak:=nil;

if (prevCur=nil) then

listCour:=currCur

else

prevCur.next:=currCur;

prevCur:=currCur;

end;

if (prevCur<>nil) then

prevCur.next:=nil;

closefile (f1);

currZak:=listZak;

while (currZak<>nil) do

begin

AddZakazToCur (currZak);

currZak:=currZak.next;

end;

Number;

DisplayCourList;

end;

{Π’Ρ‹Π²ΠΎΠ΄ списка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΡƒ}

procedure TMainWind. DisplayCourList;

var

CurrCourList:TCourier;

begin

FIOCourListBox.Clear;

OtTimeCourListBox.Clear;

DoTimeCourListBox.Clear;

VolumeCourListBox.Clear;

WeightCourListBox.Clear;

CurrCourList:=ListCour;

while CurrCourList<>nil do

begin

FIOCourListBox.Items.Add (IntToStr (CurrCourList.number)+')'+CurrCourList.fiocour);

OtTimeCourListBox.Items.Add ('Hour:'+IntToStr (CurrCourList.ottime.hour)+' Min:'+IntToStr (CurrCourList.ottime.min));

DoTimeCourListBox.Items.Add ('Hour:'+IntToStr (CurrCourList.dotime.hour)+' Min:'+IntToStr (CurrCourList.dotime.min));

VolumeCourListBox.Items.Add (IntToStr (CurrCourList.Volume));

WeightCourListBox.Items.Add (IntToStr (CurrCourList.Weight));

CurrCourList:=CurrCourList.next;

end;

end;

//Π²Ρ‹Π²ΠΎΠ΄ списка Π·Π°ΠΊΠ°Π·ΠΎΠ² Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ//

Procedure TMainWind. DisplayZakList;

var

currZak:TZakaz;

i:integer;

begin

for i:=0 to ListZakStringGrid. RowCount-1 do

ListZakStringGrid.Rows[i]. Clear;

with ListZakStringGrid do

begin

Cells[0,0]: ='?';

Cells[1,0]:='Eiy';

Cells[2,0]:='aa?an';

Cells[3,0]:='a?aiy ';

Cells[4,0]: ='ainoaaee n:';

Cells[5,0]: ='ai:';

Cells[7,0]:='aan';

Cells[8,0]:='iauai';

end;

currZak:=ListZak;

while currZak<>nil do

begin

with ListZakStringGrid do

begin

Cells[0,currZak.number]: =IntToStr (currZak.number);

Cells[1,currZak.number]:=currZak.name;

Cells[2,currZak.number]:=currZak.adress;

Cells[3,currZak.number]:=IntToStr (currZak.othour.hour);

Cells[4,currZak.number]:=IntToStr (currZak.othour.min);

Cells[5,currZak.number]:=IntToStr (currZak.dohour.hour);

Cells[6,currZak.number]:=IntToStr (currZak.dohour.min);

Cells[7,currZak.number]:=IntToStr (currZak.ves);

Cells[8,currZak.number]:=IntToStr (currZak.volume);

end;

currZak:=currZak.next;

end;

end;

{ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°ΠΌ}

Procedure TMainWind. Number;

var

CurrCourList:Tcourier;

i:integer;

begin

i:=1;

CurrCourList:=ListCour;

while CurrCourList<>nil do

begin

CurrCourList.number:=i;

CurrCourList:=CurrCourList.next;

inc (i);

end;

end;

{ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Π·Π°ΠΊΠ°Π·Π°ΠΌ}

Procedure TMainWind. NumberZak;

var

CurrZakList:TZakaz;

i:integer;

begin

i:=1;

CurrZakList:=ListZak;

while CurrZakList<>nil do

begin

CurrZakList.number:=i;

CurrZakList:=CurrZakList.next;

inc (i);

end;

end;

procedure TMainWind. FIOCourListBoxClick (Sender: TObject);

var

curZak:TCurZakaz;

prev:Tcourier;

begin

IF FIOCourListBox. ItemIndex>=0 then

begin

DoTimeCourListBox.ItemIndex:=FIOCourListBox.ItemIndex;

OtTimeCourListBox.ItemIndex:=FIOCourListBox.ItemIndex;

VolumeCourListBox.ItemIndex:=FIOCourListBox.ItemIndex;

WeightCourListBox.ItemIndex:=FIOCourListBox.ItemIndex;

MemoCour.Clear;

curZak:=GetCourierByIndex (FIOCourListBox.ItemIndex, prev).PointZak;

while (curZak<>nil)do

begin

MemoCour.Lines.Add (curZak.zak.name+' '+curZak.zak.adress+' n:'+IntToStr (curZak.zak.othour.hour)+'.'+IntToStr (curZak.zak.othour.min)+' ai:'+IntToStr (curZak.zak.dohour.hour)+'.'+IntToStr (curZak.zak.dohour.min)+' aan:'+IntToStr (curZak.zak.ves)+' iauai:'+IntToStr (curZak.zak.volume));

curZak:=curZak.next;

end;

end;

end;

{Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ записи Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°}

function TMainWind. GetCourierByIndex (index:integer;var prevCour: Tcourier):TCourier;

var

temp, curCour: Tcourier;

i:integer;

begin

curCour:=listCour;

i:=0;

while (i<>nil) do

begin

prevCour:=CurCour;

CurCour:=curCour.next;

inc (i);

end;

GetCourierByIndex:=curCour;

end;

procedure TMainWind. OtTimeCourListBoxClick (Sender: TObject);

var

curZak:TCurZakaz;

prev:Tcourier;

begin

IF OtTimeCourListBox. ItemIndex>=0 then

begin

FIOCourListBox.ItemIndex:=OtTimeCourListBox.ItemIndex;

DoTimeCourListBox.ItemIndex:=OtTimeCourListBox.ItemIndex;

VolumeCourListBox.ItemIndex:=OtTimeCourListBox.ItemIndex;

WeightCourListBox.ItemIndex:=OtTimeCourListBox.ItemIndex;

MemoCour.Clear;

curZak:=GetCourierByIndex (OtTimeCourListBox.ItemIndex, prev).PointZak;

while (curZak<>nil)do

begin

MemoCour.Lines.Add (curZak.zak.name+' '+curZak.zak.adress+' n:'+IntToStr (curZak.zak.othour.hour)+'.'+IntToStr (curZak.zak.othour.min)+' ai:'+IntToStr (curZak.zak.dohour.hour)+'.'+IntToStr (curZak.zak.dohour.min)+' aan:'+IntToStr (curZak.zak.ves)+' iauai:'+IntToStr (curZak.zak.volume));

curZak:=curZak.next;

end;

end;

end;

procedure TMainWind. DoTimeCourListBoxClick (Sender: TObject);

var

curZak:TCurZakaz;

prev:Tcourier;

begin

IF DoTimeCourListBox. ItemIndex>=0 then

begin

FIOCourListBox.ItemIndex:=DoTimeCourListBox.ItemIndex;

OtTimeCourListBox.ItemIndex:=DoTimeCourListBox.ItemIndex;

VolumeCourListBox.ItemIndex:=DoTimeCourListBox.ItemIndex;

WeightCourListBox.ItemIndex:=DoTimeCourListBox.ItemIndex;

MemoCour.Clear;

curZak:=GetCourierByIndex (DoTimeCourListBox.ItemIndex, prev).PointZak;

while (curZak<>nil)do

begin

MemoCour.Lines.Add (curZak.zak.name+' '+curZak.zak.adress+' n:'+IntToStr (curZak.zak.othour.hour)+'.'+IntToStr (curZak.zak.othour.min)+' ai:'+IntToStr (curZak.zak.dohour.hour)+'.'+IntToStr (curZak.zak.dohour.min)+' aan:'+IntToStr (curZak.zak.ves)+' iauai:'+IntToStr (curZak.zak.volume));

curZak:=curZak.next;

end;

end;

end;

procedure TMainWind. VolumeCourListBoxClick (Sender: TObject);

var

curZak:TCurZakaz;

prev:Tcourier;

begin

IF VolumeCourListBox. ItemIndex>=0 then

begin

FIOCourListBox.ItemIndex:=VolumeCourListBox.ItemIndex;

OtTimeCourListBox.ItemIndex:=VolumeCourListBox.ItemIndex;

DoTimeCourListBox.ItemIndex:=VolumeCourListBox.ItemIndex;

WeightCourListBox.ItemIndex:=VolumeCourListBox.ItemIndex;

MemoCour.Clear;

curZak:=GetCourierByIndex (VolumeCourListBox.ItemIndex, prev).PointZak;

while (curZak<>nil)do

begin

MemoCour.Lines.Add (curZak.zak.name+' '+curZak.zak.adress+' n:'+IntToStr (curZak.zak.othour.hour)+'.'+IntToStr (curZak.zak.othour.min)+' ai:'+IntToStr (curZak.zak.dohour.hour)+'.'+IntToStr (curZak.zak.dohour.min)+' aan:'+IntToStr (curZak.zak.ves)+' iauai:'+IntToStr (curZak.zak.volume));

curZak:=curZak.next;

end;

end;

end;

procedure TMainWind. WeightCourListBoxClick (Sender: TObject);

var

curZak:TCurZakaz;

prev:Tcourier;

begin

IF WeightCourListBox. ItemIndex>=0 then

begin

FIOCourListBox.ItemIndex:=WeightCourListBox.ItemIndex;

OtTimeCourListBox.ItemIndex:=WeightCourListBox.ItemIndex;

DoTimeCourListBox.ItemIndex:=WeightCourListBox.ItemIndex;

VolumeCourListBox.ItemIndex:=WeightCourListBox.ItemIndex;

MemoCour.Clear;

curZak:=GetCourierByIndex (WeightCourListBox.ItemIndex, prev).PointZak;

while (curZak<>nil)do

begin

MemoCour.Lines.Add (curZak.zak.name+' '+curZak.zak.adress+' n:'+IntToStr (curZak.zak.othour.hour)+'.'+IntToStr (curZak.zak.othour.min)+' ai:'+IntToStr (curZak.zak.dohour.hour)+'.'+IntToStr (curZak.zak.dohour.min)+' aan:'+IntToStr (curZak.zak.ves)+' iauai:'+IntToStr (curZak.zak.volume));

curZak:=curZak.next;

end;

end;

end;

{Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΊΡƒΡ€ΡŒΠ΅Ρ€Π°ΠΌ}

function TMainWind. AddZakazToCur (zak:TZakaz):boolean;

var

curCur:Tcourier;

curCurZak, prevCurZak, temp: TCurZakaz;

Begin

if (zak = nil) then exit;

curCur:=listCour;

while (curCur<>nil)do

begin

if (zak.addToCour) then break;

if (curCur.Volume-curCur.NowVolume>=zak.volume) then

if (curCur.weight-curCur.NowWeight>=zak.ves) then

if (((curCur.ottime.hour<=zak.othour.min))) and

((curCur.dotime.hour>zak.othour.hour) or ((curCur.dotime.hour=zak.othour.hour) and (curCur.dotime.min>=zak.othour.min)))) or

(((curCur.ottime.hour<=zak.dohour.min))) and

((curCur.dotime.hour>zak.dohour.hour) or ((curCur.dotime.hour=zak.dohour.hour) and (curCur.dotime.min>=zak.dohour.min)))) or

(((curCur.ottime.hour>zak.othour.hour) or ((curCur.ottime.hour=zak.othour.hour) and (curCur.ottime.min>=zak.othour.min))) and

((curCur.dotime.hour<=zak.othour.min))))

then

begin

new (temp);

temp.zak:=zak;

temp.next:=curCur.PointZak;

curCur.PointZak:=temp;

curCur.NowWeight:=curCur.NowWeight+zak.ves;

curCur.NowVolume:=CurCur.NowVolume+zak.volume;

zak.addToCour:=true;

break;

end;

curCur:=curCur.next;

end;

AddZakazToCur:=zak.addToCour;

end;

{Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ²}

procedure TMainWind. ChangeCourButtonClick (Sender: TObject);

var

CurrListZak:TCurZakaz;

CurrZak:TZakaz;

Prev:Tcourier;

begin

tempBuffer:=GetCourierByIndex (FIOCourListBox.ItemIndex, prev);

EditCourForm.ShowModal;

if EditCourUnit. ifEditButClick=true then

begin

CurrListZak:=tempBuffer.PointZak;

tempBuffer.PointZak:=nil;

while CurrListZak<>nil do

begin

CurrListZak.zak.addToCour:=false;

CurrListZak:=CurrListZak.next;

end;

currZak:=ListZak;

while currZak<>nil do

begin

AddZakazToCur (currZak);

currZak:=currZak.next;

end;

DisplayCourList;

end;

end;

{Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ²}

procedure TMainWind. DeleteCourButtonClick (Sender: TObject);

var

DelCour, PrevCour: TCourier;

CourZakBuff:TCurZakaz;

begin

PrevCour:=nil;

DelCour:=GetCourierByIndex (FIOCourListBox.ItemIndex, prevCour);

if FIOCourListBox. ItemIndex=0 then

begin

CourZakBuff:=DelCour.PointZak;

ListCour:=DelCour.next;

dispose (DelCour);

end

else

begin

CourZakBuff:=DelCour.PointZak;

prevCour.next:=DelCour.next;

end;

while courZakBuff<>nil do

begin

CourZakBuff.zak.addToCour:=false;

AddZakazToCur (CourZakBuff.zak);

CourZakBuff:=CourZakBuff.next;

end;

number;

DisplayCourList;

end;

{Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·ΠΎΠ²}

procedure TMainWind. ChangeZakButtonClick (Sender: TObject);

var

currZak, temp: Tzakaz;

begin

If ListZakStringGrid. Row>=0 then

begin

currZak:=listZak;

while currZak. number<>ListZakStringGrid.Row do

currZak:=currZak.next;

tempBufZak:=currZak;

ChangeZakForm.ShowModal;

end;

DisplayZakList;

AddZakazToCur (tempBufZak);

end;

{Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·ΠΎΠ²}

procedure TMainWind. DeleteZakButtonClick (Sender: TObject);

var

Prev, DelZak, curZakCour: Tzakaz;

PrevZak, CurrZak: TCurZakaz;

CurrCour:Tcourier;

ifZakDelete:boolean;

begin

ifZakDelete:=false;

DelZak:=ListZak;

Prev:=nil;

while DelZak. number<>ListZakStringGrid.Row do

begin

prev:=delZak;

DelZak:=DelZak.next;

end;

currCour:=ListCour;

while CurrCour<>nil do

begin

prevZak:=nil;

currZak:=CurrCour.PointZak;

While currZak<>nil do

begin

If currZak.zak.number=DelZak.number then

begin

if prevZak=nil then

begin

CurrCour.PointZak:=CurrZak.next;

dispose (currZak);

end

else

begin

PrevZak.next:=currZak.next;

dispose (currZak);

end;

ifZakDelete:=true;

break;

end;

PrevZak:=CurrZak;

currzak:=currzak.next;

end;

if not ifZakDelete then

CurrCour:=CurrCour.next

else

break;

end;

if prev=nil then

begin

listZak:=DelZak.next;

dispose (DelZak);

end

else

begin

Prev.next:=DelZak.next;

dispose (DelZak);

end;

NumberZak;

DisplayZakList;

curZakCour:=ListZak;

while curZakCour<>nil do

begin

AddZakazToCur (CurZakCour);

curZakCour:=curZakCour.next;

end;

MemoCour.Clear;

DisplayCourList;

end;

end.

unit GlobalTypes;

interface

Type

time=record

hour:integer;

min:integer;

end;

Tzakaz=^zakaz;

zakaz=record

name:string;

number:integer;

adress:string;

othour:time;

dohour:time;

ves:integer;

volume:integer;

next:Tzakaz;

addToCour:boolean;

end;

TCurZakaz=^curZakaz;

curZakaz=record

zak:Tzakaz;

next:TCurZakaz;

end;

Tcourier=^courier;

courier=record

number:integer;

fiocour:string;

ottime:time;

dotime:time;

//time:integer;

Volume:integer;

weight:integer;

next:Tcourier;

NowWeight:integer;

NowVolume:integer;

PointZak:TCurZakaz;

end;

var

tempBuffer:Tcourier;

tempBufZak:Tzakaz;

implementation

end.

unit NewCourierUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, GlobalTypes;

type

TNewCourForm = class (TForm)

AddCourGroupBox: TGroupBox;

FIOCourEdit: TEdit;

OtHourCourEdit: TEdit;

DoHourCourEdit: TEdit;

VolCourEdit: TEdit;

WeightCourEdit: TEdit;

OtMinCourEdit: TEdit;

DoMinCourEdit: TEdit;

AddCourButton: TButton;

FIOCourLabel: TLabel;

OtTimeLabel: TLabel;

DoTimeLabel: TLabel;

VolCourLabel: TLabel;

WeightCourLabel: TLabel;

procedure FormCreate (Sender: TObject);

procedure AddCourButtonClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

NewCourForm: TNewCourForm;

NewCour:TCourier;

ifAddButClick: boolean;

implementation

{$R *.dfm}

procedure TNewCourForm. FormCreate (Sender: TObject);

begin

ifAddButClick:=false;

end;

procedure TNewCourForm. AddCourButtonClick (Sender: TObject);

var

FIO:string;

OtHour, OtMinute, DoHour, DoMinute, Volume, Weight: integer;

begin

ifAddButClick:=false;

FIO:=FIOCourEdit.Text;

If FIO='' then

begin

ShowMessagePos ('Wrong FIO', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtHour:=StrToInt (OtHourCourEdit.Text);

if (OtHour<0)or (OtHour>23) then

raise Exception. Create ('error with hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey ia? aea a? aiaie ?aaiou', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtMinute:=StrToInt (OtMinCourEdit.Text);

if (OtMinute<0)or (OtMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ?aaiou', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoHour:=StrToInt (DoHourCourEdit.Text);

if (DoHour<0)or (DoHour>23) then

raise Exception. Create ('error with Hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey eiioa a? aiaie ?aaiou', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoMinute:=StrToInt (DoMinCourEdit.Text);

if (DoMinute<0)or (DoMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ?aaiou', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if OtHour>DoHour then

raise Exception. Create ('error with time');

end;

except

ShowMessagePos ('Ioeaea ?acieou a? aiaie', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if (OtHour=DoHour) and (OtMinute>DoMinute) then

raise Exception. Create ('error with time');

end;

except

ShowMessagePos ('Ioeaea ?acieou a? aiaie', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if VolCourEdit. Text='' then

raise Exception. Create ('error with volum');

end;

except

ShowMessagePos ('Ioeaea a iiea Iauai', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

Volume:=StrToInt (VolCourEdit.Text);

If Volume<=0 then

Begin

ShowMessagePos ('Wrong volume', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

if WeightCourEdit. Text='' then

raise Exception. Create ('error with weight');

end;

except

ShowMessagePos ('Ioeaea a iiea Aan', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

Weight:=StrToInt (WeightCourEdit.Text);

If Weight<=0 then

Begin

ShowMessagePos ('Wrong weight', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

ifAddButClick:=true;

//созданиС списка ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠ²

new (NewCour);

NewCour.fiocour:=fio;

NewCour.ottime.hour:=OtHour;

NewCour.ottime.min:=OtMinute;

NewCour.dotime.hour:=DoHour;

NewCour.dotime.min:=DoMinute;

NewCour.Volume:=volume;

NewCour.weight:=Weight;

NewCour.NowWeight:=0;

NewCour.NowVolume:=0;

NewCour.PointZak:=nil;

NewCourForm.Close ();

end;

end.

unit NewOrderUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, GlobalTypes;

type

TNewZakForm = class (TForm)

ChangeZakGroupBox: TGroupBox;

NameZakEdit: TEdit;

AdrZakEdit: TEdit;

OtHourEdit: TEdit;

DoHourEdit: TEdit;

VolEdit: TEdit;

VesEdit: TEdit;

NameZakLabel: TLabel;

AdrLabel: TLabel;

OtTimeZakLabel: TLabel;

DoTimeZakLabel: TLabel;

VolZakLabel: TLabel;

WeightZakLabel: TLabel;

NewAddZakButton: TButton;

OtMinuteEdit: TEdit;

DoMinuteEdit: TEdit;

procedure FormCreate (Sender: TObject);

procedure NewAddZakButtonClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

NewZakForm: TNewZakForm;

newZak:Tzakaz;

ifAddButClick:boolean;

implementation

{$R *.dfm}

procedure TNewZakForm. FormCreate (Sender: TObject);

begin

ifAddButClick:=false;

end;

procedure TNewZakForm. NewAddZakButtonClick (Sender: TObject);

var

name, adress: string;

OtHour, OtMinute, DoHour, DoMinute, Volume, Weight: integer;

begin

ifAddButClick:=false;

name:=NameZakEdit.Text;

If name='' then

begin

ShowMessagePos ('Wrong name', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

adress:=AdrZakEdit.Text;

If adress='' then

begin

ShowMessagePos ('Wrong adress', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtHour:=StrToInt (OtHourEdit.Text);

if (OtHour<0)or (OtHour>23) then

raise Exception. Create ('error with hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey ia? aea a? aiaie ainoaaee', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtMinute:=StrToInt (OtMinuteEdit.Text);

if (OtMinute<0)or (OtMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ainoaaee', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoHour:=StrToInt (DoHourEdit.Text);

if (DoHour<0)or (DoHour>23) then

raise Exception. Create ('error with Hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey eiioa a? aiaie ainoaaee', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoMinute:=StrToInt (DoMinuteEdit.Text);

if (DoMinute<0)or (DoMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ainoaaee', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if OtHour>DoHour then

raise Exception. Create ('error with time');

end;

except

ShowMessagePos ('Ioeaea ?acieou a? aiaie', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if (OtHour=DoHour) and (OtMinute>DoMinute) then

raise Exception. Create ('error with time');

end;

except

ShowMessagePos ('Ioeaea ?acieou a? aiaie', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if VolEdit. Text='' then

raise Exception. Create ('error with volum');

end;

except

ShowMessagePos ('Ioeaea a iiea Iauai', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

Volume:=StrToInt (VolEdit.Text);

If Volume<=0 then

Begin

ShowMessagePos ('Wrong volume', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

if VesEdit. Text='' then

raise Exception. Create ('error with weight');

end;

except

ShowMessagePos ('Ioeaea a iiea Aan', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

Weight:=StrToInt (VesEdit.Text);

If Weight<=0 then

Begin

ShowMessagePos ('Wrong weight', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

//nicaaiea nienea

ifAddButClick:=true;

New (NewZak);

NewZak.name:= name;

NewZak.adress:=adress;

NewZak.othour.hour:=othour;

NewZak.othour.min:=otminute;

NewZak.dohour.hour:=dohour;

NewZak.dohour.min:=dominute;

NewZak.volume:=volume;

NewZak.ves:=weight;

NewZakForm.Close ();

end;

end.

unit EditCourUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, GlobalTypes;

type

TEditCourForm = class (TForm)

EditCourGroupBox: TGroupBox;

EditFIOCourLabel: TLabel;

EditOtTimeLabel: TLabel;

EditDoTimeLabel: TLabel;

EditVolCourLabel: TLabel;

EditWeightCourLabel: TLabel;

EditFIOCourEdit: TEdit;

EditOtHourCourEdit: TEdit;

EditDoHourCourEdit: TEdit;

EditVolCourEdit: TEdit;

EditOtMinCourEdit: TEdit;

EditDoMinCourEdit: TEdit;

EditCourButton: TButton;

EditWeightCourEdit: TEdit;

procedure FormCreate (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure EditCourButtonClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

EditCourForm: TEditCourForm;

EditCour:TCourier;

ifEditButClick: boolean;

implementation

{$R *.dfm}

procedure TEditCourForm. FormCreate (Sender: TObject);

begin

ifEditButClick:=false;

end;

procedure TEditCourForm. FormActivate (Sender: TObject);

begin

EditFIOCourEdit.Text:=GlobalTypes.tempBuffer.fiocour;

EditOtHourCourEdit.Text:=IntToStr (tempBuffer.ottime.hour);

EditOtMinCourEdit.Text:=IntToStr (tempBuffer.ottime.min);

EditDoHourCourEdit.Text:=IntToStr (tempBuffer.dotime.hour);

EditDoMinCourEdit.Text:=IntToStr (tempBuffer.dotime.min);

EditVolCourEdit.Text:=IntToStr (tempBuffer.Volume);

EditWeightCourEdit.Text:=IntToStr (tempBuffer.weight);

end;

procedure TEditCourForm. EditCourButtonClick (Sender: TObject);

var

FIO:string;

OtHour, OtMinute, DoHour, DoMinute, Volume, Weight: integer;

begin

ifEditButClick:=false;

FIO:=EditFIOCourEdit.Text;

If FIO='' then

begin

ShowMessagePos ('Wrong FIO', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtHour:=StrToInt (EditOtHourCourEdit.Text);

if (OtHour<0)or (OtHour>23) then

raise Exception. Create ('error with hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey ia? aea a? aiaie ?aaiou', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtMinute:=StrToInt (EditOtMinCourEdit.Text);

if (OtMinute<0)or (OtMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ?aaiou', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoHour:=StrToInt (EditDoHourCourEdit.Text);

if (DoHour<0)or (DoHour>23) then

raise Exception. Create ('error with Hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey eiioa a? aiaie ?aaiou', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoMinute:=StrToInt (EditDoMinCourEdit.Text);

if (DoMinute<0)or (DoMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ?aaiou', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if OtHour>DoHour then

raise Exception. Create ('error with time');

end;

except

ShowMessagePos ('Ioeaea ?acieou a? aiaie', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if (OtHour=DoHour) and (OtMinute>DoMinute) then

raise Exception. Create ('error with time');

end;

except

ShowMessagePos ('Ioeaea ?acieou a? aiaie', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if EditVolCourEdit. Text='' then

raise Exception. Create ('error with volum');

end;

except

ShowMessagePos ('Ioeaea a iiea Iauai', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

Volume:=StrToInt (EditVolCourEdit.Text);

If Volume<=0 then

Begin

ShowMessagePos ('Wrong volume', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

if EditWeightCourEdit. Text='' then

raise Exception. Create ('error with weight');

end;

except

ShowMessagePos ('Ioeaea a iiea Aan', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

Weight:=StrToInt (EditWeightCourEdit.Text);

If Weight<=0 then

Begin

ShowMessagePos ('Wrong weight', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

ifEditButClick:=true;

tempBuffer.fiocour:=fio;

tempBuffer.ottime.hour:=OtHour;

tempBuffer.ottime.min:=OtMinute;

tempBuffer.dotime.hour:=DoHour;

tempBuffer.dotime.min:=DoMinute;

tempBuffer.Volume:=volume;

tempBuffer.weight:=Weight;

tempBuffer.NowWeight:=0;

tempBuffer.NowVolume:=0;

Close ();

end;

end.

unit EditZakUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, GlobalTypes, Grids;

type

TChangeZakForm = class (TForm)

AddGroupBox: TGroupBox;

NameZakLabel: TLabel;

AdrLabel: TLabel;

OtTimeZakLabel: TLabel;

DoTimeZakLabel: TLabel;

VolZakLabel: TLabel;

WeightZakLabel: TLabel;

NameChangeZakEdit: TEdit;

AdrChangeZakEdit: TEdit;

ChangeOtHourEdit: TEdit;

ChangeDoHourEdit: TEdit;

ChangeVolEdit: TEdit;

ChangeVesEdit: TEdit;

ChangeZakButton: TButton;

ChangeOtMinuteEdit: TEdit;

ChangeDoMinuteEdit: TEdit;

procedure FormActivate (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure ChangeZakButtonClick (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

ChangeZakForm: TChangeZakForm;

IfChangeButClick: boolean;

implementation

{$R *.dfm}

procedure TChangeZakForm. FormCreate (Sender: TObject);

begin

IfChangeButClick:=false;

end;

procedure TChangeZakForm. FormActivate (Sender: TObject);

begin

NameChangeZakEdit.Text:=tempBufZak.name;

AdrChangeZakEdit.Text:=tempBufZak.adress;

ChangeOtHourEdit.Text:=IntToStr (tempBufZak.othour.hour);

ChangeOtMinuteEdit.Text:=IntToStr (tempBufZak.othour.min);

ChangeDoHourEdit.Text:=IntToStr (tempBufZak.dohour.hour);

ChangeDoMinuteEdit.Text:=IntToStr (tempBufZak.dohour.min);

ChangeVesEdit.Text:=IntToStr (tempBufZak.ves);

ChangeVolEdit.Text:=IntToStr (tempBufZak.volume);

end;

procedure TChangeZakForm. ChangeZakButtonClick (Sender: TObject);

var

name, adress: string;

OtHour, OtMinute, DoHour, DoMinute, Volume, Weight: integer;

begin

ifChangeButClick:=false;

name:=NameChangeZakEdit.Text;

If name='' then

begin

ShowMessagePos ('Wrong name', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

adress:=AdrChangeZakEdit.Text;

If adress='' then

begin

ShowMessagePos ('Wrong adress', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtHour:=StrToInt (ChangeOtHourEdit.Text);

if (OtHour<0)or (OtHour>23) then

raise Exception. Create ('error with hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey ia? aea a? aiaie ainoaaee', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

OtMinute:=StrToInt (ChangeOtMinuteEdit.Text);

if (OtMinute<0)or (OtMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ainoaaee', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoHour:=StrToInt (ChangeDoHourEdit.Text);

if (DoHour<0)or (DoHour>23) then

raise Exception. Create ('error with Hour');

end;

except

ShowMessagePos ('Ioeaea a iiea? anu aey eiioa a? aiaie ainoaaee', Left+Width div 2−50,top + Height div 2−50);

exit;

end;

try

begin

DoMinute:=StrToInt (ChangeDoMinuteEdit.Text);

if (DoMinute<0)or (DoMinute>59) then

raise Exception. Create ('error with minute');

end;

except

ShowMessagePos ('Ioeaea a iiea Ieioou aey ia? aea a? aiaie ainoaaee', Left+Width div 2−50,top+Height div 2−50);

exit;

end;

try

begin

if OtHour>DoHour then

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