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

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

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

 push x { ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС }

 push word ptr a2 + 2 { Ссли 32-битная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° пСрСдаСтся Π² этих Π΄Π²ΡƒΡ… ΡˆΠ°Π³Π°Ρ…, Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с самой «высокой» (high) части }

 push word ptr a2

 push word ptr a1 + 2

 push word ptr a1

 call func

 add sp, 10 { восстанавливаСм стСк Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ². ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ func Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚Π° }

end;


procedure buildolefunction;

var

 f: pointer;

 reslt: integer;

begin

 f := @olefunction;

 { --- }

 reslt := callolefunction(f, 'Здравствуй, ΠΌΠΈΡ€', 1000000, 25);

 { --- }

end;


begin

 { --- }

end.

На ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ это компилируСтся Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π”ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Ρƒ вас. ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΊ функциям. 

Как я ΠΌΠΎΠ³Ρƒ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ 'зарСгистрированного' ΠΈΠΌΠ΅Π½ΠΈ сСрвСра, Ссли я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Π°Π»Π΅Π΅?

Nomadic совСтуСт:

ЗапуститС исполняСмый Ρ„Π°ΠΉΠ» сСрвСра с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ /UNREGSERVER:

MYSERVER.EXE /UNREGSERVER

Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ разрСгистрации ΡΠ°ΠΌΠΎΡ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ сСрвСра Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ OLE. 

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ 

Delphi 2 

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ D1/D2

Какая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π² срСдС W31, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² W95 ?

ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, сохранСнныС Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ масса ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ Π² Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Delphi 1.0 ΠΈ Delphi 2.0, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

1. строки Π² Delphi 1.0 Π½Π΅ эквивалСнтны строкам ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ) Π² вСрсии 2.0

2. Β«integerΒ» 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π² Delphi 1.0 ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π² 2.0

3. записи автоматичСски ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Delphi 1.0, Π½ΠΎ Π½Π΅ Π² Delphi 2.0

 β€“ Rick Rogers 

Delphi 3 

ΠšΡƒΠ΄Π° ΠΈΠ· Delphi 3 дСлся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ReportSmith? А ΠΌΠΎΠΈ Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с OLE: ole2, oleauto ΠΈ olectl?

Одной строкой 

Nomadic ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚:

Они Π»Π΅ΠΆΠ°Ρ‚ Π² X:\DELPHI3\LIB\DELPHI2.

Ошибки 

Delphi 1 

Ошибка маски рСдактирования Π½Π° быстрых ΠΏΠ΅Π½Ρ‚ΠΈΡƒΠΌΠ°Ρ…

Delphi 1 

Π”Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅. Π­Ρ‚ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° быстрых ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. Если Ρƒ вас имССтся исходный ΠΊΠΎΠ΄ RTL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния:

Π’ MASK.PAS, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅

for I := Low(NewKeyState) to High(NewKeyState) do NewKeyState[I] := 0;

На

NewKeyState := KeyState;

– Steve Schafer 

PASDBK16.DLL Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ GPF

Delphi 1 

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ½Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π΄Π° Π΅Ρ‰Π΅ с Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠ΅ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Delphi? ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² срСдС ID, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ сообщСниС Β«PASDBK16.DLL caused a GPF at 0002:21e6 Shutdown of delphi is recommendedΒ» (PASDBK16.DLL Π²Ρ‹Π·Π²Π°Π»ΠΎ GPF ΠΏΠΎ адрСсу 0002:21e6. РСкомСндуСтся Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Delphi). Если я Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Delphi, снова Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ послС этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«Application is already running terminate before compilingΒ» (Π Π°Π±ΠΎΡ‚Π° прилоТСния ΡƒΠΆΠ΅ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π° ΠΏΠ΅Ρ€Π΅Π΄ компиляциСй).

Π£ мСня Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° сСгодня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ ΠΌΠΎΠΉ ΠΊΠΎΠ»Π»Π΅Π³Π° нашСл Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Если ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ ΠΎΠ±Ρ‰Π΅Π³ΠΎ доступа, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ настройки компилятора ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ сборкС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡƒΡ‚ΡŒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² модулях ΠΎΠ±Ρ‰Π΅Π³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ путям. РСшСниС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ (output) ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° для вашСго прилоТСния ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ пСрСсборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΈ этом ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³). ПослС этого ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΡ‡Π΅Π·Π½ΡƒΡ‚ΡŒ.

– Sjef van der Velde 

Ошибка пСрСполнСния диска

Delphi 1 

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° всС, ΠΊΡ€ΠΎΠΌΠ΅ dpr, pas ΠΈ dfm-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. ΠŸΠΎΡ…ΠΎΠΆΠ΅, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π» испорчСн. Π£ мСня Π±Ρ‹Π»Π° аналогичная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ я смог Π΅Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΈΠΌ способом. 

Delphi 2 

Ошибка чтСния ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС Delphi 2.01 я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«Stream Read ErrorΒ» (ошибка чтСния ΠΏΠΎΡ‚ΠΎΠΊΠ°). Как ΠΌΠ½Π΅ ΠΎΡ‚Π΄Π΅Π»Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ этого?

Π£Π΄Π°Π»ΠΈΡ‚Π΅ DSK– ΠΈ DSM– Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

– Ralph Friedman 

Delphi 5 

Ошибка в ProgressBar

Π’ ProgressBar прСдставлСно свойство BorderWidth. На ΠΌΠΎΠΉ взгляд, рСбята ΠΈΠ· Inprise допустили ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’ этом свойствС отсутствуСт Β«Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π΄ΡƒΡ€Π°ΠΊΠ°Β». Если BorderWidth  < Int(Heigth*0.3) – всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π²Ρ‹ управляСтС высотой "Π±Π΅Π³ΡƒΡ‰Π΅Π³ΠΎ" ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. Если (BorderWidth > Int(Heigth*0.3)) and (BorderWidth < Int(Heigth*0.5)) – ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ исчСзаСт. Π’ΠΎΠ³Π΄Π° Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½? ΠŸΡ€ΠΈ BorderWidth = Int(Heigth*0.5) – ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сообщСниС – "Error. Division by zero". ΠŸΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… значСниях BorderWidth – вмСсто ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° "Π΄Ρ‹Ρ€Π°".

К соТалСнию, ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² исходникС.

C ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, VS.

DLL 

Π Π°Π·Π½ΠΎΠ΅ 

Бинхронизация DLL с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…

Delphi 2 

Π’Π΅ΠΌΠ°: Бинхронизация DLL с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…

Π’ Π΄Π°Π½Π½ΠΎΠΌ совСтС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Object Pascal динамичСски, Π½Π° Π»Π΅Ρ‚Ρƒ, ΡΠ²ΡΠ·Π°Ρ‚ΡŒ DLL с Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄Π°ΡŽΡ‰Π΅ΠΉ программисту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Modularize-характСристикой. (НСзависимо ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния, ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅)

ВСхнология динамичСской Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ DLL ΠΊ EXE ΠΏΠΎΠ»Π΅Π·Π½Π° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях. НапримСр, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ для создания 'plug-in' ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (A/R, A/P, General Ledger ΠΈ Π΄Ρ€.) ΠΈΠ»ΠΈ Point of Sale package с Current Stock, FIFO/LIFO Ordering, Vendor Tracking, ΠΈ ΠΏΡ€. ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Данная ΡΡ‚Π°Ρ‚ΡŒΡ Π΄Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с СдинствСнной dll, 'Editdll.dll', ΠΈ прСдоставит Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Ρ€Π°ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия:

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π·Π½Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TTable, ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DLL, BDE API ΠΈ Π·Π½Π°Π½ΠΈΠ΅ BDE hCursor. *WIN API для динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π»ΡŽΠ±Ρ‹Ρ… DLL.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°, EditForm, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ COUNTRY, располоТСнной Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ DBDEMO. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ 'Edit' ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ Π½Π° записи (строкС), Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, располоТСнноС Π² 'EditDll.dll' ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΡ‚Π½ΠΎΡΡΡ‰ΡƒΡŽΡΡ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ записи. Π’ этой "Ρ‚ΠΎΡ‡ΠΊΠ΅" DLL синхронизируСт сСбя Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈ сСссиСй), Π½ΠΎ ΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ записью. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ измСняСт Ρ‚Π΅ ΠΆΠ΅ самыС Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²ΠΈΠ΄ΠΈΡ‚ Π² EditForm! Ну Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ углубимся Π² ΠΊΠΎΠ΄ дСмонстрационного прилоТСния. (Для удобства просто скопируйтС ΠΎΡ‚ΡΡŽΠ΄Π° эти Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅)

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

{ MAINDB.DPR }

program maindb;

uses Forms, mainform in 'mainform.pas' {dbmainform};

{$R *.RES}

begin

 Application.Initialize;

 Application.CreateForm(TDBMainForm, DBMainForm);

 Application.Run;

end.


{ MAINFORM.PAS }

unit mainform;

interface

uses SysUtils, Windows, Messages, Classes, Graphics, Controls, StdCtrls, Forms, DBCtrls, DB, DBGrids, DBTables, Grids, ExtCtrls, BDE;

type TDBMainForm = class(TForm)

 Table1Name: TStringField;

 Table1Capital: TStringField;

 Table1Continent: TStringField;

 Table1Area: TFloatField;

 Table1Population: TFloatField;

 DBGrid1: TDBGrid;

 DBNavigator: TDBNavigator;

 Panel1: TPanel;

 DataSource1: TDataSource;

 Panel2: TPanel;

 Table1: TTable;

 EditButton: TButton;

 procedure FormCreate(Sender: TObject);

 procedure EditButtonClick(Sender: TObject);

 procedure DBGrid1DblClick(Sender: TObject);

private

 { private declarations }

public

 { public declarations }

end;


var DBMainForm: TDBMainForm;


implementation


{$R *.DFM}


procedure TDBMainForm.FormCreate(Sender: TObject);

begin

Table1.Open;

end;


// {ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•: DBHandle - дСскриптор Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… & DSHandle - курсор

//  рассматриваСмой записи. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Ρ†Π΅Π»ΡŒ Π²

//  динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ DLL Π²ΠΎ врСмя выполнСния прилоТСния,

//  ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ API LoadLibrary, GetProcAddress ΠΈ

//  FreeLibrary вмСсто ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈ

//  запускС. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования API для динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: }

// Type

//  {Для GetProcAddress}