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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 16

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

[Π’ сторону: элСктронная справка Delphi сообщаСт, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ компилятора $N+), компилятор Π±ΡƒΠ΄Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для выполнСния Π’Π‘Π•Π₯ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ инструкции 80x87, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΈΠΏ Real. Π’Π°ΠΊΠΆΠ΅, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠΎΠΌ Real, компилятор Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΈΠ»ΠΈ ΠΆΠ΅ я ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ΠΏΡ€Π°Π² Π² Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ! :) ]

Π’ΠΎ всяком случаС, Π² элСктронной справкС Visual Basic я ΡƒΠ²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ VB ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Single ΠΈ Double, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ относятся ΠΊ Ρ‚ΠΈΠΏΡƒ IEEE, ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ Delphi-Ρ‚ΠΈΠΏΠ°ΠΌ Single ΠΈ Double. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² справкС отсутствуСт ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Β«Microsoft Binary FormatΒ».

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² вопросС, я «опустился» Π΄ΠΎ DOS ΠΈ запустил QBasic, Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Microsoft QuickBasic, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡƒΡŽ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² поставку DOS. Если ΠΌΡ‹ посмотрим Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ справку, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

MKSMBF$ ΠΈ MKDMBF$ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ числа Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° IEEE Π² «числовыС строки» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Microsoft-Binary, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² строковых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° FIELD. CVSMBF ΠΈ CVDMBF ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ эти строки ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² числа Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° IEEE.

MKSMBF$(Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ-точности!)

MKDMBF$(Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ-точности#)

CVSMBF (4-байтовая-числовая-строка)

CVDMBF (8-байтовая-числовая-строка)

Ѐункция Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ MKSMBF$ 4-байтовая строка, содСрТащая число Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Microsoft-Binary-format MKDMBF$ 8-байтовая строка, содСрТащая число Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Microsoft-Binary-format CVSMBF Число Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ точности Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ IEEE CVDMBF Число Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ IEEE

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, созданных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ старых вСрсий Basic.

Буммируя Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ 3 Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ для получСния доступа ΠΊ вашим Β«MetaStockΒ»-Ρ„Π°ΠΉΠ»Π°ΠΌ:

1. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² QBasic/DOS

2. НайдитС Π·Π°ΠΌΠ΅Π½Ρƒ (с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ совмСстимости с Delphi) для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, упомянутых Π²Ρ‹ΡˆΠ΅.

3. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сами. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для старых Ρ‚ΠΈΠΏΠΎΠ² Single ΠΈ Double, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ²ΡˆΠΈΡ…ΡΡ Π² Β«Microsoft Binary FormatΒ», Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² справочных Ρ„Π°ΠΉΠ»Π°Ρ… старых вСрсий MS Basic.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ 

БтатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Delphi 1 

Π”Π°, это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² сСкции const, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

procedure p;

const MyVariable : Integer = 0;

begin

 Inc(MyVariable);

end;

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная MyVariable содСрТит количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² P.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‡Π΅ΠΌ использованиС Π²Π·Π°ΠΌΠ΅Π½ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ). 

Π Π°Π·Π½ΠΎΠ΅ 

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ компилятора

Быстрый ΠΈ Π»Π΅Π³ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ Π²ΠΊΠ»/Π²Ρ‹ΠΊΠ» Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² компилятора. Π’Π΅ΡΡŒ Borland pascal.

{$R+,L+} {Π­Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° компилятора плюс ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ}

{{$R+,L+} {Π­Ρ‚Π° строка – Π΄Π²Π° коммСнтария, ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ?}

Аналогично:

{$DEFINE DEVEL}

{$IFDEF DEVEL}

……

{$ELSEIF}

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с Β«develΒ» компиляции Π½Π° Π½Π΅-Β«develΒ» Π²Π΅Ρ€ΡΠΈΡŽ происходит простым ΠΏΡ€ΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ скобки Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС. ЕдинствСнноС Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΊΠ»ΡŽΡ‡ΠΈ компилятора.

Π’Π°ΠΊΠΆΠ΅ для скоростных ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ†ΠΈΠΉ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, располоТСнныС Π·Π° строкой:

if i=0 then inc(i); {Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅+ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ}

ср.

{ if i=0 then inc(i); {Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€Π΅Π½Π° вся строка}

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ – Π΄Π²Π° наТатия клавиш для установки Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобки ΠΈΠ»ΠΈ дСсяток Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ для установки (* *) Π΄ΠΎ ΠΈ послС строки. Клавиша Del ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ состояниС.

– P Gallagher

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° класс ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° I

МнС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° класс ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр, Ссли Ρƒ мСня Π΅ΡΡ‚ΡŒ ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° экзСмпляр TLabel), Ρ‚ΠΎ ΠΌΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° класс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ссылка Π½Π° класс TLabel) для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ½Π΅ Π΅Ρ‰Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ экзСмпляры классов, создаваСмыС ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π΅Ρ‰Π΅.

Класс, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, Π² Delphi Π½Π΅ зарСгистрирован (Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅), поэтому GetClass('TLabel') Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π΄Π°ΠΆΠ΅ Ссли экзСмпляры класса ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· RTTI. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ этому, Ρƒ мСня Π½Π΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ΄Π° класса, поэтому Ρ€Π°Π±ΠΎΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· RTTI - СдинствСнный Π²Ρ‹Ρ…ΠΎΠ΄.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ссылку Π½Π° класс ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ значСния Π½ΠΎΠ²ΠΎΠΌΡƒ классу Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ класса ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ класс ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ TClass.

type TLabelClass = class of TLabel;


procedure TForm1.Button1Click(Sender: TObject);

var

 Ref : TLabelClass;

 New : TLabel;

begin

 Ref := TLabelClass(Label1.ClassType);

 New := Ref.Create(Self);

 New.Parent := Self;

 New.Caption := 'Ѐантастика!';

end;

Π Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ осущСствлСно ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Assign (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши классы Π±Ρ‹Π»ΠΈ наслСдниками TPersistent). Π”Π°Π½Π½Ρ‹ΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Assign, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ с TPersistentClass:

New.Assign(Label1);

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании автоматичСской поточности ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (этот способ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши классы являлись наслСдниками TComponent, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ зарСгистрированы для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ систСмы).

Π’ вашСм вопросС Π²Ρ‹ исходили ΠΈΠ· Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ прСдполоТСния; классы ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ систСмой И НЕ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠŸΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²; ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ эти Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ связаны, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. НапримСр, скаТСм, Ρƒ вас имССтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс:

TCustomer = class(TComponent)

private

 FCompany: string;

 FPhone : LongInt;

published

 property Company: string read FCompany write FCompany;

 property Phone: LongInt read FPhone write FPhone;

end;

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ систСмы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

RegisterClass(TCustomer);

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ для TCustomer, Π½ΠΎ Π½Π΅ рСгистрируСт Π΅Π³ΠΎ Π² ΠŸΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

ПослС рСгистрации классов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

procedure TForm1.Button1Click(Sender: TObject);

var

 Ref: TComponentClass;

 New: TComponent;

 Stream: TMemoryStream;

begin

 Ref := TComponentClass(Label1.ClassType);

 New := Ref.Create(Self);

 Stream := TMemoryStream.Create;

 try

Stream.WriteComponent(Label1);

  Stream.Position := 0;

  Stream.ReadComponent(New);

 finally

Stream.Free;

 end;

end;

– Rick Rogers 

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° класс ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° II

МнС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° класс ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°β€¦ 

TObject.ClassType


var

 ClassRef: TComponentClass;

 NewComp: TComponent;

begin

 TClass(ClassRef) := Sender.ClassType;

 NewComp := ClassRef.Create(Self);

 β€¦

– Pat Ritchey 

Π Π°Π±ΠΎΡ‚Π° с коммСнтариями Π² большом кускС ΠΊΠΎΠ΄Π°

Delphi 1

Π’ ПаскалС сущСствуСт 2 способа ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ – {} ΠΈ (* *). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ (ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, вставляя (* Π² Π½Π°Ρ‡Π°Π»Π΅ вашСго Π±Π»ΠΎΠΊΠ°, ΠΈ *) Π² ΠΊΠΎΠ½Ρ†Π΅, Π²Ρ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ коммСнтариями Ρ‚ΠΈΠΏΠ° { }.

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… 

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ†ΠΈΡ

Код опрСдСлСния возраста

Delphi 1

Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ рСдактирования ΠΏΠΎΠ»Π΅ΠΉ (Fields Editor), Π΄Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ TTable ΠΈΠ»ΠΈ TQuery, располоТСнном Π½Π° вашСй Ρ„ΠΎΡ€ΠΌΠ΅ (ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Π² Π² контСкстном мСню ΠΏΡƒΠ½ΠΊΡ‚ Fields Editor). Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ всС поля, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ΅ (Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹, Π½ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π½ΠΈΠΌ доступ – для Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ установитС свойство visible Π² false). Π—Π°Ρ‚Π΅ΠΌ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Β«Define…» (ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ) для добавлСния вычисляСмого поля. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя вычисляСмого поля, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅Π΅ΡΡ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏ (вСроятно, StringField) ΠΈ Π·Π°Π΄Π°ΠΉΡ‚Π΅ Π΄Π»ΠΈΠ½Ρƒ (20 Π±ΡƒΠ΄Π΅Ρ‚ Π² самый Ρ€Π°Π·). Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² поля 'calculated' стоит Π³Π°Π»ΠΎΡ‡ΠΊΠ°. Π—Π°Ρ‚Π΅ΠΌ создайтС для вашСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° TTable ΠΈΠ»ΠΈ TQuery ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события 'OnCalcFields'. Π’ этом ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ Π²Ρ‹ Π±Π΅Ρ€Π΅Ρ‚Π΅ значСния Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π΄Π΅Π»Π°Π΅Ρ‚Π΅ вычислСния, ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ вычисляСмого поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали. ПослС этого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выводится Π² TDBGrid, ΠΈΠ»ΠΈ Π² элСмСнтС управлСния TDBText, Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ вмСсто Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ сСтки.