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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «О Ρ‡Ρ‘ΠΌ Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ Π² ΠΊΠ½ΠΈΠ³Π°Ρ… ΠΏΠΎ DelphiΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 4

Автор А. Π“Ρ€ΠΈΠ³ΠΎΡ€ΡŒΠ΅Π²

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ здСсь ΠΏΡ€Π°Π²ΠΈΠ»Π° имСнования Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ внСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ ΠΏΡ€ΠΈ использовании VCL. НапримСр, для описания растра Π² Windows API ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ BITMAP (ΠΎΠ½ ΠΆΠ΅β€” tagBITMAP). Π’ Delphi ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ имя β€” TBitmap. Но Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ имя ΠΈΠΌΠ΅Π΅Ρ‚ класс TBitmap, описанный Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graphics. Π’ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Delphi создаСт автоматичСски, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Graphics находится Π² спискС uses послС модуля Windows, поэтому ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ TBitmap воспринимаСтся компилятором ΠΊΠ°ΠΊ Graphics.TBitmap, Π° Π½Π΅ ΠΊΠ°ΠΊ Windows.TBitmap. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Windows.Π’Bitmap, Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя модуля ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½. Π’ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях Delphi Π±Ρ‹Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° имСнования Ρ‚ΠΈΠΏΠΎΠ². НапримСр. Π² Delphi 2 сущСствовал Ρ‚ΠΈΠΏ BITMAP, Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ TBitmap ΠΈ tagBITMAP, Π° Π² Delphi 3 ΠΈΠ· этих Ρ‚Ρ€Π΅Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π±Ρ‹Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ TBitmap.

ВсС структуры Π² Windows API описаны Π±Π΅Π· выравнивания, Ρ‚.Π΅. компилятор Π½Π΅ вставляСт ΠΌΠ΅ΠΆΠ΄Ρƒ полями Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ слова, поэтому Π² Delphi для описания ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… структур прСдусмотрСно слово packed, Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅.

ΠŸΡ€ΠΈ описании структур Windows API ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово union (см., Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, структуру in_addr). ОбъСдинСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого слова ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ адрСсу. Π’ Delphi это соотвСтствуСт Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΌ записям (Ρ‚. Π΅. использованию сазС Π² record). ОбъСдинСния Π² C/C++ Π³ΠΈΠ±Ρ‡Π΅, Ρ‡Π΅ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹Π΅ записи Delphi, Ρ‚.ΠΊ. ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π² любом мСстС структуры, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅. ΠŸΡ€ΠΈ пСрСносС Ρ‚Π°ΠΊΠΈΡ… структур Π² Delphi ΠΈΠ½ΠΎΠ³Π΄Π° приходится Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим синтаксис описания самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² C++ (листинг 1.1).

Листинг 1.1. Бинтаксис описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° C++

<Π’ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ> <Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ> ' ('

 [<Π’ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°> {<Имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°>}

  (',' <Π’ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°> {<Имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°>} }

 ]

')';

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· листинга 1.1, ΠΏΡ€ΠΈ объявлСнии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠΌΠ΅Π½Π°. Однако это считаСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΈ примСняСтся ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ (Ссли Π½Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ "ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²" Ρ‚ΠΈΠΏΠ° VOID, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… написано Π΄Π°Π»Π΅Π΅).

НСобходимо ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² C/C++ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистры, поэтому HDC, hdc, hDC ΠΈ Ρ‚.Π΄. β€” это Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (Π°Π²Ρ‚ΠΎΡ€ Π‘ ΠΎΡ‡Π΅Π½ΡŒ любил ΠΊΡ€Π°Ρ‚ΠΊΠΎΡΡ‚ΡŒ ΠΈ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ 26, Π° 52 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ часто ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ рСгистра. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΈ описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Delphi ΠΌΡ‹ Π½Π΅ обязаны ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ лишь ΠΈΡ… Ρ‚ΠΈΠΏΡ‹ ΠΈ порядок слСдования. Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ всСго этого функция, описанная Π² справкС ΠΊΠ°ΠΊ

HMETAFILE CopyMetaFile(HMETAFILE hmfSrc, LPCTSTR lpszFile);

Π² Delphi ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

function Π‘ΠΎΡ€ΡƒΠœΠ΅taFile(hnfSrc: HMETAFILE; lpszFile: LPCTSTR): HMETAFILE;

ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС.

function CopyMetaFile(hnfSrc: HMETAFILE; lpszFile: PChar): HMETAFILE;

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Delphi допускаСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ совпадало с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ°, поэтому ΠΌΡ‹ Π² дальнСйшСм ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½ΠΎΠΌ рСгистрС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Delphi максимально соотвСтствовал исходному ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡƒ Π½Π° C/C++. ΠŸΡ€ΠΈ этом слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π½Π΅ Ρ‚ΠΈΠΏΠ°, поэтому, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° придСтся с явным ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ объявлСн.

НСсколько особняком стоит Ρ‚ΠΈΠΏ VOID (ΠΈΠ»ΠΈ void, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ Π² Windows API этот ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ встрСчаСтся сущСствСнно Ρ€Π΅ΠΆΠ΅). Если Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ, Ρ‚ΠΎ Π² ПаскалС ΠΎΠ½Π° описываСтся ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. Если вмСсто ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² скобках ΡƒΠΊΠ°Π·Π°Π½ void, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². НапримСр, функция

VOID CloseLogFile(VOID);

Π² Delphi описываСтся ΠΊΠ°ΠΊ

procedure CloseLogFile;

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π―Π·Ρ‹ΠΊ C++, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π‘, допускаСт объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚.Π΅. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CloseLogFile ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ: VOID CloseLogFile(); Π’ C++ эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ объявлСния эквивалСнтны, Π½ΠΎ Π² Windows API Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ явного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° встрСчаСтся сущСствСнно Ρ€Π΅ΠΆΠ΅ ΠΈΠ·-Π·Π° нСсовмСстимости с C.

Когда Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ начинаСтся с Π±ΡƒΠΊΠ² LP), ΠΏΡ€ΠΈ описании этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Delphi ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚.ΠΊ. Π² этом случаС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСдаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. НапримСр, функция

int GetRgnBox(HRGN hrgn, LPRECT lprc);

Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Windows описана ΠΊΠ°ΠΊ

function GetRgnBox(RGN: HRGN; var p2: TRec): Integer;

Вакая Π·Π°ΠΌΠ΅Π½Π° цСлСсообразна Π² Ρ‚ΠΎΠΌ случаС, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании var ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. НулСвой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² C/C++ обозначаСтся константой NULL. NULL ΠΈ 0 Π² этих языках взаимозамСняСмы, поэтому Π² справкС ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΡ€ΠΎ цСлочислСнный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ NULL.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ссли Π½Π΅ удаСтся ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ функция, описанная Π² справкС, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° Паскаль, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ описаниС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² исходных тСкстах ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, поставляСмых вмСстС с Delphi. Π­Ρ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ $(DELPHI)\Source\RTL\Win (Π΄ΠΎ Delphi 7) ΠΈΠ»ΠΈ $(BDS)\Source\Win32\RTL\Win (BDS 2006 ΠΈ Π²Ρ‹ΡˆΠ΅). МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ подсказкой, которая всплываСт Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Delphi послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π±Ρ€Π°Π½ΠΎ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ справку, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetSystemMetrics, Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ эта функция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ цСлочислСнный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Однако Π΄Π°Π»Π΅Π΅ Π² справкС прСдлагаСтся ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ числа, a SM_ARRANGE, SM_CLEANBOOT ΠΈ Ρ‚.Π΄. Подобная ситуация ΠΈ со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями Windows API. ВсС эти SM_ARRANGE, SM_CLEANBOOT ΠΈ Ρ‚.Π΄. ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ числовых констант. Π­Ρ‚ΠΈ константы описаны Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ описана функция, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ ΠΈΡ…, поэтому ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π²Ρ‹ΡΡΠ½ΡΡ‚ΡŒ числСнныС значСния этих констант, Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΡ… ΠΈΠΌΠ΅Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GetSystemMetrics(SM_ARRANGE);. Если ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ всС-Ρ‚Π°ΠΊΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ числСнныС значСния, Ρ‚ΠΎ Π² справочной систСмС ΠΈΡ… ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ стоит β€” ΠΈΡ… Ρ‚Π°ΠΌ Π½Π΅Ρ‚. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ· исходных тСкстов ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Delphi, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… эти константы описаны. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, просматривая Windows.pas, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ SM_ARRANGE = 56.

Π’ справкС, поставляСмой вмСстС с Delphi Π΄ΠΎ 7-ΠΉ вСрсии Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π² описании ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Windows API Π²Π²Π΅Ρ€Ρ…Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ссылки: QuickInfo, Overview ΠΈ Group. ΠŸΠ΅Ρ€Π²Π°Ρ Π΄Π°Π΅Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ΠΊΠ°ΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ рСализуСтся, Π² ΠΊΠ°ΠΊΠΈΡ… вСрсиях Windows Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Ρ‚.ΠΏ. (напоминаю, Ρ‡Ρ‚ΠΎ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ вСрсиях Π² этой справкС Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ). Overview β€” это ΠΎΠ±Π·ΠΎΡ€ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ большой Ρ‚Π΅ΠΌΡ‹. НапримСр, для любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ с растровыми изобраТСниями, ΠΎΠ±Π·ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½ΡƒΠΆΠ½Ρ‹ эти самыС растровыС изобраТСния ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ устроСны. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Π΄Π΅Ρ‚ ссылка Overview ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит вСсьма Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹Π΅ свСдСния, Π½ΠΎ, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ >>, Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π·ΠΎΡ€Π°. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Group. Π­Ρ‚Π° ссылка ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ списку всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, родствСнных Π΄Π°Π½Π½ΠΎΠΉ. НапримСр, для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateRectRgn Π³Ρ€ΡƒΠΏΠΏΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ. Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ <<, Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ страницы с ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ описаниСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ β€” описаниС возмоТностСй Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ²). Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π»ΡƒΡ‡ΡˆΠ΅ всСго Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ << ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΉΡ‚ΠΈ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ >>.

MSDN (Π° Ρ‚Π°ΠΊΠΆΠ΅ справка BDS 2006 ΠΈ Π²Ρ‹ΡˆΠ΅) прСдоставляСт Π΅Ρ‰Π΅ большС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ Π½ΠΈΠΆΠ½Π΅ΠΉ части описания ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» Requirements, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ написано, какая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ какая вСрсия Windows трСбуСтся для Π΅Π΅ использования. Π’ самом Π½ΠΈΠ·Ρƒ описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ располоТСны ссылки See also. ΠŸΠ΅Ρ€Π²Π°Ρ ссылка β€” ΠΎΠ±Π·ΠΎΡ€ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠ΅ΠΉΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateRectRgn β€” ΠΎΠ½Π° называСтся Regions Overview). Вторая список родствСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Region Functions Π² Π΄Π°Π½Π½ΠΎΠΌ случаС). Она Π²Π΅Π΄Π΅Ρ‚ Π½Π° страницу, Π³Π΄Π΅ пСрСчислСны всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, родствСнныС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ. ПослС этих Π΄Π²ΡƒΡ… ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ссылок ΠΈΠ΄ΡƒΡ‚ ссылки Π½Π° описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно с Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, константы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Windows API ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² модулях Windows ΠΈ Messages. Но ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… модулях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, программист Π΄ΠΎΠ»ΠΆΠ΅Π½ сам Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ находится Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Ни справка, поставляСмая с Delphi, Π½ΠΈ MSDN, разумССтся, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ объявлСн Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ поиском ΠΏΠΎ всСм Ρ„Π°ΠΉΠ»Π°ΠΌ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ pas, находящимся Π² ΠΏΠ°ΠΏΠΊΠ΅ с исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ стандартных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π­Ρ‚ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСсьма популярная функция ShellExecute находится Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ShellAPI, CoCreateInstance β€” Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ActiveX (Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ole2, оставлСнном для совмСстимости со старыми вСрсиями Delphi).