(7) Developer

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View (7) Developer as PDF for free.

More details

  • Words: 21,105
  • Pages: 258
!

ᑕϡ඀ёฟ൴͘Ί

Delphi 8 for .NET

!

COPYRIGHT © 1984, 2004 Borland Software Corporation. ඾үᝋᛳ Borland ̳ΦٙѣĎᖙᄦυտĄ ٙѣ Inprise ‫ ׶‬Borland ۞ய‫ݡ‬ЩჍ࠰ߏ Borland Software Corporation.̝થᇾٕොΊથᇾĄ ώ३͔ٙ̚ϡ‫׎‬ι̳Φய‫ݡ‬ЩჍĎ‫׎‬થᇾᛳ‫̳ྍٺ‬Φٙѣ。 ώ͘Ίܼдέ៉Оᄦ !

ϫᐂ! ϫ ᐂ ֹϡᖙᛌ̍‫׍‬...............................................1-15 ኎ߐ Assembly ჟី.............................1-15 ᖙᛌგநࣶ ............................................1-16 ᖙᛌᐼхऱ ............................................1-16 ᖙᛌ̍‫׍‬யϠ۞ᑫ९ ............................1-16 ੵ᏾ᑕϡ඀ё...............................................1-17 ੠ᖸેҖ඀ёቅ(Stepping Through Code) .....................................................1-17 ෞณ(Evaluate)/࣒Լ(Modify)............1-18 ̚ᕝᕇ(Breakpoints) ............................1-18 ᑭෛ(Watches) ......................................1-18 ੵ᏾ෛ඄(Debug Windows)................1-18 ᅈბੵ᏾(Remote Debugging) ...........1-19 ̶൴ᑕϡ඀ё...............................................1-19 ̶൴ᖎಏ۞ᑕϡ඀ё(Simple Application Deployment).........................................1-20 ΒӣВֳ Assemblies ۞ᑕϡ඀ё (Applications that Include Shared Assemblies)...........................................1-20 щ྅඀ё(Installation Programs) .......1-21 ̶൴ COM Interop ᑕϡ඀ё(COM Interop Application Deployment) .....1-21 ̶൴ Windows ܑಏᑕϡ඀ё(Windows Forms Application Deployment).......1-22 ̶൴ ASP.NET ᑕϡ඀ё(ASP.NET Application Deployment)...................1-22 ̶൴ ADO.NET ᑕϡ඀ё(ADO.NET Application Deployment)...................1-22 Ξ̶൴۞ Delphi 8 for .NET ᑫ९ (Redistributing Delphi 8 for .NET Files).......................................................1-23 ొཌ.NET ߛ॰(Redistributing the .NET Framework) ..........................................1-24 ొཌௐ 3 ͞హវ(Redistributing Third Party Software).....................................1-24

ௐ1ౢ

გநฟ൴Ϡ‫׻‬ฉഇ

1-1

გநฟ൴Ϡ‫׻‬ฉഇໄኢ.................................1-2 ࣧؕ඀ё඀ёቅፋЪ ..............................1-3 ֹϡ۰̬ࢬనࢍ ......................................1-3 ͽෛᛇ̼͞ёӔன඀ёቅ ......................1-4 ฟ൴ĂበᛌĂેҖ‫ੵ׶‬᏾ ......................1-4 ֹϡࣧؕ඀ёଠ‫ט‬.........................................1-4 Delphi 8 for .NET тңᄃࣧؕ඀ё ଠ‫ט‬ր௚̢જ ..........................................1-5 ૄᖂࣧؕ඀ёଠ‫ ه៍ט‬..........................1-6 ௡ၗࣧؕ඀ёଠ‫ט‬ր௚ ..........................1-7 ࣧؕ඀ёଠ‫ט‬ր௚ᐼхऱ۞ૄᖂۢᙊ ..1-7 ֹϡ૞९ ..................................................1-8 ֹϡᑫ९ ..................................................1-9 ТՎᑫ९ ..................................................1-9 నࢍֹϡ۰̬ࢬ.............................................1-9 ֹϡనࢍछ ............................................1-10 న‫ؠ‬నࢍछᏴี ....................................1-10 ͽෛᛇ̼͞ёӔன඀ёቅᖎ̬...................1-11 ͽෛᛇ̼͞ёӔன඀ёቅͽ̈́ UML ᐖၗߛၹဦ ............................................1-11 ᒢྋࣧؕ඀ёቅ‫ͽ׶‬ෛᛇ̼͞ёӔன ඀ёቅ̝ม۞ᙯܼ ................................1-12 ࢵᆸ௡ᖐĈ૞९ĂUML PackagesĂͽ ̈́.NET ‫׻‬Щ۩ม ...........................1-12 ᚶٚ‫ࢬ̬׶‬၁ү .............................1-12 ᙯా(Associations) ........................1-13 ᙷҾјࣶĈᛳّĂ͞‫ڱ‬ĂপّĂͽ ̈́૰‫ݭې‬ၗ .....................................1-13 በᛌĂ‫ޙ‬ϲĂ‫ે׶‬Җᑕϡ඀ё...................1-13 በᛌጡᏴี ............................................1-14 በᛌጡ‫ې‬ၗ‫(ੈྤ׶‬Compiler Status and Information)..................................1-14 በᛌጡ᏾ᄱ ............................................1-15

i

ௐ2ౢ

Web ܑಏ̮І .........................................3-3 Web Forms Page..............................3-3 HTML ̮৵ͽ̈́Ҩ‫ڇ‬ბଠ‫ ีט‬......3-3 Code-behind ᑫ९ ..........................3-4 Web ܑಏྤफ़х‫ פ‬................................3-4 Web Services...........................................3-4 ASP.NET ‫׻‬Щ۩ม ...............................3-4 Borland DB Web ଠ‫ ีט‬......................3-5 DB Web ଠ‫ߛีט‬ၹ........................3-5 ྤफ़ຏ̮ۢІ۞ᐹᕇ .......................3-5 ͚೯۞ྤफ़х‫̮פ‬І .......................3-6 DB Web ଠ‫׻ีט‬Щ۩ม...............3-7 ͹ଂᙯܼ۞҂ณ ...............................3-7 ֹϡ DB Web ଠ‫ ۞ีט‬ASP.NET ᑕϡ඀ё۞̶൴ ...............................3-7 ֹϡ DataViews.....................................3-7 ેҖॡഇপّ ...................................3-7 ͹ଂᙯܼ(Master-detail relationships) ...................................3-8 ClearSessionChanges ͞‫ڱ‬............3-8 ࢨ‫ ט‬...................................................3-8 WebDataLink ̬ࢬ ...............................3-9 IDBWebDataLink............................3-9 IDBWebColumnLink: IDBWebDataLink............................3-9 IDBWebLookupColumnLink: IDBWebColumnLink......................3-9 ฟ൴ ASP.NET ඀ё ....................................3-10 ASP.NET ͹඀ё ..................................3-10 ฟ൴ ASP.NET ֹϡ۞ Assembly.......3-20 ၁ү͹඀ё۞ HandleInputData ͞‫ ڱ‬.3-24

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё 2-1 Delphi 8 for .NET ۞ UML Αਕ .................2-1 ૄᖂ UML ៍‫ ه‬.............................................2-2 UML ᙷҾဦ...........................................2-2 ‫ۏ‬Іࢨ‫ט‬ᄬ֏(OCL) ...............................2-3 ECO ߛ॰۞ᖎ̬ ...........................................2-4 ECO ߛ॰۞ᖎ̬.....................................2-4 నࢍॡഇ͚೯Αਕ ...........................2-4 ેҖॡഇ͚೯Αਕ ...........................2-5 ECO ۩ม................................................2-5 Borland.ECO ‫׻‬Щ۩ม.........................2-5 Borland.Eco.Services ......................2-6 Borland.Eco.Handles.............................2-7 Borland.Eco.ObjectRepresentation......2-7 Borland.Eco.Subscription .....................2-9 Borland.Eco.Persistence ......................2-10 Borland.Eco.UmlRt..............................2-11 ፋЪ۞ሀ‫׍̍ݭ‬ᖎ̬...................................2-11 Delphi 8 for .NET ۞ፋЪ̍‫׍‬............2-12 ECO ૞९‫׶‬ჟី ...........................2-12 Model View ෛ඄...........................2-12 ᙷҾဦ .............................................2-13 ฟ൴ ECO ᑕϡ඀ё ....................................2-14 ECO ᑕϡ඀ё۞ฟ൴Վូ‫ߛ׶‬ၹ.......2-14 ‫ޙ‬ϲ ECO ᑕϡ඀ё..............................2-16 ‫ޙ‬ϲ/࣒Լᅳાሀ‫ݭ‬..............................2-18 న‫ ؠ‬Persistent Mapping.....................2-20 ॲፂనࢍሀ‫ޙݭ‬ϲྤफ़ऱჩࢋ ............2-25 న‫ ؠ‬ECO ̮І/OCL...........................2-26 నࢍ GUI................................................2-31 ᇤᆷᑕϡ඀ё ........................................2-32 ેҖ ECO ᑕϡ඀ё..............................2-33 ΐˢ Seminar ‫ۏ‬І۞ాඕ ...................2-34 ೈᒖёฟ൴ ECO ᑕϡ඀ё..................2-36 ࠎᙷҾΐˢ͞‫ ڱ‬....................................2-43 ̶൴ ECO ᑕϡ඀ё ....................................2-45

ௐ3ౢ ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

ௐ4ౢ ֹϡ ASP.NET ฟ൴ Web Service

4-1

ASP.NET Web Service ໄ៍ ........................4-1 Web Service ߛၹ ..........................................4-3 Web Service ۞υࢋ୧І ..............................4-3 Web Service ۞ֹϡಞഀ ..............................4-4 ASP.NET Web Services ࠹ᙯᑫ९..............4-6 Web Services ఼ੈ‫ુؠם‬ᝑ .......................4-6 Web Services ఼ੈ‫ુؠם‬ᝑ.................4-7 ็Ꮾᆸ(Transport Layer).......................4-8

3-1

ASP.NET ໄ៍ ...............................................3-2 ASP.NET ߛၹ .......................................3-3

ii

XML ੈि ................................................4-8 WSDL ᆸ .................................................4-8 ຩವ‫ڇ‬ચ(Service Discovery) ................4-9 ASP.NET Web Services ۞͚೯...................4-9 ASP.NET Web Services ϡ͗ბ͚೯..4-10 Windows ܑಏ vs. ASP.NET Web ܑಏ .................................................4-10 Add Web Reference ......................4-11 ASP.NET Web Services Ҩ‫ڇ‬ბ͚೯..4-11 ASP.NET Web Services ‫׻‬Щ۩ม.....4-12 ฟ൴ ASP.NET Web Service ᑕϡ඀ё .....4-12 ֹϡ ASP.NET ฟ൴ Web Service Ҩ‫ڇ‬ბᑕϡ඀ё ....................................4-12 ASP.NET Ҩ‫ڇ‬ბ Web Service ᑕϡ඀ё .........................................4-12 ֹϡ ASP.NET Web Service ۞ Web ܑಏϡ͗ბᑕϡ඀ё .....................4-25

͚೯۞ྤफ़ऱ ..........................................6-8 BDP.NET ྤफ़‫ݭ‬ၗ ...............................6-9 BDP.NET ̬ࢬ .......................................6-9 BDP.NET ྤफ़‫ݭ‬ၗ......................................6-9 BDP.NET ‫ ׶‬.NET ߛ॰....................6-10 ྤफ़‫ݭ‬ၗ ................................................6-10 DB2.........................................................6-10 Interbase................................................6-11 MS SQL ‫ ׶‬MSDE ..............................6-11 Oracle ....................................................6-12 BDP.NET ̮Іనࢍछ................................6-13 ̮Іనࢍछ̝ม۞ᙯܼ(Component Designer Relationships) ......................6-14 ాඕበᏭጡ(Connection Editor) .........6-15 ‫͛΄׻‬фበᏭጡ(Command Text Editor)....................................................6-15 யϠྤफ़ะ(Generate DataSets) .........6-15 ௡ၗ Data Adapter(Configure Data Adapter) ................................................6-16 ྤफ़ᕱᜓछ(Data Explorer).................6-16 Delphi 8 for .NET ۞ྤफ़ऱԫఙ..............6-16 ֹϡ dbExpress.NET ฟ൴.NET ᑕϡ ඀ё ........................................................6-17 ֹϡ IBX.NET ฟ൴.NET ᑕϡ඀ё ...6-17 ֹϡ DataSnap .NET Client (DCOM) ฟ ൴.NET ᑕϡ඀ё..................................6-17 ֹϡ BDE.NET ฟ൴.NET ᑕϡ඀ё...6-18 ฟֹؕϡ InterBase Express.......................6-18 IBX ̮І................................................6-18 IBDatabase .....................................6-19 IBTransaction.................................6-19 IBX ྤफ़ะ̮І.............................6-20 IBTable............................................6-20 IBQuery ..........................................6-21 IBDataSet........................................6-21 IBStoredProc ..................................6-22 IBSQL..............................................6-22 IBUpdateSQL.................................6-23 IBSQLMonitor ...............................6-23 IBDatabaseInfo ..............................6-23 IBEvents..........................................6-24 InterBase გந̮І..............................6-24 IBConfigService.............................6-25

ௐ5ౢ ֹϡ Windows ܑಏฟ൴ෛ඄ᑕϡ඀ё 5-1 Windows ܑಏ۞ໄ៍..................................5-2 Windows ܑಏߛၹ ...............................5-2 Windows ܑಏ .......................................5-3 Windows ܑಏ̮І ...............................5-3 Windows ܑಏྤफ़х‫ פ‬................5-3 Windows ܑಏ‫׻‬Щ۩ม ................5-3

ௐ6ౢ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё 6-1 ADO.NET ໄ៍ ............................................6-2 ADO.NET ߛၹ......................................6-3 ྤफ़ֽ໚(Data Source) ..........................6-3 ྤफ़೩ֻ۰ĞData Providersğ............6-4 ྤफ़ะ(DataSet)......................................6-4 ADO.NET ֹϡ۰̬ࢬ..........................6-5 Web ܑಏ .........................................6-5 Windows ܑಏ ................................6-5 BDP.NET ‫׻‬Щ۩ม ...............................6-6 Borland Data Providers for Microsoft .NET....6-6 Data Provider ߛၹ ...............................6-7 BDP.NET ᐹᕇ .......................................6-7 BDP.NET ‫ ׶‬ADO.NET ̮І ............6-8

iii

IBBackupService............................6-25 IBRestoreService............................6-25 IBValidationService ......................6-25 IBStatisticalService ........................6-26 IBLogService ..................................6-26 IBSecurityService ..........................6-26 IBLicensingService........................6-26 IBServerProperties ........................6-26 IBInstall...........................................6-26 IBUnInstall .....................................6-26 ฟ൴ ADO.NET ᑕϡ඀ё ..........................6-26

Reflection..........................................8-3 Global Assembly Cache .................8-4 ૻ‫ݭ‬ЩჍ(Strong Names)................8-5 Runtime Callable Wrappers ͽ̈́ COM Callable Wrappers................8-5 ͹ࢋ Interop Assembly...................8-5 д.NET ߛ॰ SDK ̚۞ COM Interop ̍‫ ׍‬..........................................................8-6 Ꮾˢ‫׶‬Ꮾ΍‫ݭ‬ၗ‫ב‬ёऱ(Importing and Exporting Type Libraries) ......8-6 Ꮾˢ ActiveX ଠ‫בีט‬ёऱ .........8-7 யϠૻ‫ݭ‬ЩჍ ...................................8-7 ̶൴.NET ̮І‫ ז‬Global Assembly Cache ̚ ...........................................8-7 дፋЪ൴णᒖဩֹ̚ϡ COM Interop Assemblies ..............................................8-8 ‫ݭ‬ၗ‫ב‬ёऱ‫ ׶‬Interop Assemblies 8-8 Ꮾˢ ActiveX ଠ‫ ีט‬......................8-9 Interop Assemblies ‫׶‬૞९გநࣶ8-9 ᖣϤ Delphi 8 for .NET ֹϡ Platform Invoke...........................................................8-10 ‫ײ‬Ψ unmanaged ‫ב‬ё .........................8-10 ྤफ़‫ݭ‬ၗ(Data Types)...................8-11 ੼ඈԫఙ(Advanced Techniques)8-13 পҾ۞९ּ(Special Cases) ...........8-13 ඕၹĞStructuresğ ..............................8-13 ੼ඈ͹ᗟ(Advanced topics) .........8-16 পҾ۞ଐԛ(Special cases) ............8-16 аΨ‫ב‬ё(Callback Functions)............8-17 ྤफ़‫ݭ‬ၗ(Data types)....................8-17 পҾ۞ଐԛ(Special cases) ............8-17 ็ᅍ‫ۏ‬Іણ҂(Passing Object References)............................................8-18 ྤफ़‫ݭ‬ၗ(Data types)....................8-18 ੼ඈԫఙ(Advanced techniques) 8-19 ֹϡ COM ̬ࢬ(Using COM Interfaces)..............................................8-19 ྤफ़‫ݭ‬ၗ(Data types)....................8-20 ੼ඈԫఙ(Advanced techniques) 8-20 পҾ۞ଐԛ(Special cases) ............8-21 ฟ൴.NET ‫ײ‬Ψ Win32 ᑕϡ඀ё ........8-22 ฟ൴ Win32 DLL............................8-22

ௐ7ౢ

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-1

VCL.NET ໄ៍ .............................................7-2 ̦ᆃߏ VCLĉ .........................................7-3 VCL.NET ‫ ׶‬.NET ߛ॰̝ม۞ᙯܼ..7-4 VCL.NET ̮І.......................................7-5 ෛᛇ̼̮І .......................................7-5 ‫ܧ‬ෛᛇ̼̮І ...................................7-6 ᙷҾ ...................................................7-6 VCL ܑಏ .........................................7-6 Windows ܑಏ ................................7-7 Web ܑಏ .........................................7-7 ྤफ़ऱ೩ֻ۰ ...................................7-7 Object Pascal ....................................7-7 Borland.VCL ‫׻‬Щ۩ม ..................7-7 ொങ Delphi ᑕϡ඀ё‫ ז‬Delphi 8 for .NET ............................................7-8 д VCL.NET ᑕϡ඀ё̚๗ˢ.NET ̮І ...................................................7-8 ᇤᆷ VCL.NET ᑕϡ඀ё .............................7-9 ֹϡ dbExpress ฟ൴ྤफ़ऱᑕϡ඀ё..7-9 ֹϡ.NET ߛ॰‫ ׶‬VCL.NET................7-16

ௐ8ౢ

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё 8-1 д Managed ᑕϡ඀ёֹ̚ϡ COM Interop ...8-2 COM Interop ໄኢ .................................8-2 COM Interop ԫఙ .................................8-3 Metadata...........................................8-3 ‫މ‬ᄦ̼ᛳّ(Custom Attributes)....8-3

iv

ௐ9ౢ

ฟ൴.NET ᑕϡ඀ё .......................8-26 ฟ൴ Win32 ‫ײ‬Ψ.NET ᑕϡ඀ё ........8-31 ฟ൴.NET Assembly......................8-32 ฟ൴ Windows ᑕϡ඀ё ..............8-33

ֹϡ Delphi 8 for .NET ฟ൴ಡܑ

9-1

д Delphi 8 for .NET ֹ̚ϡ Rave Reports.....9-1 д Delphi 8 for .NET ̚‫ޙ‬ϲາ۞ಡܑ.......9-2 ֹϡ Rave Reports ActiveX ̮І ...............9-2

v

vi

გநฟ൴Ϡ‫׻‬ฉഇ ᑕϡ඀ёฟ൴Ϡ‫׻‬ฉഇߏΒӣ˞నࢍĂฟ൴ĂീྏĂੵ᏾‫ొ׶‬ཌᑕϡ඀ё۞ ͅᖬّฟ൴߹඀ĄDelphi 8 for .NET ೩ֻ˞ૻ̂۞̍‫ֽ͚׍‬೯఺࣎ͅᖬّฟ ൴߹඀Ă‫̚׎‬Βӣ˞ፋЪ۞ࣧؕ඀ёଠ‫׍̍ט‬Ăܑಏనࢍ̍‫׍‬ĂDelphi 8 for .NET በᛌጡĂፋЪ۞ੵ᏾ᒖဩĂͽ̈́щ྅‫ొ׶‬ཌ̍‫׍‬Ą дώౢ̚૟੅ኢ˭ࢬ۞͹ᗟĈ y

გநฟ൴Ϡ‫׻‬ฉഇໄኢ ̬௜გநฟ൴Ϡ‫׻‬ฉഇ۞ᖎரՎូĄ

y

ֹϡࣧؕ඀ёଠ‫׍̍ט‬ ੅ኢ˞ࣧؕ඀ёଠ‫̍ט‬ү۞ໄ៍̬௜Ăͽ̈́ Delphi 8 for .NET ۞ࣧؕ඀ ёଠ‫ט‬ΑਕĄ

y

నࢍֹϡ۰̬ࢬ ̬௜˞тңֹϡ Delphi 8 for .NET నࢍֹϡ۰̬ࢬĄ

y

ֹϡෛᛇ̼͞ёӔன඀ёቅ

გநฟ൴Ϡ‫׻‬ฉഇ

1-1

ᖎ̬ͽෛᛇ̼͞ёӔன඀ёቅ۞៍‫ه‬Ă֭ͷྋᛖࣧؕ඀ёͽ̈́ࢉϠᙷҾ ဦ̝ม۞ᙯܼĄ y

በᛌĂ‫ޙ‬ϲĂ‫ે׶‬Җᑕϡ඀ё ̬௜˞тңдፋЪ൴णᒖဩ̚በᛌĂ‫ޙ‬ϲĂͽ̈́ેҖᑕϡ඀ё۞៍‫ه‬Ą

y

ֹϡᖙᛌ̍‫׍‬ ̬௜˞ Delphi 8 for .NET ̚೩ֻ۞ᖙᛌ̍‫׍‬Ą

y

ੵ᏾ᑕϡ඀ё ̬௜˞˘ਠੵ᏾ྤੈͽ̈́ Delphi 8 for .NET ̚೩ֻ۞ੵ᏾̍‫׍‬Ą

y

ొཌᑕϡ඀ё ̬௜˞ొཌ.NET ᑕϡ඀ё۞ྤੈĄ

გநฟ൴Ϡ‫׻‬ฉഇໄኢ ώ ̈ ༼ ୃ ࢗ ۞ ฟ ൴ ฉ ഇ ߏ ᑕ ϡ ඀ ё Ϡ ‫ ׻‬ฉ ഇ გ ந (Application Lifecycle Management ĂALM)۞̄ะЪĄฟ൴ฉഇ͹ࢋΒӣ˞၁үͽ̈́ଠ‫ט‬၁ᅫฟ ൴̍ү۞ฉഇ߿જĄDelphi 8 for .NET ೩ֻ˞̍‫ߛ׍‬॰ֽᑒӄଋგந‫ે׶‬Җ ٙѣଋซҖ۞ฟ൴ᅮՐ̍үĄ ˭ࢬ੅ኢ۞͹ᗟΒӣ˞Ĉ

1-2

y

ࣧؕ඀ё඀ёቅፋЪĄ

y

ֹϡ۰̬ࢬనࢍĄ

y

ͽෛᛇ̼͞ёӔன඀ёቅĄ

y

ฟ൴૞९ĂበᛌĂͽ̈́ੵ᏾۞ਕ˧Ą

ᑕϡ඀ёฟ൴͘Ί

ࣧؕ඀ё඀ёቅፋЪ Delphi 8 for .NET ೩ֻ˞ࣧؕ඀ёଠ‫ט‬ր௚۞ፋЪਕ˧Ă఺ֱࣧؕ඀ёଠ‫ט‬ ր௚Β߁˞ orland StarTeamĂ Rational ClearCaseĂ CVSĂ ͽ̈́ Microsoft Visual SourceSafeĄ఺࣎ፋЪਕ˧̯ధଋֹϡ˭ࢬ۞͞‫ֽڱ‬х‫פ‬ଋ۞ࣧؕ඀ ёĈ y

д፾ϲ۞ેҖ඀Ԕ̚ୁજࣧؕ඀ёଠ‫ט‬ր௚

y

д Delphi 8 for .NET ፋЪ൴णᒖဩֹ̚ϡࣧؕ඀ёଠ‫ט‬ր௚ֽგந૞९

т‫ڍ‬ଋᅮࢋֹϡࣧؕ඀ёଠ‫ט‬ր௚̚প‫۞ؠ‬ΑਕĂ֤ᆃଋΞͽд፾ϲ۞ેҖ ඀Ԕ̚ୁજࣧؕ඀ёଠ‫ט‬ր௚Ăтѩ˘ֽࣧؕ඀ёଠ‫ט‬ր௚‫ົ̙ܮ‬ፋЪд Delphi 8 for .NET ፋЪ൴णᒖဩ̚Ąࣧؕ඀ёଠ‫ט‬ᑕϡ඀ёົેҖд˘࣎፾ ϲ۞ Window ̚Ą д̂кᇴ۞ଐԛ˭Ăଋߏд Delphi 8 for .NET ፋЪ൴णᒖဩ̚გந૞९Ą Delphi 8 for .NET ೩ֻ۞ፋЪਕ˧̯ధଋֹϡ check-inĂ check-outĂ updateĂcommit ඈΑਕֽგநଋ۞ࣧؕ඀ёĂ҃൑ᅮֹϡᖎࢩ۞ֹϡ۰̬ ࢬֽેҖ఺ֱ̍үĄDelphi 8 for .NET ೩ֻ۞ፋЪਕ˧͚೯‫˞ז‬ଋֹϡ۞প ‫ؕࣧ۞ؠ‬඀ёଠ‫ט‬ր௚೩ֻ۞кֹϡ۰ΑਕĄ

ֹϡ۰̬ࢬనࢍ Delphi 8 for .NET ೩ ֻ ˞ ᖳ ಱ ۞ ᒖ ဩ ֽ న ࢍ .NET ֹ ϡ ۰ ̬ ࢬ Ą ੵ ˞ Windows ܑಏనࢍछΞͽֹϡ˘௡Ԇፋ۞ෛᛇ̼̮І̝γĂፋЪ൴णᒖဩ˵ ග ̟ ଋ ‫ޙ‬ϲ ASP.NET Web ܑ ಏ ۞ ˘ ௡ Web ଠ ‫׍ ̍ ׶ ี ט‬ĄDelphi 8 for .NET ˵Βӣ˞ VCL.NET ܑಏనࢍ̍‫׍‬Ă఺࣎Αਕ̯ధଋֹϡ VCL ̮І ‫ޙ‬ϲ.NET ᑕϡ඀ёĄፋЪ൴णᒖဩ̚ᇾ໤۞నࢍछ೩ֻ˞˘௡၆ᆅ۞̍‫׍‬Ă фԛ̍‫׍‬Ăͽ̈́‫ޙ‬ϲЧ჌̙Т۞ᑕϡ඀ё۞ෛᛇ̼̮ІĂ఺ֱ‫ݭ‬ၗ۞ᑕϡ඀ ёΒӣ˞ MDI ‫ ׶‬SDI ᑕϡ඀ёĂࢱѨ၆ྖ஼Ăͽ̈́ྤफ़ຏۢᑕϡ඀ёĄ

გநฟ൴Ϡ‫׻‬ฉഇ

1-3

ͽෛᛇ̼͞ёӔன඀ёቅ Delphi 8 for .NET ۞ͽෛᛇ̼͞ёӔன඀ёቅΑਕ೩ֻ˞ͽෛᛇ̼ဦԛ۞፟ ‫ֽט‬ፋந‫ੵ׶‬᏾ଋ۞ᙷҾనࢍߛၹĄ༊ଋྶˢଋ۞૞९‫׶‬඀ёቅᑫ९ॡĂଋ Ξͽֹϡ Model View ෛ඄ͽෛᛇ̼ᆸѨဦֽӔனଋ۞ᙷҾٙѣ۞‫ۏ‬ІĂͽ ̈́ͽ UML ሀ‫ֽݭ‬Ӕனଋ۞ᑕϡ඀ё‫ۏ‬ІĄ఺࣎ΑਕΞͽᑒӄଋͽෛᛇ̼۞ ͞ёֽ΃ܑଋ۞ᑕϡ඀ё̚‫ۏ‬І̝ม۞ᙯܼĂ֭ͷਕૉᑒӄଋซҖฟ൴‫׶‬၁ ү۞̍үĄ

ฟ൴ĂበᛌĂેҖ‫ੵ׶‬᏾ Delphi 8 for .NET ೩ֻ˞Ԇፋ۞ฟ൴Ăበᛌͽ̈́ፋЪёੵ᏾ր௚۞ΑਕĄͽ ෛᛇ̼۞͞ёֽฟ൴Ăበᛌ‫ે׶‬Җଋ۞ᑕϡ඀ёឰፋ࣎ฟ൴߹඀ͧͽ݈Հट ‫ٽ‬Ą૞९Ăͽ̈́૞९Βӣ۞̄૞९‫׶‬ٙѣ۞ࣧؕ඀ёᑫ९ౌਕૉ˘੓በᛌĂ ༊൒ଋ˵ΞͽበᛌՏ˘࣎፾ϲ۞૞९Ą ፋЪ۞ੵ᏾ጡ̯ధଋన‫៍ؠ‬၅ᕇ‫̚׶‬ᕝᕇĂ֭ͷਕૉֹϡྯ࿅੠ᖸેҖٕߏ ซˢ੠ᖸેҖՏ˘Җ඀ёቅ۞ΑਕĄ˘௡ੵ᏾ෛ඄೩ֻ˞តᇴĂેҖ඀ԔĂ ͽ̈́ેҖჰ۞ྎ௟ྤੈĂ̯ధଋஎˢ੠ᖸଋ۞඀ёቅ֭ͷ࣒நЇң۞᏾ᄱĄ Ϥ‫ٺ‬ፋ࣎߹඀ౌΞͽֹϡΑਕܑٕߏଥशֽᜭજĂଋΞͽ‫މ‬ᄦ̼ฟ൴ᒖဩࠎ ଋ࣎ˠ۞ࢲॾ֭ͷซҖஎˢ۞ፋЪĂឰፋ࣎ฟ൴Ϡ‫׻‬ฉഇՀѣࠎड़தĄ

ֹϡࣧؕ඀ёଠ‫ט‬ Borland ۞ Delphi 8 for .NET ೩ֻ˞‫׶‬ᇴ࣎ࣧؕ඀ёଠ‫ט‬ր௚ፋЪ۞ਕ ˧Ă̯ధଋдፋЪ൴णᒖဩ̚ેҖ̂ొЊ۞ࣧؕ඀ёଠ‫̍ט‬үĄੵѩ̝γĂ ଋ˵Ξͽֹϡ Microsoft SCC API ֽࠎፋЪ൴णᒖဩ̙͚೯۞ࣧؕ඀ёଠ‫ט‬ ր௚ᇤᆷ࠹ट̬ࢬĄ Delphi 8 for .NET ฟ൴ᒖဩ͚೯˞˭ࢬ۞ࣧؕ඀ё඀ёቅଠ‫ט‬ր௚Ĉ y

1-4

Borland StarTeam ‫ ׶‬tStarTeam Microsoft SCC ፋЪ

ᑕϡ඀ёฟ൴͘Ί

y

͚೯ SCC API ۞ Concurrent Versions System (CVS) GUI ၁ү‫ۍ‬ώ

y

Rational ClearCase

y

Microsoft Visual SourceSafe

Delphi 8 for .NET тңᄃࣧؕ඀ёଠ‫ט‬ր௚̢જ

ଋ۞ࣧؕ඀ё඀ёቅଠ‫ט‬ր௚఼૱Βӣ˞Ҩ‫ڇ‬ბ‫׶‬ϡ͗ბ̮ІĄдҨ‫ڇ‬ბĂ ࣧؕ඀ё඀ёቅଠ‫ט‬ր௚ົჯ᜕˘࣎ྤफ़ऱֽܲхଋ۞૞९ᑫ९ͽ̈́ଋ၆఺ ֱᑫ९ซҖ۞ЇңளજĄдଋ۞ώгϡ͗ბ̚Ăଋֹϡࣧؕ඀ёଠ‫ט‬ϡ͗ბ హវֽგந‫׶‬х‫פ‬ᐼхдҨ‫ڇ‬ბ۞૞९‫׶‬ᑫ९Ăჯ᜕‫׶‬ቊ८ଋซҖ۞ளજĂ ֭ͷ೩ֻଋ኏ࡎგந۞ਕ˧Ąд Delphi 8 for .NET ̚Ăࣧؕ඀ёଠ‫ט‬გநࣶ ߏፋЪ൴णᒖဩ۞˘ొЊĂ֭ͷ̯ధଋాඕᅈბҨ‫ڇ‬ጡ̚۞ࣧؕ඀ёଠ‫ีט‬ ր௚Ăଂࣧؕ඀ёଠ‫ีט‬ր௚̚‫פ‬΍૞९ٕߏᐼх૞९Ăͽ̈́ check inĂ check outĂ Ъ‫׀‬Ă‫ྵͧ׶‬ᑫ९Ą

გநฟ൴Ϡ‫׻‬ฉഇ

1-5

Delphi 8 for .NET ֹϡ˞ Microsoft SCC API ֽგந‫ؕࣧ׶‬඀ёଠ‫ט‬ր௚۞ ፋЪ̍үĄଋυืֹϡ೩ֻ SCC API.ፋЪਕ˧۞ࣧؕ඀ёଠ‫ט‬ր௚Ą˘ֱ૞ ९Ăּт StarTeamĂ೩ֻ˞፾ϲщ྅ SCC ፋЪᑕϡ඀ё۞щ྅Ą‫۞΁׎‬ய ‫ݡ‬Ăּт CVSĂ̙֭ۡତ͚೯ SCC APIĂҭߏ˘ֱௐ 3 ͞ϡ͗ბᑕϡ඀ё۞ ቁ೩ֻ˞ϡ͗ბፋЪ CVS ۞ᑕϡ඀ёĄ Їң۞ፋЪౌυื͚೯ MSSCCI 1.1Ą

ૄᖂࣧؕ඀ёଠ‫ه៍ט‬ Տ˘࣎ࣧؕ඀ёଠ‫ט‬ր௚ౌౌΒӣ˞˘ٕ࣎ߏк࣎̚δଠ‫۞ט‬ᐼхऱͽ̈́˘ ֱϡ͗ბĄᐼхऱߏ˘࣎ྤफ़ऱĂ‫̚׎‬Βӣ˞ৌϒ۞ྤफ़ᑫ९ͽ̈́Տ˘࣎ଋ ‫ؠ‬ཌྷ۞૞९۞ߛၹĄ ̂ొЊ۞ࣧؕ඀ёଠ‫ט‬ր௚ౌᏲ໰˘࣎ទᏭ૞९۞៍‫ه‬ĂдទᏭ૞९̚ົԯ ᑫ९ᐼхд˘ٕ࣎ߏк࣎ፘ‫ߛې‬ၹ̝˭Ą˘࣎ࣧؕ඀ёଠ‫ט‬ր௚૞९Ξਕົ Βӣ˘ٕ࣎ߏк࣎ Delphi 8 for .NET ۞૞९Ăͽ̈́‫͛۞΁׎‬І‫̰׶‬टĄѩր ௚˵Ξਕૻֹ̼ϡιҋ̎۞ֹϡ۰រᙋΑਕĂ҃ͷགྷ૱ߏۡତֹϡ‫غ‬ᆸүຽ ր௚೩ֻ۞រᙋΑਕĄ఺ᇹઇ̯ధࣧؕ඀ёଠ‫ט‬ր௚ჯ᜕Տ˘࣎ᑫ९۞ቊ८ ߹඀ԣ໰Ą఺ֱቊ८߹඀ԣ໰఼૱Ⴭࠎ diffsĂͽ‫ܮ‬ઇࠎણ҂̝ϡĄᖣϤΪᐼ хՏ˘࣎ቊ८߹̝ม۞मளĂࣧؕ඀ёଠ‫ט‬ր௚Ξͽдჯ޺౵͌۞ᐼх۩ม ˭੠ᖸٙѣ۞ளજĄ༊ଋຐᑭෛଋ۞ᑫ९۞Ԇፋ̰टĂր௚‫ົܮ‬Ъ‫׀‬Տ˘࣎ ‫ۍ‬ώ۞मள֭ͷ೩ֻଋ౵‫ޢ‬Ԇፋ۞̰टĄд၁ᅫ۞ᐼх̰ट̚Ă఺ֱ‫ۍ‬ώम ளߏᐼхд̙Т۞ᑫ९̚Ăۡ‫ז‬ଋ໤౯ેҖଋ۞Հາ۞ϖ˳Ъ‫׀‬જүĂдѩ ॡଋ‫ܮ‬ΞͽેҖ commit Ъ‫׀‬ளજ۞̍үĄ ఺࣎ฟ൴͞ё̯ధଋ‫۞΁׎׶‬ဥฤјࣶ̍үд˘੓Ă֭ͷТॡдк࣎ĂВֳ ۞૞९̚ᇤᆷ඀ёቅĂ҃൑࿌ᅮፉ͕඀ёቅົ൴Ϡ኏ࡎ۞ଐԛĄࣧؕ඀ёଠ ‫ט‬ր௚౵ૄώ۞Αਕಶߏ᜕ܲଋ̙‫צ‬඀ёቅ኏ࡎͽ̈́ຫεѝഇࣧؕ඀ё۞П ᐍĄ̂ొЊ۞ࣧؕ඀ёଠ‫ט‬ր௚ග̟ଋ̍‫ֽ׍‬გந඀ёቅͽ‫ܮ‬೩ֻ check in/check outĂ኏ࡎ‫ם‬አĂͽ̈́ಡܑ۞ਕ˧Ą൒҃̂ొЊ۞ր௚̙֭೩ֻទ Ꮽ኏ࡎ‫ם‬አٕߏฟ൴გந۞ਕ˧Ăᔵ൒ߙֱய‫ݡ‬Ăּт Rational ClearCaseĂ

1-6

ᑕϡ඀ёฟ൴͘Ί

۞ቁߏ೩ֻ˞‫ޙ‬ϲ‫̍׶‬үཏ௡۞გநਕ˧Ąࢋᒢྋଋֹϡ۞ࣧؕ඀ёଠ‫ט‬ր ௚۞ྎ௟ྤੈĂኛણ҂೩ֻଋࣧؕ඀ёଠ‫ט‬ր௚۞ᇄથ۞࠹ᙯ͛ІĄ ˘ਠֽᄲĂࣧؕ඀ёଠ‫ט‬ր௚Ϊ̯ధଋͧྵ‫׶‬Ъ‫͛׀‬фᑫ९۞ՀາĂ఺Β߁ ˞඀ёቅࣧؕ඀ёͽ̈́‫͛۞΁׎‬І‫ݭ‬ၗĄజ Delphi 8 for .NET ͚೯۞ࣧؕ඀ ёଠ‫ט‬ր௚̯ధଋд‫צ‬გந۞૞९̚Βӣ˟ซҜᑫ९Ăҭߏଋ̙ਕ၆఺჌ᑫ ९ซҖͧྵٕߏЪ‫̍۞׀‬үĄ˘ਠֽᄲĂ༊ଋд૞९̚ொˢ˟ซҜᑫ९ٕߏ Їң‫͛ܧ‬фᑫ९‫ז‬ଋ۞ࣧؕ඀ёଠ‫ט‬ր௚̚ॡĂր௚‫ͽົܮ‬າ۞‫ۍ‬ώᖬᄏᖞ ۞‫ۍ‬ώĄྤ໚ᑫ९ٕߏ‫΁׎‬ҋજயϠ۞˟ซҜᑫ९‫ݭ‬ၗ˵Ξਕజր௚ᖬᄏٕ ߏజ‫ن‬ரĄт‫ڍ‬ଋԓ୕ჯ᜕఺ֱ‫ݭ‬ၗ۞ᑫ९۞̙Т‫ۍ‬ώĂ֤ᆃଋΞਕᅮࢋ҂ ᇋࠎᑫ९‫ޙ‬ϲ˘࣎ˠ̍੠ᖸր௚Ą д Delphi 8 for .NET ̚ĂଋΞͽд Team Αਕܑ̚х‫פ‬Їң͚೯҃ͷщ྅۞ ࣧؕ඀ёଠ‫ט‬ր௚Ą

௡ၗࣧؕ඀ёଠ‫ט‬ր௚ ௡ၗ Delphi 8 for .NET ‫׶‬ଋֹϡ۞ࣧؕ඀ёଠ‫ט‬ր௚̢જߏ‫ܧ‬૱ᖎಏ۞۞ ̍үĄࢵАĂኛщ྅‫׶‬௡ၗࣧؕ඀ёଠ‫ט‬ր௚ώ֗Ąт‫ڍ‬ଋߏ፾ϲ۞ฟ൴ˠ ࣶٕߏд̳̈Φ̍̚үĂ֤ᆃଋΞਕᅮࢋҋ̎ેҖ఺ี̍үĄӎ‫݋‬Ăт‫ڍ‬ଋ ߏд̂‫ݭ‬Ă̶೸ёᒖဩ̍̚үĂ֤ᆃଋ۞ր௚გந۰ٕߏ૞९གྷந̏གྷેҖ ˞఺ี̍үĄ̙გߏ֤჌ଐԛĂдଋྏ඾д Delphi 8 for .NET ፋЪ൴णᒖဩ ֹ̚ϡࣧؕ඀ёଠ‫ ݈̝ט‬ኛણ҂ଋֹϡ۞ࣧؕ඀ёଠ‫ט‬ր௚͛ІֽેҖщ ྅‫׶‬௡ၗ۞̍үĂ֭ͷጯ௫Հкଋֹϡ۞үຽր௚۞ۢᙊĄдଋщ྅‫׶‬௡ၗ ˞ࣧؕ඀ёଠ‫ט‬ր௚̝‫ޢ‬ĂDelphi 8 for .NET ົҋજᑭߤଋ̏གྷщ྅۞ր௚Ą ଋΞͽд Delphi 8 for .NET ̚щ྅‫ֹ׶‬ϡк࣎ؕ඀ёଠ‫ט‬ր௚Ą༊ଋેҖЇ ң‫ؕ׶‬඀ёଠ‫ט‬ր௚࠹ᙯ۞̍үॡĂଋυื൳ᐂଋֹϡ۞ؕ඀ёଠ‫ט‬ր௚Ą

ࣧؕ඀ёଠ‫ט‬ր௚ᐼхऱ۞ૄᖂۢᙊ ࣧؕ඀ёଠ‫ט‬ր௚ߏԯᑫ९‫׶‬मளᑫ९ᐼхдߙ჌ԛё۞ྤफ़ᐼхऱ̚Ąд ߙֱր௚̚Ăּт CVS ٕߏ VSSĂྤफ़ᐼхऱߏͽទᏭ۞ߛၹֽᐼхᑫ९ͽ

გநฟ൴Ϡ‫׻‬ฉഇ

1-7

̈́ଠ‫ט‬ᑫ९ཏ௡Ąд‫۞΁׎‬ր௚̚Ăྤफ़ᐼхऱӈߏপ‫ྤ۞ؠ‬फ़ऱგநր௚Ă ּт InterBaseĂMicrosoft AccessĂ MS SQL ServerĂIBM DB2Ă ٕߏ OracleĄ ྤफ़ᐼхऱ఼૱ߏᐼхдᅈბ۞Ҩ‫ڇ‬ጡ̚Ă఺̯ధкֹ࣎ϡ۰ాඕĂcheck out ᑫ९Ăcheck in ᑫ९Ăͽ̈́ТॡેҖధк‫۞΁׎‬გந̍үĄЯѩଋυื ቁ‫ؠ‬ଋТॡాඕ‫ؕࣧז‬඀ёଠ‫ט‬ր௚Ҩ‫ڇ‬ጡͽ̈́ྤफ़ऱҨ‫ڇ‬ጡĄЯѩੵ˞ϡ ͗ბ۞ࣧؕ඀ёଠ‫ט‬హវ̝γĂኛ‫׶‬ଋ۞შྮĂր௚Ăͽ̈́ྤफ़ऱგநˠࣶ ቁ‫ؠ‬ଋ۞፟ጡ̏གྷщ྅˞υࢋ۞న౯Ăᜭજ඀ё‫ా׶‬ඕహវĄ ߙֱࣧؕ඀ёଠ‫ט‬ր௚̯ధଋ‫ޙ‬ϲώгᐼхऱֽჯ᜕ଋ۞૞९۞ԣ໰ྤੈĄ ᐌ඾ॡม߹ీଋώг૞९۞ԣ໰ྤੈົ‫׶‬ᅈბᐼхऱ̚۞ྤੈхд඾मளĄ ଋΞͽ‫ޙ‬ϲ˘࣎૱ၗ۞߆ඉֽԯଋώг۞ԣ໰ྤੈ‫׶‬ᅈბᐼхऱ̚۞ԣ໰ྤ ੈΐͽЪ‫̈́ͽ׀‬ՀາளજĄд˘࣎̈‫۞ݭ‬ฟ൴ᒖဩ̚ĂଋΞͽщ྅ᐼхऱд ଋ۞ώг፟ጡ֭̚ͷ̶ֳගٙѣ‫΁׎‬ᅮࢋֹϡ۞ֹϡ۰Ą˘ਠֽᄲĂԯ˘࣎ ̶ֳ۞૞९ឰՏ˘࣎ฟ൴јࣶౌጾѣ˘࣎፾ϲ۞ᐼхऱĄт‫ڍ‬Տ˘࣎јࣶౌ ̍ү‫ٺ‬ԆБ፾ϲ۞૞९҃ͷଋຐឰՏ˘࣎૞९ౌдώг‫ؕࣧזצ‬඀ёଠ‫ט‬ր ௚۞გநĂ֤ᆃଋΞਕᅮࢋֹϡ፾ϲ۞ώгᐼхऱĄ൒҃ӈֹߏд఺჌ଐԛ ̚Ăଋ̪൒Ξͽд˘࣎ᅈბ۞۞Ҩ‫ڇ‬ጡ̚‫ޙ‬ϲк࣎ᐼхऱֽેҖะ͚̚೯Ă ౯ЊĂͽ̈́ჯ᜕۞̍үĄ

ֹϡ૞९ ࣧؕ඀ёଠ‫ט‬ր௚Ă‫۞΁׎׶‬ฟ൴ᒖဩ˘ᇹĂ˵ֹϡ૞९៍‫ֽه‬௡ᖐͽ̈́੠ ᖸგந࠹ᙯ۞ཏ௡ᑫ९Ą̙გଋֹϡ̦ᆃࣧؕ඀ёଠ‫ט‬ր௚Ăଋᅮࢋ‫ޙ‬ϲΒ ӣଋ۞ᑫ९‫׶‬ᑫ९Ҝཉྤੈ۞૞९Ąଋ˵д Delphi 8 for .NET ̚‫ޙ‬ϲ૞९֭ ͷ௡ᖐଋ۞ᑕϡ඀ё̚Ч჌̙Т۞ assemblies ‫ؕࣧ׶‬඀ё඀ёቅᑫ९Ą Delphi 8 for .NET ߏԯ૞९ણᇴᐼхд˘࣎૞९ᑫ९̚Ąੵ˞ଋ‫ޙ‬ϲ۞Ч჌ ඀ёቅᑫ९̝γĂଋΞͽԯ૞९ᑫ९ᐼхдଋ۞ࣧؕ඀ёଠ‫ט‬ր௚૞९̚Ą ଋΞͽԓ୕‫׶‬ٙѣဥฤ̚۞ฟ൴ˠ̶ֳࣶଋ۞૞९ᑫ९Ăଋ˵ΞਕឰՏ˘࣎ ฟ൴ˠࣶჯ᜕˘࣎፾ϲ۞૞९ᑫ९Ą̂ొЊ۞ࣧؕ඀ёଠ‫ט‬ր௚ౌԯฟ൴ᒖ ဩ۞૞९ᑫ९༊јߏ˟ซҜᑫ९Ă̙҃გд၁ᅫ˯఺ֱᑫ९ߏ̙ߏͽ˟ซԛ

1-8

ᑕϡ඀ёฟ൴͘Ί

ёᐼх۞ĄЯѩĂ༊ଋԯ૞९ᑫ९ᐼх‫ؕࣧז‬඀ёଠ‫ט‬ր௚ᐼхऱ̚Ă҃ᐼ хऱ̏̚གྷхд˞࠹ТЩჍ۞࠹Т૞९ᑫ९Ă֤ᆃࣧؕ඀ёଠ‫ט‬ր௚‫ͽົܮ‬ າ۞૞९ᑫ९ᖬᄏᖞ۞૞९ᑫ९ĄТᇹ۞Ă༊ଋଂࣧؕ඀ёଠ‫ט‬ր௚̚‫פ‬΍ ‫׶‬ώгր௚̚ጾѣ࠹ТЩჍ۞࠹Т૞९ᑫ९ॡĂࣧؕ඀ёଠ‫ט‬ր௚˵ົᖬᄏ ώгր௚̚۞૞९ᑫ९Ą

ֹϡᑫ९ ᑫ९ߏࣧؕ඀ёଠ‫ט‬ր௚̚Ҝล౵Ҳ۞‫ۏ‬ІĄЇңଋຐдࣧؕ඀ёଠ‫ט‬ր௚ ̚ჯ᜕۞඀ёቅౌυืΒӣдᑫ९̚Ą̂ొЊ۞ࣧؕ඀ёଠ‫ט‬ր௚ߏͽទᏭ ፘ۞ߛၹֽᐼхᑫ९Ąߙֱր௚Ăּт CVSĂֹϡ˞ branch ЩჍֽୃࢗϫ ᐂᆸ৺ĄଋΞͽд Delphi 8 for .NET ૞९̚‫ޙ‬ϲᑫ९֭ͷΒӣ఺ֱᑫ९дଋ ۞ࣧؕ඀ёଠ‫ט‬ր௚̚Ăٕߏଋ˵Ξͽଂࣧؕ඀ёଠ‫ט‬ր௚̚‫פ‬΍ᑫ९Ąଋ Ξͽԯፋ࣎ϫᐂ‫ٸ‬ˢࣧؕ඀ёଠ‫ט‬ր௚̚Ă̝‫ޢ‬ଋಶΞͽ‫פ‬΍࣎Ҿ۞ᑫ९Ă к࣎ᑫ९Ăٕߏፋ࣎̄ϫᐂĄDelphi 8 for .NET ̯ధଋֹϡ‫׌‬჌ᆸѨֽଠ‫ט‬ ଋ۞ᑫ९ĂଋΞͽд Delphi 8 for .NET ૞९ᆸѨٕߏࣧؕ඀ёଠ‫ט‬ր௚۞૞ ९ᆸѨֽგநᑫ९Ą

ТՎᑫ९ Їңࣧؕ඀ёଠ‫ט‬ր௚౵‫۞˧ރ׍‬Αਕ‫̯ߏܮ‬ధଋТՎ˘࣎ᑫ९۞к̙࣎Т ۞‫ۍ‬ώĂͧྵ͛ф۞̰ट֭ͷᇾොࢦᖬ۞ొЊĂ౵‫ޢ‬Ъ‫׀‬ᑫ९‫ۍ‬ώ֭ͷਕૉ ̙ຫᗼ኏ࡎొЊ۞͛фٕߏ඀ёቅĄ̂кᇴ۞ր௚Тॡ˵೩ֻ˞̯ధଋᖣϤ ᅈბࣧؕ඀ёଠ‫ט‬ր௚ᐼхऱ̚౵າ۞ᑫ९ֽՀາώг۞ᑫ९ٕߏБొ۞૞ ९ᑫ९Ă̙҃ົຫᗼଋ̏གྷдώгᑫ९̚ΐˢ۞Їңາ۞඀ёቅĄଋΞͽд Delphi 8 for .NET ֹ̚ϡ Commit Browser ֽેҖ఺࣎ТՎ۞үຽĄ

నࢍֹϡ۰̬ࢬ ဦԛֹϡ۰̬ࢬ(GUI)Βӣ˞‫ֹ׶‬ϡ۰̢જ۞˘ٕ࣎ߏк࣎ෛ඄Ąдనࢍॡ ഇ఺ֱෛ඄ჍࠎܑಏĄDelphi 8 for .NET ೩ֻ˞ Windows ܑಏనࢍछĂWeb

გநฟ൴Ϡ‫׻‬ฉഇ

1-9

ܑಏనࢍछĂVCL ܑಏనࢍछĂͽ̈́ HTML ࢱѨనࢍछĄనࢍछ‫ܑ׶‬ಏᑒ ӄଋԣిͷᅅ‫ޙ۞ٽ‬ϲ૞ຽ۞ֹϡ۰̬ࢬĄ

ֹϡనࢍछ ༊ଋ‫ޙ‬ϲෛ඄ĂWebĂٕߏ Web Service ᑕϡ඀ёॡĂፋЪ൴णᒖဩҋજ‫ܮ‬ ົॲፂଋ‫ޙ‬ϲ۞‫ۏ‬І‫ݭ‬ၗдనࢍࢱѨ̚ពϯϒቁ۞ܑಏĄ༊ଋଂ̍‫׍‬ሹ̚‫ٳ‬ Ѣ̮І‫ܑז‬ಏ̚ॡĂּтᇾᘪ‫͛׶‬ф஼ĂDelphi 8 for .NET ‫ົܮ‬дᑕϡ඀ё ̚ҋજயϠ͚೯۞඀ёቅĄଋΞͽֹϡ‫ۏ‬Іᑭෛጡֽ࣒Լдܑಏ̚۞̮Іপ ّĄ఺ֱ࣒Լ۞જүົҋજ۞ͅߍд Code ࢱѨ̚۞ࣧؕ඀ёቅ̝̚ĄТᇹ ۞Ă༊ଋֹϡ඀ёቅበᏭጡ࣒Լ඀ёቅॡĂ఺ֱԼត˵ົϲ‫ߍͅ۞ג‬д Design ࢱѨ̚Ą ̍‫׍‬ሹ೩ֻ˞ᇴ 10 ࣎ଠ‫ֽีט‬ᑒӄଋᖎ̼ Windows ܑಏĂWeb ܑಏĂͽ ̈́ HTML ࢱѨĄּт༊ଋ‫ޙ‬ϲ Windows ܑಏॡĂଋΞͽֹϡ MainMenu ̮Ідᇴ̶ᛗ̝̰‫ޙ‬ϲ‫މ‬ᄦ̼۞͹ΑਕܑĄ༊ଋд Windows ܑಏ̚‫ٸ‬ˢ̮ ІॡĂଋ‫ܮ‬Ξͽдనࢍ஼̚Ꮾˢ͹ΑਕܑᏴีͽ̈́‫΄׻‬ĄContextMenu ̮І ˵೩ֻ˞ᙷҬ۞Αਕֽ‫ޙ‬ϲ̰टΑਕܑ(Context Menu)Ą˵ѣᇴ࣎၆ྖ஼̮ І೩ֻ૱ϡ۞ΑਕĂּтฟୁ‫׶‬ᐼхᑫ९Ăన‫ؠ‬фԛĂᏴፄᗞҒĂͽ̈́ЕО ΑਕĄֹϡ఺ֱ̮І̯ధଋдᑕϡ඀ё̚೩ֻ˘࡭۞ֹϡ۰̬ࢬຏᛇ֭ͷΞ ͽ಼̂༼࠷ଋ۞ฟ൴ॡมĄ ༊ଋనࢍֹϡ۰̬ࢬॡĂଋΞͽᖣϤᏴፄ EditUndo ‫ ׶‬EditRedo ֽаೇٕ ߏࢦᖬેҖА݈дܑಏ̚ซҖ۞ԼតĄ༊ଋ႕ຍ˞ܑಏ۞ֹϡ۰̬ࢬĂଋ‫ܮ‬ ΞͽᖣϤдܑಏ̚Πᑝ໣ဂᔣ֭ͷᏴፄ Lock Controls ֽᗆ‫̮ؠ‬І‫ܑ׶‬ಏͽ ᔖҺ̙͕̈Լត఺ֱ̮І۞నࢍĄ

న‫ؠ‬నࢍछᏴี ଋΞͽన‫ؠ‬ᇆᜩనࢍछ۞γ៍ͽ̈́Җࠎ۞ᏴีĄּтĂଋΞͽአፋॾ̄۞న ‫ؠ‬Ăͽ̈́யϠ۞඀ёቅ‫ ׶‬HTML ᇾច۞ॾёĄࢋన‫ֱ఺ؠ‬ᏴีĂኛᏴፄ

1-10

ᑕϡ඀ёฟ൴͘Ί

Tools|Options ΑਕܑĂ൒‫ֹޢ‬ϡ Windows ܑಏనࢍछͽ̈́ HTML Ᏼี၆ ྖ஼ֽซҖన‫̍۞ؠ‬үĄ

ͽෛᛇ̼͞ёӔன඀ёቅᖎ̬ ͽ ෛ ᛇ ̼ ͞ ё Ӕ ன ඀ ё ቅ ۞ Α ਕ ߏ Т ॡ ೩ ֻ д Delphi 8 for .NET ۞ Enterprise ‫ ׶‬Architect ‫ۍ‬ώ̚Ąٙѣ‫׶΁׎‬ሀ‫࠹׍̍ݭ‬ᙯ۞ྤੈౌߏΪ೩ ֻд Delphi 8 for .NET ۞ Architect ‫ۍ‬ώ̚Ą

ͽෛᛇ̼͞ёӔன඀ёቅͽ̈́ UML ᐖၗߛၹဦ Delphi 8 for .NET ۞ͽෛᛇ̼͞ёӔன඀ёቅ۞ဦԛ೩ֻ˞ࣧؕ඀ёቅ۞ဦ ԛ̼ໄ៍Ă఺ֱᙯܼߏۡତͅߍд඀ёቅ̚Ą༊ଋдࣧؕ඀ёቅ̚ซҖԼត ॡĂӔனдဦԛ̚۞ෛᛇ̼ྤੈົҋજ۞ՀາĄͽෛᛇ̼͞ёӔன඀ёቅ۞ ဦԛ၆ᑕ‫ ˞ז‬UML ۞ᐖၗߛၹဦĄଋ۞૞९ߛၹໄ៍඾ࢦ‫ ٺ‬UML packages ۞ܑϯဦĂྤफ़‫ݭ‬ၗĂּтᙷҾ‫ࢬ̬׶‬Ăͽ̈́ᙷҾ‫۞ࢬ̬׶‬ᛳّĂপّĂ‫׶‬ ͞‫݋ڱ‬ΞͽͅߍдᙷҾဦ̚Ąᐖၗߛၹဦ˵ពϯ˞఺ֱ‫ۏ‬І̝ม۞ᙯܼĄ ώ̈༼૟ົྋᛖࣧؕ඀ёቅͽ̈́ͽෛᛇ̼͞ёӔன඀ёቅဦԛ̝ม۞ᙯܼĄ ‫ڦ‬ຍ

ͽෛᛇ̼͞ёӔன඀ёቅͽ̈́ፋЪ۞ UML ሀ‫ ߏ׍̍ݭ‬Delphi 8 for .NET ̚ ‫࣎׌‬፾ϲ۞ΑਕĄͽෛᛇ̼͞ёӔன඀ёቅ޽۞ߏବႿЇң۞඀ёቅĂ֭ͷ ၆ߍ඀ёቅ̚۞‫ކ‬Әࠎ UML ۞ܑϯဦညĄӔன΍ֽ۞ඕ‫ߏڍ‬Ķ߿ϠϠ۞ဦ ԛķ Ă఺࣎ຍ‫޽ߏޥ‬ဦԛౌົͅߍϫ݈ࣧؕ඀ё۞‫ې‬ၗĂҭߏଋ̙ਕд඀ёቅ ෛᛇ̼ဦԛ̚ซҖЇң۞ԼតĄDelphi 8 for .NET ۞ሀ‫ݭ‬ᜭજ UML ̍‫݋׍‬ Ш݈ซՎ˞˘̂ՎĂ̯ధଋдဦԛ̬ࢬ̚నࢍଋ۞ᑕϡ඀ё۞ਕ˧Ąᔵ൒఺ ‫࣎׌‬ய‫ݡ‬Αਕౌߏૄ‫ ٺ‬Borland Together ࡊԫĂιࣇ‫ֹݒ‬ϡ˞̙Т۞‫غ‬ᆸ፟ ‫ֽט‬யϠ‫׶‬გநဦԛĄፋЪ۞ሀ‫ݭ‬నࢍछᔘֹϡ˞ Borland's Enterprise Core Objects (ECO)ߛ॰నࢍॡഇ۞ΑਕĄώ̈༼Ϊ੅ኢͽෛᛇ̼͞ёӔன ඀ёቅ۞͹ᗟĂኛଋણ҂ ECO2 ߛ॰ͽ̈́ UML ሀ‫ݭ‬ౢ༼ͽ‫ܮ‬ᒢྋՀк۞ྤ ੈĄ

გநฟ൴Ϡ‫׻‬ฉഇ

1-11

ᒢྋࣧؕ඀ёቅ‫ͽ׶‬ෛᛇ̼͞ёӔன඀ёቅ̝ม۞ᙯܼ Delphi 8 for .NET ۞඀ёቅෛᛇ̼̍‫ֹ׍‬ϡ˞ UML ܑϯဦညͽ̈́ၚּֽೡ ࢗࣧؕ඀ёቅ̚۞̮৵Ą඀ёቅෛᛇ̼ဦԛࠎଋពϯ૞९̚۞ᙷҾĂ̬ࢬĂ ͽ̈́‫ྤ΁׎‬फ़‫ݭ‬ၗ۞ទᏭᙯܼĂٕߏͽ UML ۞ၚּֽӔனᐖၗߛၹĄፋЪ ൴णᒖဩົᖣϤ၆ߍপ‫ؕࣧ۞ؠ‬඀ёቅߛၹ(ּтᙷҾ‫ކ‬ӘĂͽ̬̈́ࢬ۞၁ү) ‫ ז‬UML ۞ܑϯဦညֽ‫ޙ‬ϲ඀ёቅෛᛇ̼ဦԛĄ

ࢵᆸ௡ᖐĈ૞९ĂUML PackagesĂͽ̈́.NET ‫׻‬Щ۩ม ͽෛᛇ̼͞ёӔன඀ёቅߏፋЪ൴णᒖဩ̚‫࣎׌‬ΑਕВТ̍ү۞ඕ‫ڍ‬Ĉ Model View ෛ඄Ăͽ̈́඀ёቅෛᛇ̼ဦԛĄModel View ෛ඄ͽፘ‫ߛې‬ၹព ϯ˞૞९۞ទᏭߛၹĂ఺‫׶‬૞९გந۰ෛ඄ͽᑫ९ࠎ͕̚۞ߛၹ̙ТĄՏ˘ ࣎д૞९ཏ௡̚۞૞९ౌߏ Model View ፘ‫ߛې‬ၹ̚ࢵᆸ۞༼ᕇĄ дՏ˘࣎૞९ፘ༼ᕇ̝̚ĂଋΞͽԱ‫ ז‬UML ۞ packageĄՏ˘࣎ UML package ౌ၆ߍ‫࣎˘˞ז‬дଋ۞૞९̚‫ކ‬Ә۞.NET ‫׻‬Щ۩ม(.NET ‫׻‬Щ۩ม ΞͽΒӣк࣎ࣧؕ඀ёᑫ९)ĄଋΞͽणฟ UML package ༼ᕇͽ‫ܮ‬ពϯ‫̚׎‬ ‫ކ‬Ә۞‫ݭ‬ၗĄ

ᚶٚ‫ࢬ̬׶‬၁ү ༊ᙷҾଂͭ΃ᙷҾᚶٚ˭ֽॡĂಶԛј˞ UML ܑϯဦည̝ม۞ᙯܼĄ༊ IDE дଋ۞ࣧؕ඀ёቅ̚࠻‫ז‬ᚶٚ۞ᙯܼॡĂι‫ົܮ‬д Mode View ፘ‫ߛې‬ၹ۞ ̄ ᙷ Ҿ ༼ ᕇ ̚ ‫ ޙ‬ϲ generalization ా ඕ Ą д ඀ ё ቅ ෛ ᛇ ̼ ဦ ԛ ̚ Ă generalization ాඕົֹϡ UML ܑϯ‫ֽڱ‬ӔனĂ֭ͷֹϡ˘࣎၁͕۞ቢဦ ညĂͽ۩͕۞቏ᐝ޽Ш̄ᙷҾĄ UML ̚΃ܑ̬ࢬ၁ү۞ЩჍߏ realizationĄ‫׶‬ᚶٚ˘ᇹĂ༊ፋЪ൴णᒖဩ ࠻‫ᙷז‬Ҿ‫ކ‬Ә၁ү˞̬ࢬॡĂ‫ޙົܮ‬ϲ˘࣎ realization ాඕĄRealization ాඕົ‫ޙ‬ϲд Mode View ፘ‫ߛې‬ၹ۞၁үᙷҾ̚Ă֭ͷдဦԛֹ̚ϡ˘࣎ ᕇ‫۞ې‬ቢဦညĂͽ۩͕۞቏ᐝ޽Ш̬ࢬĄдՏ˘࣎၁ү̬ࢬ۞ᙷҾ̚ౌົѣ ˘࣎ realization ాඕֽ΃ܑĄ

1-12

ᑕϡ඀ёฟ൴͘Ί

ᙯా(Associations) д UML ̚Ă༊˘࣎ᙷҾણ҂‫ᙷ΁׎ז‬Ҿॡ(ּтĂણ҂‫ᙷ΁׎‬Ҿ۞ᛳّٕߏ পّ)Ăᙯా‫ܮ‬ΞͽឰᙷҾాඕ‫׎ז‬ણ҂۞ᙷҾĄ༊˘࣎ᙷҾΒӣણ҂‫ܧז‬ᖎ ಏྤफ़‫ݭ‬ၗ۞ᛳّٕߏপّॡĂෛᛇ̼Ӕன඀ёቅΑਕ‫ޙົܮ‬ϲᙯాాඕĄ дဦԛ̚ᙯాాඕ‫ޙົܮ‬ϲд࠹̢ણ҂۞ᙷҾ̝มĄ

ᙷҾјࣶĈᛳّĂ͞‫ڱ‬ĂপّĂͽ̈́૰‫ݭې‬ၗ ෛᛇ̼Ӕன඀ёቅΑਕ˵Ξͽ၆ߍᙷҾ‫ࢬ̬׶‬јࣶ۞‫ކ‬Ә‫ז‬ιࣇ۞ UML ܑ ϯဦည̚Ąдෛᛇ̼Ӕன඀ёቅဦԛ̚Ă̮৵јࣶజ̶ᙷј˭ࢬ۞α჌჌ᙷĈ y

᛼Ҝ(Fields)Ĉ Βӣ᛼Ҝ‫ކ‬ӘĄдဦԛ̚ົពϯ᛼Ҝ‫ݭ‬ၗͽ̈́ΞᏴፄ۞ ̰‫ؠ‬న‫ࣃؠ‬Ą

y

͞‫ڱ‬ĞMethodsğ Ĉ Βӣ͞‫ކڱ‬ӘĄΞ֍ّ(Visibility)ĂቑಛĂͽ̈́а็ ࣃĄ

y

পّࣃ(Properties)ĈΒӣ Delphi পّ‫ކ‬ӘĄົពϯপّ۞‫ݭ‬ၗĄ

y

ᙷҾ(Classes)Ĉ Βӣ૰‫ᙷې‬Ҿ۞‫ݭ‬ၗ‫ކ‬ӘĄ

ᇾ໤۞ UML ᄬ‫ົڱ‬జֹϡֽពϯᛳّĂ͞‫ڱ‬Ă‫׶‬পّ۞ UML ဦညĄ఺α ჌ဦညౌΞͽќᒺٕߏणฟͽ‫ܮ‬ពϯٕߏᔳᖟ‫۞̚׎‬јࣶĄ

በᛌĂ‫ޙ‬ϲĂ‫ે׶‬Җᑕϡ඀ё ༊ଋฟ൴ଋ۞ᑕϡ඀ёॡĂଋΞͽдፋЪ൴णᒖဩ̚በᛌĂ‫ޙ‬ϲĂͽ̈́ેҖ ᑕϡ඀ёĄᔵ൒఺ˬ࣎үຽౌΞͽயϠેҖᑫ(.exe)ٕߏ assembly(.dll)Ăι ࣇ‫ݒ‬ൾѣ̙Т۞ҖࠎĄ በᛌ૞९Ϊົበᛌ૞९̚ҋଂ˯Ѩ‫ޙ‬ϲᑕϡ඀ё‫ޢ‬Լត۞ࣧؕ඀ёᑫ९Ăҭ ߏ̙ົેҖᑕϡ඀ёĄ ‫ޙ‬ϲ૞९‫ົ݋‬በᛌ૞९ٙ̚ѣ۞ࣧؕ඀ёቅĂ̙҃გࣧؕ඀ёቅߏӎԼត ࿅Ą༊ଋ̙ቁ‫ߏؠ‬ӎѣЇңࣧؕ඀ёቅԼត࿅ॡĂଋΞͽֹϡ‫ޙ‬ϲ૞९үຽĂ

გநฟ൴Ϡ‫׻‬ฉഇ

1-13

ٕߏ༊ଋԼត࿅૞९̰टٕߏԼត࿅૞९۞በᛌጡᏴีߏ˵Ξͽֹϡ఺࣎ү ຽĄ ેҖᑕϡ඀ёົበᛌЇңԼត࿅۞ࣧؕ඀ёቅĂ҃ͷт‫ڍ‬በᛌјΑĂಶົે Җଋ۞ᑕϡ඀ёĂ̯ధଋдፋЪ൴णᒖဩֹ̚ϡ‫׶‬ീྏᑕϡ඀ёĄ ଋΞͽֹϡ Project ‫ ׶‬Run Αਕܑ̚۞‫ֽ΄׻‬በᛌĂ‫ޙ‬ϲĂͽ̈́ેҖଋ۞૞ ९Ą

በᛌጡᏴี ଋΞͽᖣϤᏴፄ Projec|Options ֭ͷᏴፄ Compiler ࢱѨֽన‫ؠ‬૞९ధк۞ በᛌጡᏴีĄ̂ొЊ Compiler ࢱѨ̚۞Ᏼีౌߏበᛌጡ۞Ᏼี‫΄׻‬Ă఺ֱ በᛌጡ۞Ᏼี‫΄׻‬дቢ˯ᅃӄ̚೩ֻ˞ᄲ‫͛ځ‬ІĄ д Compiler ࢱѨ̚Ăଋ˵ΞͽᐼхበᛌጡᏴีј˘࣎ᏴีะЪĄ఺̯ధଋ ॲፂଋ۞ฟ൴̍үֽԣి۞ԼតበᛌጡᏴีĄּтĂଋΞͽన‫ؠ‬প‫۞ؠ‬በᛌ ጡᏴีֽੵ᏾ଋ۞૞९Ă҃༊ଋԆј˞ੵ᏾̝‫ޢ‬ଋ˫ΞͽԣిԼត̙Т۞በ ᛌጡᏴีะЪĄ т‫ڍ‬ଋᅮࢋ޽‫ؠ‬ᗝγ۞በᛌጡᏴีĂଋΞͽд‫΄׻‬ЕୁજበᛌጡĄኛણ҂ᄬ ֏޽͔͘Ίͽ‫ྙߤܮ‬በᛌጡᏴี۞ԆፋЕܑͽ̈́тңଂ‫΄׻‬ЕેҖበᛌጡĄ ༊ଋበᛌଋ۞૞९ॡĂଋΞͽдੈिෛ඄̚ពϯϫ݈۞በᛌጡᏴีĄኛᏴፄ Tools|Options|Environment Options Αਕܑ֭ͷᏴፄ Show command line ᏴีĄ֤ᆃ༊ଋ˭Ѩበᛌ૞९ॡĂ֤ᆃֹϡֽበᛌ૞९‫׶‬аᑕᑫ९۞‫׻‬ ΄‫ົܮ‬ពϯдੈिෛ඄̚Ąаᑕᑫ९Е΍˞በᛌጡᏴีͽ̈́ࢋజበᛌ۞ᑫ९Ą

በᛌጡ‫ې‬ၗ‫(ੈྤ׶‬Compiler Status and Information) ଋΞͽдበᛌ̝‫ٺޢ‬ፋЪ൴णᒖဩ̚ពϯበᛌጡྤੈĄଋΞͽࢋՐՏѨበᛌ ૞ ९ ॡ ‫ ܮ‬ព ϯ ˘ ࣎ ‫ ې‬ၗ ၆ ྖ ஼ Ă ኛ Ᏼ ፄ Tools|Options|Environment Options Αਕܑ֭ͷᏴፄ Show Compiler Progress ᏴีĄ

1-14

ᑕϡ඀ёฟ൴͘Ί

дଋበᛌ˞૞९̝‫ޢ‬ĂଋΞͽᖣϤᏴፄ Project|Information ֽពϯበᛌྤ ੈĄඕ‫ੈྤڍ‬၆ྖ஼ົពϯበᛌ۞ࣧؕ඀ёቅҖᇴĂଋ۞඀ёቅ‫ྤ׶‬फ़۞Ҝ ̮௡̂̈Ăֹϡ۞ુᝑ̂̈‫׶‬ᑫ९̂̈Ăͽ̈́૞९۞በᛌ‫ې‬ၗĄ

በᛌጡ᏾ᄱ ༊ଋበᛌ૞९ॡĂበᛌጡ۞ੈिົពϯдੈिෛ඄(Messages Window)̚Ą ࢋᒢྋੈि۞ຍཌྷĂኛᏴፄੈि֭ͷ޷˭ F1 ᔣĄ

ֹϡᖙᛌ̍‫׍‬ Delphi 8 for .NET Βӣ˞˘इᖙᛌ̍‫ֽ׍‬ᑒӄଋซҖώг̼ͽ̈́ࠎ̙Т۞ડ ાฟ൴.NET ᑕϡ඀ёĄ‫۞̚׎‬ᖙᛌ̍‫׍‬Βӣ˞Ĉ y

኎ߐ Assembly ჟីĞSatellite Assembly Wizardğ

y

ᖙᛌგநࣶĞTranslation Managerğ

y

ᖙᛌᐼхऱĞTranslation Repositoryğ

኎ߐ Assembly ჟី ଋΞͽឰଋ۞ᑕϡ඀ёዋЪેҖдιࢋેҖ۞ᒖဩĂ఺Ϊᅮࢋ೩ֻᑕϡ඀ё υࢋ۞኎ߐ Assembly ӈΞĄ኎ߐ Assembly ߏֹϡֽొཌᑕϡ඀ёᅮࢋ۞Ă ‫׶‬প‫ؠ‬ᄬ֏࠹ᙯ۞ྤ໚Ą༊ଋ۞ᑕϡ඀ёୁજॡĂιົᑭߤώгր௚ֹϡ۞ ડાྤੈĄт‫ڍ‬ι൴னЇң‫ ׶‬EXE ጾѣ࠹ТЩჍ۞኎ߐ AssemblyĂٕߏι ֹϡ۞ package ᑫ९ॡĂι‫ົܮ‬ᑭߤֱ֤ assemblies ۞‫ؼ‬ҩᑫЩĄт‫ֱ఺ڍ‬ ྤ໚ሀ௡۞‫ؼ‬ҩᑫЩ‫׶‬ώгր௚ֹϡ۞ᄬ֏‫઼׶‬छྤੈ˘ᇹ۞ྖĂ֤ᆃᑕϡ ඀ё‫ֹົܮ‬ϡ఺ֱྤ໚ሀ௡̚۞ྤ໚Ă̙҃ົֹϡેҖᑫĂassemblyĂٕߏ package ̝̚Βӣ۞ྤ໚Ą ኎ߐ Assembly ჟី̯ధଋд૞९̚ΐˢЧ჌ᄬ֏֭ͷົࠎՏ˘჌ᄬ֏‫ޙ‬ϲ ኎ߐ AssemblyĄଋΞͽдЇңॡ࣏‫ٺ‬૞९̚ΐˢ኎ߐ AssemblyĄт‫ڍ‬ଋд

გநฟ൴Ϡ‫׻‬ฉഇ

1-15

ፋЪ൴णᒖဩ̚ฟୁ˞к࣎૞९Ă֤ᆃଋಶΞͽ˘Ѩ఍நк࣎૞९ֹϡ۞኎ ߐ AssemblyĄ኎ߐ Assembly ჟីΞͽᑒӄଋொੵٕߏаೇᄬ֏ྤ໚Ą

ᖙᛌგநࣶ д኎ߐ Assembly ΐˢ˞ଋ۞૞९̝̚‫ޢ‬Ăଋ‫ܮ‬Ξͽֹϡᖙᛌგநֽࣶᑭෛ ‫׶‬በᏭܑಏͽ̈́ྤ໚фҚĄд࣒Լ˞ଋ۞ᖙᛌྤੈ̝‫ޢ‬Ăଋ‫ܮ‬ΞͽՀາଋ۞ ૞९ٙ̚ѣ۞኎ߐ AssemblyĄ γొᖙᛌგநࣶ(The External Translation Manager ĂETM)ĂߏΞͽֹϡд ፋЪ൴णᒖဩ̝γ۞ᖙᛌგநࣶ‫ۍ‬ώĄETM ‫׶‬ᖙᛌგநࣶጾѣ࠹Т۞ΑਕĂ ൒҃ ETM ‫׍‬౯˞ᗝγ۞Αਕܑ‫׍̍׶‬ЕĄ

ᖙᛌᐼхऱ ᖙᛌᐼхऱ೩ֻ˞̚δგந۞ᖙᛌྤफ़ऱĂ҃ͷΞͽజ̙Т۞ฟ൴ˠֹࣶϡ д̙Т۞૞९̚ĄֹϡᖙᛌᐼхऱĂଋΞͽдᐼхऱ̚ᐼхᖙᛌ۞фҚͽ̈́ ଂᖙᛌᐼхऱ̚‫פ‬΍ᖙᛌ࿅۞фҚĄ ̰‫˯ؠ‬ĂՏ༊ଋ۞ assemblies ՀາॡĂassemblies ̚‫׶‬ᐼхऱЇң௑Ъ۞ф Қ‫ࢦົܮ‬າᆷˢ assemblies ̚Ąଋ˵ΞͽᖣϤιҋ̎۞̬ࢬۡତх‫פ‬ᐼхऱ ֽವԱ‫׶‬በᏭфҚٕߏӁੵЇң̙ᅮࢋ۞фҚĄ ᖙ ᛌ ᐼ х ऱ ߏ ͽ XML ۞ ॾ ё ᐼ х ྤ फ़ ۞ Ą ̰ ‫ ˯ ؠ‬Ă ᑫ ९ Щ Ⴭ ߏ ͽ default.tmx ֽ‫׻‬ЩĂ֭ͷᐼхд Delphi 8 for .NET ۞\bin ϫᐂ̝˭Ą

ᖙᛌ̍‫׍‬யϠ۞ᑫ९ Ϥᖙᛌ̍‫׍‬யϠ۞ᑫ९Βӣ˞Ĉ ‫ؼ‬ҩᑫЩ .nfn

1-16

ᑕϡ඀ёฟ൴͘Ί

ᄲ‫ځ‬ ᖙᛌ̍‫ࠎົ׍‬Տ˘࣎ᑕϡ඀ё̚۞ܑಏ‫׶‬Տ˘࣎ϫᇾᄬ֏ჯ ᜕˘࣎፾ϲ۞.nfmᑫ९Ą఺ֱᑫ९Βӣ˞ଋਕૉдᖙᛌგநࣶ ̚࠻‫ྤ۞ז‬फ़(Β߁ᖙᛌ࿅۞фҚ)Ą

‫ڦ‬ຍ

‫ؼ‬ҩᑫЩ .resx

ᄲ‫ځ‬ ኎ߐAssemblyჟីֹϡ˞በᛌጡயϠ۞.drcil ᑫ९ֽࠎՏ ˘࣎ϫᇾᄬ֏யϠ˘࣎.resxᑫ९Ą఺ֱ.resx ᑫ९Βӣ˞జ ᖙᛌ̍‫ֹ׍‬ϡ۞পҾ‫ڦ‬ᛖĄ

.tmx

ᖙᛌᐼхऱົԯྤफ़ᐼхд.tmx ᑫ९̚ĄଋΞͽᖣϤᐼхк ࣎. tmxᑫ९ֽჯ᜕к‫ ۞࣎˘ٺ‬ᐼхऱ

.bdsproj

γొᖙᛌგநࣶົԯᅮࢋᖙᛌ۞኎ߐAssembly‫ྤ׶‬໚‫ٸ‬д˘ ࣎.bdsproj૞९ᑫ९̚Ą༊ௐ3͞ ᖙᛌ̍‫׍‬ଂ૞९̚ΐˢٕߏ ொੵᄬ֏ॡĂιࣇ‫ܮ‬Ξͽд.bdsproj ᑫ९̚ᐼх఺ֱԼតĄ

ଋ̙ᑕྍҋ̎ྏ඾࣒ԼЇң۞఺ֱᑫ९Ą

ੵ᏾ᑕϡ඀ё ፋЪੵ᏾ጡਕૉឰଋವԱ‫࣒׶‬ϒଋ۞ Delphi 8 for .NET ᑕϡ඀ё̚ેҖॡ ഇ᏾ᄱ‫׶‬ទᏭ᏾ᄱĄᖣϤֹϡੵ᏾ጡĂଋΞͽ੠ᖸેҖ඀ёቅĂన‫̚ؠ‬ᕝᕇ ‫׶‬ᑭෛᕇĂᑭߤ‫࣒׶‬Լ඀ё۞ᇴࣃĄ༊ଋੵ᏾ଋ۞ᑕϡ඀ёॡĂੵ᏾ෛ඄Ξ ͽֹϡֽᑒӄଋგநੵ᏾̍үͽ̈́೩ֻଋ۞ᑕϡ඀ё۞‫ې‬ၗĄᅈბੵ᏾Ҩ‫ڇ‬ ጡឰଋਕૉ၆˘࣎ેҖдᅈბ࿪ཝ̚۞ Delphi 8 for .NET ᑕϡ඀ёซҖੵ ᏾۞̍үĄ

੠ᖸેҖ඀ёቅ(Stepping Through Code) ੠ᖸેҖ඀ёቅឰଋ˘ѨેҖ˘Җ඀ёቅĄдՏ˘࣎ેҖՎូ̝‫ޢ‬ĂଋΞͽ ᑭߤ඀ё۞‫ې‬ၗĂᑭෛ඀ё۞Ꮾ΍Ă࣒Լ඀ё۞ྤफ़ᇴࣃĂ֭ͷᚶᜈેҖ˭ ˘Җ඀ёቅĄ˭˘Җ඀ёቅ۞ેҖົజੵ᏾ጡԆБ۞ଠ‫ט‬Ăۡ‫ז‬ଋ̯ధੵ᏾ ጡેҖιॡĄ Run Αਕܑ೩ֻ˞ Trace Into ‫ ׶‬Step Over ‫΄׻‬Ą఺‫ౌ΄׻࣎׌‬Ә෦ੵ᏾ ጡેҖ˭˘Җ඀ёቅĄ൒҃Ăт‫˘˭ڍ‬ҖΒӣ˞‫ײ‬Ψ‫ב‬ё۞඀ёቅĂTrace Into ‫ેົ΄׻‬Җซˢ‫ב‬ё֭ͷົᇶઃд‫ב‬ё۞ௐ˘Җ඀ёቅ̝˯ĄStep Over ‫׻‬ ΄‫ેົ݋‬Җ‫ב‬ё֭ͷᇶઃд‫ב‬ё̝‫˘˭۞ޢ‬Җ඀ёቅ̝˯Ą

გநฟ൴Ϡ‫׻‬ฉഇ

1-17

ෞณ(Evaluate)/࣒Լ(Modify) ෞณ/࣒ԼΑਕ̯ధଋд̚ᕝᕇ˯ෞณ˘࣎ྻზёĄଋ˵Ξͽ็ᅍྻზёᇴ ࣃගϫ݈ϒдેҖ۞඀Ԕ̚ĄּтĂଋΞͽ࣒Լតᇴ۞ᇴࣃ֭ͷГԯᇴࣃᆷ аតᇴ̚Ă఺д఺࣎ᇴࣃົдેҖᑕϡ඀ёॡ็ᅍගΩγ˘࣎͞‫ڱ‬ॡ‫ܧ‬૱۞ ѣϡĄ఺̯ధଋд඀ԔેҖॡ೩ֻপ‫۞ؠ‬ᇴࣃĂ఺д˘ਠ۞ଐԛ̚ߏ൑‫ڱ‬ઇ ‫۞ז‬Ąෞณ/࣒ԼΑਕΞͽֹϡдЇң۞၁үᄬ֏̚Ă఺ߏய‫ݡ‬ώ֗ಶ͚೯ ۞ΑਕĄ

̚ᕝᕇ(Breakpoints) ̚ᕝᕇ̯ధ඀ёдপ‫ې۞ؠ‬ၗ൴Ϡॡдপ‫۞ؠ‬г͞ᇶઃેҖĄ൒‫ޢ‬ଋಶΞͽ ֹϡੵ᏾ጡֽᑭෛଋ۞ᑕϡ඀ё۞‫ې‬ၗĂٕߏ step over / trace into ˘Җ˘ Җ۞඀ёቅٕߏ፟ୠቅĄࣧؕ඀ё̚ᕝᕇົдଋ۞ࣧؕ඀ёቅ̚প‫۞ؠ‬г͞ ᇶઃેҖĄҜӬ̚ᕝᕇົдপ‫੃۞ؠ‬ጸវҜӬᇶઃેҖĄ

ᑭෛ(Watches) ᑭෛΑਕ̯ధଋ step over ٕߏ trace into ଋ۞඀ёቅॡᑭෛ඀ёតᇴ۞ᇴ ࣃĄ༊ଋ੠ᖸેҖଋ۞඀ёॡĂт‫ڍ‬඀ёԼត˞ЇңΒӣдᑭෛྻზё̚۞ តᇴॡĂᑭෛྻზё۞ᇴࣃ˵ົᐌॡԼត‫ߍͅ׶‬Ą

ੵ᏾ෛ඄(Debug Windows) ˭ࢬ۞ੵ᏾ෛ඄Ξͽᑒӄଋੵ᏾ଋ۞඀ёĄ̰‫˯ؠ‬Ă༊ଋୁજੵ᏾̍үॡĂ ̂ొЊ۞ෛ඄ౌົҋજពϯ΍ֽĄଋ˵Ξͽֹϡ View|Debug Windows Α ਕֽܑᑭෛЧҾ۞ෛ඄Ą Տ˘࣎ෛ඄ౌ೩ֻ˞˘ٕ࣎ߏк̰࣎टΑਕܑĄՏ˘࣎ෛ඄۞ F1 ቢ˯ᅃӄ ౌ೩ֻ˞ෛ඄‫̰׶‬टΑਕܑྎ௟۞ྤੈĄ Debug Window Description ̚ᕝᕇҚЕ(Breakpoint List) ពϯϫ݈඀ёቅበᏭጡٕߏͅ௡ᛌෛ඄ٙ̚ѣ۞̚ᕝ ᕇĄ

1-18

ᑕϡ඀ёฟ൴͘Ί

Debug Window ‫ײ‬Ψુᝑ9Call Stack)

Description ពϯϫ݈۞Αਕ‫ײ‬Ψ۞ેҖѨԔĄ

ᑭෛҚЕĞWatch Listğ

ॲፂેҖᕇ۞ቑಛֽពϯᑭෛྻზёϫ݈۞ᇴࣃĄ

ડાតᇴ(Local Variables)

ពϯϫ݈‫ב‬ё۞ડાតᇴĂ఺ឰଋᑭෛ༊඀ёેҖॡߏ тңՀາ఺ֱតᇴᇴࣃ۞Ą

ሀ௡(Modules)

ពϯϤੵ᏾ጡଠ‫۞ט‬඀Ԕͽ̈́Տ˘࣎඀Ԕྶˢ۞ሀ௡Ą ι˵೩ֻ˞ᑕϡ඀ёֹϡ۞‫׻‬Щ۩มĂᙷҾĂ‫۞ڱ͞׶‬ ߛၹྤੈĄ

ેҖჰ‫ې‬ၗ(Threads Status ) ពϯϫ݈ϒдੵ᏾۞ᑕϡ඀ё۞ٙѣ඀Ԕ‫ે׶‬Җჰ۞ે Җ‫ې‬ၗĄ఺дੵ᏾кેҖჰᑕϡ඀ёॡ‫ܧ‬૱۞ѣϡĄ ְІ൳ᐂ(Event Log)

ពϯ඀Ԕ۞ଠ‫ט‬Ă̚ᕝᕇĂᏮ΍ĂેҖჰĂ‫׶‬ሀ‫࠹ݭ‬ᙯ ۞ੈि

ͅ௡ᛌ(Disassembly)

ពϯ඀ё۞‫غ‬ᆸ‫ې‬ၗĂΒӣ˞Տ˘Җ඀ёቅ۞assembly ޽΄Ăͽ̈́Տ˘࣎ᇶхጡ(Register)۞̰टĄ

ᅈბੵ᏾(Remote Debugging) ᅈბੵ᏾ឰଋਕૉੵ᏾˘࣎ેҖдᅈბ࿪ཝ˯۞ Delphi 8 for .NET ᑕϡ඀ ёĄଋ۞࿪ཝυืᖣϤ TCP/IP ాඕ‫ז‬ᅈბ࿪ཝĄдଋщ྅‫ે׶‬Җ˞ᅈბੵ ᏾Ҩ‫ڇ‬ጡĂ֭ͷ޿֓˞υࢋ۞ᑕϡ඀ёᑫ९‫ז‬ᅈბ࿪ཝ̝‫ޢ‬Ăଋ‫ܮ‬Ξͽֹϡ Delphi 8 for .NET ాඕ‫֤ז‬έ࿪ཝ֭ͷฟؕੵ᏾Ą

̶൴ᑕϡ඀ё дଋᇤᆷĂീྏĂ‫ੵ׶‬᏾ଋ۞ᑕϡ඀ё̝‫ޢ‬ĂଋΞͽᖣϤ̶൴ᑕϡ඀ёឰ‫׎‬ ΁۞ˠֹϡĄॲፂଋ۞ᑕϡ඀ё۞̂̈‫׶‬ኑᗔ‫ޘ‬ĂଋΞͽ‫ދ‬྅ࠎಏ˘ٕߏк ࣎ assembliesĂᑅᒺ۞ cabinet (.cab)ᑫ९Ăٕߏщ྅඀ё۞ॾё(ּт .msi)Ą дᑕϡ඀ёዋ༊۞‫ދ‬྅̝‫ޢ‬Ăଋ‫ܮ‬Ξͽֹϡ XCOPYĂ FTPĂ༊ј˭ྶ඀ёĂ ٕߏֹϡщ྅඀ё̶ֽ൴ଋ۞ᑕϡ඀ёĄ ώ̈༼੅ኢ˞˭ࢬ۞͹ᗟĈ

გநฟ൴Ϡ‫׻‬ฉഇ

1-19

y

̶൴ᖎಏ۞ᑕϡ඀ё

y

ΒӣВֳ Assemblies ۞ᑕϡ඀ё

y

щ྅඀ё

y

̶൴ COM Interop ᑕϡ඀ё

y

̶൴ Windows ܑಏᑕϡ඀ё

y

̶൴ ASP.NET ᑕϡ඀ё

y

̶൴ ADO.NET ᑕϡ඀ё

y

Ξ̶൴۞ Delphi 8 for .NET ᑫ९

y

ొཌ.NET ߛ॰

y

ొཌௐ 3 ͞హវ

̶൴ᖎಏ۞ᑕϡ඀ё(Simple Application Deployment) ኛቁ‫ؠ‬ϫᇾ࿪ཝ̏̚གྷщ྅˞.NET ߛ॰Ă̶൴ΪΒӣಏ˘ેҖᑫ۞ᖎಏᑕ ϡ඀ёΪᅮࢋᖎಏ۞޿֓.exe ᑫ९‫ז‬ϫᇾ࿪ཝ̚Ąଋ̙ᅮࢋොΊᑕϡ඀ёĂ ҃ͷͅщ྅ᑕϡ඀ёΪᅮࢋᖎಏ۞ӁੵιӈΞĄ

ΒӣВֳ Assemblies ۞ᑕϡ඀ё(Applications that Include Shared Assemblies) т‫ڍ‬ଋ۞ᑕϡ඀ёΒӣ˞ົజ‫΁׎‬ᑕϡ඀ёֹϡ۞ assemblyĂଋ‫ܮ‬ᅮࢋࠎ఺ ࣎ assembly ‫ޙ‬ϲૻ‫ݭ‬ЩჍ(strong name)Ă֭ͷԯιщ྅д Global Assembly Cache (GAC)̝̚Ąૻ‫ݭ‬ЩჍΒӣ˞ assembly's ۞͛фЩჍĂ‫ۍ‬ώበཱིĂΞ Ᏼፄ۞̼͛ྤੈ(culture information)Ăͽ̈́ቁܲ assembly ፾˘൑˟۞̳៑ ‫ ׶‬ᇴ Ҝ ᘪ ౢ Ą .NET ߛ ॰ SDK ೩ ֻ ˞ ‫ ΄ ׻‬Е ̳ ϡ ඀ ё ֽ ‫ ޙ‬ϲ ̳ / ռ ៑ (sn.exe)Ă޽‫ݭૻؠ‬ЩჍ(al.exe)Ăͽ̈́щ྅ assembly ‫ ז‬GAC ̚(gacutil.exe)Ą ኛણ҂ߛ॰ SDK ቢ˯ᅃӄͽᒢྋ఺ֱ̳ϡ඀ё۞ՀкྤੈĄ

1-20

ᑕϡ඀ёฟ൴͘Ί

щ྅඀ё(Installation Programs) ၆‫ٺ‬Βӣк࣎ᑫ९۞ኑᗔᑕϡ඀ё҃֏ĂଋΞͽֹϡщ྅̍‫׍‬Ăּт InstallShield ExpressĄInstallShield Express Ξͽଂ Delphi 8 for .NET ۞щ ྅ CD ̚щ྅Ąдщ྅˞ InstallShield Express ̝‫ޢ‬Ăኛણ҂ InstallShield Express ቢ˯ᅃӄྤੈͽ‫ܮ‬ᒢྋтңֹϡ఺࣎ய‫ݡ‬Ą

̶൴ COM Interop ᑕϡ඀ё(COM Interop Application Deployment) ༊ֹϡ unmanaged ̮ІॡĂѣ‫׌‬Іְଐυื੃д͕̚Ąௐ 1Ăኛ੃଀ interop assembly ̙ਕ‫ ΃פ‬COM Ҩ‫ڇ‬ጡĂ҃ߏ˘࣎፾ϲ۞ proxy ޽Шৌϒ۞ COM Ҩ‫ڇ‬ጡĄϤ tlbimp ‫ ׶‬Delphi 8 for .NET யϠ۞ interop assemblies ̙֭ߏ ԯ COM ̮ІϤ unmanaged ඀ёቅᖼೱࠎ managed ۞඀ёቅĄੵ˞ interop assemblies ̝γĂЇңд unmanaged ᒖဩ̚ᅮࢋ̶൴۞ᑫ९˵ౌᅮࢋд managed ᒖဩ̶̚൴Ąௐ 2Ă.NET ߛ॰۞ interop ‫ڇ‬ચ̪൒ᅮࢋ COM Ҩ‫ڇ‬ ጡд௣ბֹϡ۰۞፟ጡ̚ොΊĄኛ‫ڦ‬ຍĂдଋฟ൴ managed ᑕϡ඀ёॡಶ ᅮࢋซҖොΊ۞̍үĄ ‫׶‬Їң‫΁׎‬.NET assembly ˘ᇹĂinterop assembly Ξͽ‫ ׶‬managed ેҖ ᑫ щ ྅ д ࠹ Т ۞ ϫ ᐂ ̚ Ă ˵ Ξ ͽ ̶ ൴ ‫ ז‬GAC ̝ ̚ Ą т ‫ ڍ‬ଋ ԯ interop assembly ̶൴‫ ז‬GACĂ֤ᆃдฟ൴ล߱ଋυืග΁˘࣎ૻ‫ݭ‬ЩჍ(Strong Name)Ą͹ࢋ۞ interop assembly ౌߏ̶൴‫ ז‬GAC ̚Ă൒̶҃൴‫ ז‬GAC ̚۞ assembly ‫ߏؠ˘̙ݒ‬͹ࢋ۞ interop assemblyĄଋΞͽֹϡ tlbimp ̳ ϡ ඀ ё ۞ ‫ ΄ ׻‬Е Ᏼ ี /primary ֽ ޽ ‫ ځ‬interop assembly ߏ ˘ ࣎ ͹ ࢋ ۞ interop assemblyĄϫ݈ፋЪ൴णᒖဩ֭՟ѣ೩ֻ‫ޙ‬ϲ͹ࢋ interop assembly ۞̰‫ޙ‬ΑਕĄUnmanaged COM Ҩ‫ڇ‬ጡΞͽ̶൴д௣ბֹϡ۰፟ጡ̚۞Їң г͞Ă൒҃ಶည݈ࢬᄲ‫۞ځ‬Ă༊ଋщ྅ᑕϡ඀ёॡυืොΊ unmanaged ̮ ІĄ

გநฟ൴Ϡ‫׻‬ฉഇ

1-21

̶൴ Windows ܑಏᑕϡ඀ё(Windows Forms Application Deployment) ၆‫ٺ‬Вϡᄬ֏ેҖᒖဩ҃֏Ă̶൴ Windows ܑಏᑕϡ඀ёᅮࢋдϫᇾ࿪ཝ ̚щ྅.NET ߛ॰Ąт‫ ڍ‬Windows ܑಏᑕϡ඀ё‫ܧ‬૱۞ᖎಏĂΪΒӣಏ˘۞ ેҖᑫĂ֤ᆃ఺࣎ Windows ܑಏᑕϡ඀ёΪᅮࢋщ྅дዋ༊۞඀ёϫᐂ̚Ą ҃т‫ ڍ‬Windows ܑಏᑕϡ඀ёΒӣ˞Вֳ۞ assemblyĂ֤ᆃ assembly υ ืֹϡ.NET ߛ॰೩ֻ۞̍‫׍‬щ྅д Global Assembly Cache ̚Ąኛણ҂.NET ߛ॰ SDK ቢ˯ᅃӄͽᒢྋՀк۞ྤੈĄ

̶൴ ASP.NET ᑕϡ඀ё(ASP.NET Application Deployment) дֹϡ Delphi 8 for .NET ‫ޙ‬ϲ˞ ASP.NET ૞९‫ޢ‬Ăଋυืԯ aspx ᑫ९ͽ ̈́ bin ϫᐂ˭Їң۞ assemblies ̶൴‫ ז‬Web Server ̚‫׍‬౯ዋ༊໤ధᝋࢨ۞ ෍ᑢϫᐂ̚Ą၆‫ ٺ‬HTTP ֽᄲĂ૞९(*.bdsproj)‫ ׶‬code-behind ᑫ९(*.pas) ̙ߏυࢋ۞ᑫ९Ąthe code-behind ᑫ९̚۞ᑕϡ඀ёទᏭ̏གྷజበᛌ‫\ז‬bin ϫᐂ˭۞ assemblies ̚˞Ą૞९‫ ׶‬code-behind ᑫ९Ϊߏࠎ˞ Delphi 8 for .NET ჯ᜕ֹϡ۞Ą˘ਠֽᄲ ASP.NET ฟ൴ˠࣶߏдώг‫ޙ‬ϲ‫׶‬ീྏ Web ૞९Ă൒‫̖ޢ‬ԯυࢋ۞ ASP.NET ᑫ९̶൴‫ ז‬HTTP Ҩ‫ڇ‬ጡ̚Ą ༊̶൴ Delphi 8 for .NET ASP.NET ᑕϡ඀ёॡĂଋ˵ᅮࢋ˘੓̶൴ Delphi 8 for .NET በᛌጡĄ఺̖ਕૉឰଋ۞ Delphi 8 for .NET ቇώᄬ֏д ASP.NET ᑕϡ඀ё̚జበᛌĄኛણ҂ Delphi 8 for .NET щ྅඀ё̚۞ DEPLOY ͛ІĄ

̶൴ ADO.NET ᑕϡ඀ё(ADO.NET Application Deployment) ༊ଋֹϡ Delphi 8 for .NET ฟ൴ྤफ़ऱᑕϡ඀ёॡĂଋᅮࢋ޿֓υࢋ۞ᑫ९ (assemblies ‫ ׶‬DLLs)‫ ז‬প ‫ ۞ ؠ‬Ҝ ཉ Ą ˭ ࢬ ۞ ܑ ॾ Е ΍ ˞ assemblies ‫׶‬ DLLs ۞ᑫ९ЩჍͽ̈́Տ˘࣎ assemblies ‫ ׶‬DLLs ᑕྍ޿֓‫۞ז‬ҜཉĄ ޿֓প‫ྤ۞ؠ‬फ़ऱેҖॡഇ assemblies ‫˭ז‬Е۞ҜཉĈ Managed Assemblies Borland.Data.Common.dll

1-22

ᑕϡ඀ёฟ൴͘Ί

Data Provider All

Location GAC

Managed Assemblies Data Provider Borland.Data.Provider.dll All Borland.Data.DB2.dll

DB2

Borland.Data.Interbase.dll Interbase

Location GAC GAC GAC

Borland.Data.Mssql.dll

MS SQL/MSDE

GAC

Borland.Data.Oracle.dll

Oracle

GAC

Borland.Data.Msacc.dll

MS Access

GAC

޿֓ྤफ़ऱ DLLs ‫۞ࢬ˭ז‬ҜཉĈ DLLs bdpint15.dll

Data Provider Interbase

Ҝཉ ຩವྮश

bdpdb215.dll

DB2

ຩವྮश

bdpmss15.dll

MS SQL/MSDE

ຩವྮश

bdpora15.dll

Oracle

ຩವྮश

bdpmsa15.dll

MS Access

ຩವྮश

Ξ̶൴۞ Delphi 8 for .NET ᑫ९(Redistributing Delphi 8 for .NET Files) ༊ֹϡ VCL.NET ߛ॰ฟ൴ᑕϡ඀ёॡĂଋֹϡֽฟ൴ᑕϡ඀ё۞͞ёົՙ ‫ؠ‬ଋᅮࢋ̶൴۞ᑫ९Ąт‫ڍ‬ଋۡତԯ VCL for .NET ඀ёಏ̮በᛌˢଋ۞ᑕ ϡ඀ё̝̚Ă֤ᆃଋ‫ܮ‬Ϊᅮࢋ̶൴ᑕϡ඀ёણ҂‫۞ז‬.NET ߛ॰γొᑫ९Ą ̙࿅Ăт‫ڍ‬ଋߏͽણ҂ VCL for .NET assemblies ۞͞ёበᛌଋ۞ᑕϡ඀ёĂ ֤ᆃଋ۞ᑕϡ඀ё૟ᅮࢋણ҂.NET ߛ॰γొᑫ९ĂBorland.Delphi.dllĂͽ ̈́ Ї ң ଋ ۞ ૞ ९ ણ ҂ ‫ ۞ ז‬Delphi 8 for .NET packages Ă ּ т Borland.VclRtl.dll ٕߏ Borland.Vcl.dllĄ ߙֱ‫ ׶‬Delphi 8 for .NET ᑕϡ඀ё࠹ᙯᑫ९ᑫ९ߏ‫̶ٺࢨצ‬൴ࢨ‫ט‬୧ഠٕ ߏॲώ൑‫̶ڱ‬൴఺ֱᑫ९Ąኛણ҂˭ࢬܑॾ̚Е΍۞ᑫ९̰टͽ‫ܮ‬ᒢྋ̶൴ ఺ֱᑫ९۞‫ޠڱ‬୧͛Ą

გநฟ൴Ϡ‫׻‬ฉഇ

1-23

ᑫ९ Deploy.txt

ᄲ‫ځ‬ ΒӣՏ˘‫ۍ‬Delphi 8 for .NET ̶൴ᑕϡ඀ё۞҂ᇋ ְีĄ

License.txt

೩ֻDelphi 8 for .NET۞‫ޠڱ‬ᝋӀ‫׶‬ཌྷચ۞ְีĄ

Readme.txt

೩ֻDelphi 8 for .NET౵‫ޢ‬Ă౵າ۞ྤੈĂ‫̚׎‬Ξਕ Βӣ˞ᇆᜩDelphi 8 for .NET̶൴ᝋӀ۞ྤੈĄ

д̰‫˯ؠ‬Ă఺ֱᑫ९ߏҜ‫ ٺ‬C:\Program Files\Borland\BDS\2.0 ϫᐂĄ

ొཌ.NET ߛ॰(Redistributing the .NET Framework) т‫ڍ‬ଋࢍထ̶൴ଋ۞ᑕϡ඀ё‫ז‬՟ѣщ྅.NET ߛ॰۞࿪ཝ̚Ă֤ᆃଋ‫ܮ‬ᅮ ࢋТॡщ྅‫ొ׶‬ཌ.NET ߛ॰ͽ̈́ଋ۞ᑕϡ඀ёĄMicrosoft ೩ֻ˞щ྅υ ࢋ.NET ߛ॰۞Ξొཌщ྅඀ёĂჍࠎ dotnetfx.exeĂ‫̚׎‬Βӣ˞.NET ᑕϡ ඀ёᅮࢋ۞Вϡᄬ֏ેҖᒖဩͽ̈́.NET ߛ॰۞̮ІĄኛણ҂.NET ߛ॰۞ SDK ቢ˯ᅃӄͽᒢྋՀкѣᙯ dotnetfx.exe ۞ྤੈĄ

ొཌௐ 3 ͞హវ(Redistributing Third Party Software) ௐ 3 ͞హវ۞ొཌᝋӀĂּт̮ІĂ̳ϡ඀ёĂͽ̈́ᅃӄᑕϡ඀ёඈĂౌߏ Ϥ೩ֻௐ 3 ͞హវ۞ᇄથٙጾѣĄдଋొཌ Delphi 8 for .NET ᑕϡ඀ё̚Β ӣ۞Їңௐ 3 ͞హវॡĂኛА‫ྙݗ‬ௐ 3 ͞ᇄથٕߏௐ 3 ͞హវ͛Іͽᒢྋт ңొཌ఺ֱహវĄ

1-24

ᑕϡ඀ёฟ൴͘Ί

ֹϡ ECO Framework ฟ൴ ᑕϡ඀ё Delphi 8 for .NET ۞ፋЪሀ‫׍̍ݭ‬ඕЪ˞నࢍ‫׶‬ฟ൴۞߹඀ĄፋЪд IDE ̚ ۞ᙷҾဦ̍‫ٺૄߏ׍‬ຽࠧ۞ UML ‫ ׶‬OCL ᇾ໤ĄEnterprise Core Object (ECO) ߛ॰၁ү˞ UML 1.4 ۞‫ۍ‬ώĂ֭ͷӀϡ˞.NET ߛ॰۞Αਕឰሀ‫ݭ‬ਕ ૉТॡдనࢍॡഇͽ̈́ેҖॡഇֹϡĄώ̈༼೩ֻ˞ UMLĂECO ߛ॰ͽ̈́ IDE ̰‫۞ޙ‬ဦԛሀ‫׶ه៍۞׍̍ݭ‬ԫఙ۞ᖎࢗĄ ኛ‫ڦ‬ຍͽෛᛇ̼͞‫ڱ‬ᑭෛ඀ёቅ۞ΑਕТॡ೩ֻдώய‫ ۞ݡ‬Enterprise ‫׶‬ Architect ‫ۍ‬ώ̚ĄЯѩᙯ‫ٺ‬ώΑਕ۞ᄲ‫ౌځ‬ዋϡ‫ۍ࣎׌఺ٺ‬ώĄҌ‫۞΁׎ٺ‬ ሀ‫̼ݭ‬Αਕ‫݋‬Ϊ΍னд Delphi 8 For .NET ۞ Architect ‫ۍ‬ώ̚ĂЯѩଂѩฟ ؕ੅ኢ۞ྤੈౌΪዋϡ‫ ٺ‬Architect ‫ۍ‬ώ̚۞ሀ‫׶׍̍ݭ‬ΑਕĄ

Delphi 8 for .NET ۞ UML Αਕ ώ༼੅ኢ Delphi 8 For .NET ፋЪ൴णᒖဩ͚̚೯۞ UML ៍‫׶ه‬ΑਕĈ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-1

y

UML Packages

y

UML ᙷҾဦ

y

‫ۏ‬Іࢨ‫ט‬ᄬ֏(Object Constraint Language -OCL)

ૄᖂ UML ៍‫ه‬ Delphi 8 for .NET ۞‫ޙ‬ሀ̍‫ֹ׍‬ϡ˞ UML ۞௑ཱིͽဦԛ̼۞͞ёֽೡࢗహ វր௚۞నࢍߛၹĄд UML ̚Ă‫ٺ‬నࢍॡഇଳ‫۞פ‬ҖજౌົϤЧ჌̙Т‫ݭ‬ ၗ۞ဦԛֽೡࢗĄּтĂଋᑕྍдֹϡ९ּဦ(Use Case Diagram)̚‫ؠ‬ཌྷֹ ϡ ۰ ֎ Ғ ͽ ̈́ ր ௚ ᅮ Ր Ă ҃ щ ྅ ᅮ Ր ‫ ؠ ߏ ݋‬ཌྷ д ̶ ൴ ဦ (Deployment Diagram)̚Ąనࢍ۰дᐖၗߛၹٕߏᙷҾဦ̚ೠ೪ր௚۞ଐԛĂ҃ᙷҾဦϒ ߏፋЪд Delphi 8 for .NET ̚۞నࢍဦԛĄ ‫ڦ‬ຍ

ώ͹ᗟஉᄏ˞ Delphi 8 for .NET ۞̰‫ ޙ‬UML ‫ޙ‬ሀ̍‫׍‬Ă఺ֱ‫ޙ‬ሀ̍‫ૄߏ׍‬ ‫ ٺ‬ECO ߛ॰ฟ൴΍ֽ۞Ąࢋۢ྽Հкѣᙯෛᛇ̼ᑭෛ඀ёቅͽ̈́тңଂЇ ң۞ Delphi ࣧؕ඀ё̚யϠᙷҾဦ۞ྤੈĂኛણ҂࠹ᙯౢ༼۞ᄲ‫ځ‬Ą

UML ᙷҾဦ ᙷҾဦТॡԷႊ˞ፋ࣎ր௚నࢍ۞ߛၹ̍‫̈́ͽ׍‬೩ֻనࢍ۰‫׶‬ฟ൴ˠࣶ௡ᖐ ̍‫֎۞׍‬ҒĄ༊ԧࣇᑭෛᙷҾဦॡĂι̯ధనࢍ۰‫׶‬ฟ൴ˠࣶд˘࣎ͧྵ੼ ۞٩෪ᆸѨ̍үĂ҃൑ᅮ஝ঘ‫ז‬প‫ؠ‬πέٕߏᄬ֏۞௟༼Ą൒҃௡јᙷҾဦ ۞Տ˘࣎ UML ̮৵‫ߏݒ‬నࢍјΞͽۡତԯ٩෪۞ր௚ሀ‫ݭ‬၆ߍјপ‫۞ؠ‬ᄬ ֏‫ݭ‬ၗٕߏֹϡၚּĄ ᙷҾဦะ൏‫ٺ‬ሀ‫ᙷ۞̚ݭ‬Ҿ̝ม۞̰ొߛၹͽ̈́ᙷҾ‫ᙷ׶‬Ҿ̝ม۞ᙯܼĄᙷ Ҿ۞̰ొߛၹΒӣ˞ᛳّ(Βӣᚶٚ۞ᛳّ)Ăͽ̈́͞‫ڱ‬ĄពϯдᙷҾဦ̝̚ ۞ᙯܼ‫ߏ݋‬ᚶٚ(д UML ̚˵Ⴭࠎ generalization)Ăͽ̈́ᙯܼ۞ాඕ(Βӣᚶ ٚ۞ాඕ)Ąଋ˵Ξͽдሀ‫̚ݭ‬ΐˢ OCL ̙តࢨ‫ྻྙߤ̈́ͽט‬ზёĂଋΞͽ дેҖॡഇ‫ײ‬Ψ ECO ߛ॰ֽૻ̼ሀ‫ؠ̚ݭ‬ཌྷ۞ࢨ‫ેߏٕט‬ҖߤྙྻზёĄ

2-2

ᑕϡ඀ёฟ൴͘Ί

‫ڦ‬ຍ

‫׶‬.NET ‫׻‬Щ۩มͽ̈́ UML package ᙷҬĂдෛᛇ̼඀ёቅဦ̚ᙷҾߏͽϨ Ғᘱᄦ۞Ă҃ ECO ࠹ᙯ۞ᙷҾ‫ֹߏ݋‬ϡเҒᘱᄦ۞Ą

‫ۏ‬Іࢨ‫ט‬ᄬ֏(OCL) OCL ߏϤ IBM ൴ण۞൑ઘүϡĂ৷ྻზё۞ᄬ֏Ąൾ‫ ޢ‬OMG ፋЪ OCL ‫ז‬ UML ۞Αਕఢॾ̝̚ĄOCL ྻზёΞͽа็ᇴࣃĂҭߏ̙ਕֹϡ OCL ֽԼ តሀ‫ؠ̚ݭ‬ཌྷ۞̮৵Ąд Delphi 8 for .NET ̚Ξͽֹϡ 3 ჌͞ёֹֽϡ OCL: y

న‫̙ؠ‬តёࢨ‫ט‬୧ІĄOCL ྻზёߏдనࢍॡഇֹϡֽన‫ᙷؠ‬Ҿᛳّٕ ߏᙷҾপّ۞ࢨ‫ט‬୧ІĄּтĂଋΞͽֹϡ OCL ֽࢨ‫ᙷࣶ̍ט‬Ҿ۞ۤົ щБᛳّ̙Ξͽߏ null ࣃĄତ඾ଋΞͽֹϡ ECO ߛ॰дેҖॡഇֽૻ ֹ̼ϡ఺࣎నࢍॡഇన‫טࢨ۞ؠ‬Ą

y

‫ޙ‬ϲࢉϠᙯܼ‫׶‬ᛳّࣃĄࢉϠᙯܼ‫׶‬ᛳّࣃߏଂ‫̮΁׎‬৵ࢍზ଀ֽ۞ ۞ĄOCL Ξͽֹϡֽ޽‫ࢍ࣎఺ځ‬ზߏтңેҖ۞ĄࢉϠ̮৵ΞͽᔖҺк ዶ۞ྻზĂՀࢦࢋ۞ߏĂࢉϠ̮৵̯ధଋд˘࣎г͞న‫ؠ‬Ћຽఢ‫݋‬Ă҃ ̙ߏдధк̙Т۞඀ёቅг͞న‫ؠ‬Ћຽఢ‫݋‬Ą

y

дᙷҾဦ̚੠ᖸᙯܼĄଋΞͽֹϡ OCL ઇࠎߤྙᄬ֏Ăଂଋ۞ ECO ‫ۏ‬ І۩ม̚а็˘Қ௑Ъ୧І۞‫ۏ‬ІĄତ඾ଋಶΞͽۡତд.NET ྤफ़ຏۢ ̮ І ̚ ព ϯ ֭ ͷ በ Ꮽ ఺ ֱ ‫ ۏ‬І Қ Е Ą ּ т Ă ఺ Җ OCL ୃ ࢗ Ĉ Person.allInstances.birthDate Ă Ξ ͽ а ็ Person ᙷ Ҿ ٙ ѣ ‫ ۏ‬І ۞ birthDate ᛳّ۞ٙѣᇴࣃĄOCL ۞ߤྙਕ˧̙ҭΞͽа็ᙷҾ۞পّ ࣃ‫׶‬ᛳّĂ˵Ξͽֹϡдଋ‫ᙷٺ‬Ҿဦ̚‫ؠ‬ཌྷ۞ᙷҾᙯܼ̝˯ĄּтĂ઄ నனдଋѣ˘࣎ Person ᙷҾĂ఺࣎ᙷҾ‫ؠ‬ཌྷ˞˘࣎Ⴭࠎ”Home”۞ᙯ ాĂ఺࣎ᙯా۞‫ݭ‬ၗߏ BuildingĂ҃ Building ѣჍࠎ Address ۞ᛳّĄ ֤ᆃ༊ଋдপ‫ ۞ؠ‬Person ‫ۏ‬Іֹ̚ϡ Home.Address ఺࣎ OCL ྻზё ॡĂଋ‫ܮ‬Ξͽх‫ ࣎఺׶פ‬Person ᙯా۞ Home ‫ۏ‬І۞ Address ᛳّࣃĄ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-3

ECO ߛ॰۞ᖎ̬ ώ͹ᗟ੅ኢ˞ ECO ߛ॰۞Αਕͽ̈́˘ਠߛၹ۞ᖎ̬Ąώ͹ᗟஉᄏ˞Ĉ y

ߛ॰۞ᖎ̬

y

ECO ۩ม۞‫ؠ‬ཌྷ‫ه៍׶‬ᖎ̬

y

ࢦࢋ۞ ECO ‫׻‬Щ۩ม

ECO ߛ॰۞ᖎ̬ Borland ၆‫ٺ‬నࢍᜭજᑕϡ඀ёฟ൴ٙଳ‫۞פ‬ඉரߏሀ‫ݭ‬ᑕྍజ၁ү֭ͷે ҖĂ̙҃ߏϤฟ൴ˠֽࣶྋᛖሀ‫ݭ‬Ą఺‫׌‬۰‫۞̚׎‬मҾߏ˘࣎ჟቁనࢍ۞ሀ ‫ݭ‬Βӣ˞֖ૉ۞ྤੈĂЯѩΞͽឰ̍‫׍‬ҋજயϠΞͽેҖ఺࣎ሀ‫ؕࣧ۞ݭ‬඀ ёĂ҃൑ᅮϤฟ൴ˠֹࣶϡˠ̍۞͞ёГᇤᆷ඀ёቅĄଳϡ఺჌͞ёฟ൴̯ ధฟ൴ˠࣶдሢଉ۞ Delphi ᒖဩ̚૞͕‫ٺ‬ሀ‫۞ݭ‬నࢍ̍үĄ ેҖሀ‫ݭ‬ຍᏜ඾дనࢍॡഇ‫ޙ‬ϲ۞ሀ‫ݭ‬ΞͽԆፋ۞дેҖॡഇӔன΍ֽĄৌ ϒ۞నࢍᜭજహវ̍඀߹඀̙ΪΒӣ˞‫ޙ‬ϲሀ‫ݭ‬ĂՀᑕྍдٙѣ۞ᑕϡ඀ё Ϡ‫׻‬ฉഇ̚ჯ᜕‫̼ૻ׶‬ሀ‫۞ݭ‬ԆፋّĄDelphi 8 for .NET ሀ‫׍̍ݭ‬ะ̚౵ࢦ ࢋ۞८͕‫ ߏܮ‬ECO ߛ॰ĂЯѩᒢྋ ECO ߛ॰дనࢍॡഇ‫ે׶‬Җॡഇ೩ֻ۞ Αਕ‫ܧܮ‬૱۞ѣᑒӄĄ

నࢍॡഇ͚೯Αਕ

2-4

y

ϖᜈᐼх፟‫(ט‬Persistence mechanism (ᙯాྤफ़ऱٕߏ XML ᑫ९) )

y

ྤफ़ऱ௡ၗ(Database configuration )

y

ჩࢋ‫ޙ‬ϲ‫׶‬ႊ̼(Schema creation/evolution )

y

រᙋሀ‫(ݭ‬Model validation )

y

OCL ྻზёበᏭጡ(OCL expression editor )

y

‫ۏ‬І-ᙯా၆ߍ(Object-relational mapping )

ᑕϡ඀ёฟ൴͘Ί

ેҖॡഇ͚೯Αਕ y

Undo/Redo ፟‫ט‬

y

OCL ߤྙ(OCL querying )

y

OCL ྻზёેҖរᙋ(OCL evaluation )

y

ԣᐼ‫ۏ‬І(Caching of objects )

y

ࢎዦ፟‫(ט‬Subscription mechanism )

y

‫ۏ‬І‫ۍ‬ώଠ‫(ט‬Object versioning )

y

Ϲ‫ٽ‬఍ந(Transactions )

y

̰‫ాޙ‬ඕ‫ז‬.NE UI ଠ‫ྤ۞ีט‬फ़ຏۢਕ˧(Binding to data-aware .NET UI controls)

ECO ۩ม ECO ۩ม޽۞ߏΒӣ‫ۏ‬І۞टጡ(container)ĄдેҖॡഇ ECO ۩มΒӣ˞ ଋ۞ሀ‫ؠݭ‬ཌྷ۞ৌ၁ᙷҾ‫ۏ‬ІĄଋΞͽԯ ECO ۩มຐညјߏሀ‫۞ݭ‬၁ᅫᇹ ּ(Instance)Ăಶည‫ۏ‬ІߏᙷҾ۞ᇹּ˘ᇹĄΒӣд ECO ۩ม̚۞‫ۏ‬Іჯ᜕ ˞ᅳાপّ(ᛳّ‫ؠ̈́ͽ)ڱ͞׶‬ཌྷдሀ‫۞̚ݭ‬ᙯܼĄ ઇࠎ‫ۏ‬І۞टጡĂECO ۩ม೩ֻ˞ԣᐼͽ̈́Ϲ‫ڇٽ‬ચĄд ECO ۩ม̚ĂΩ γ˘࣎Ⴭࠎϖᜈ၆ߍ‫ۏ‬І(persistence mapper)జֹϡֽઇࠎϖᜈᐼхᆸ(Ξ ͽߏᙯాྤफ़ऱٕߏ XML ᑫ९)ͽ̈́ሀ‫ؠ̚ݭ‬ཌྷ۞ᙷҾ۞ᇹּ໛఼፜ሇĄ༊ ଋд IDE ̚௡ၗ ECO ۩มॡĂଋ˵Ξͽдଋ۞ UML ሀ‫̚ݭ‬Ᏼፄଋԓ୕д ECO ۩มֹ̚ϡ۞ϖᜈᐼх‫ڇ‬ચĄ

Borland.ECO ‫׻‬Щ۩ม ώ̈༼Βӣ˞༊ଋֹϡ ECO ߛ॰ॡົֹϡ۞ᙷҾĂ̬ࢬͽ̈́‫ݭ΁׎‬ၗ۞ᖎ ̬ྤੈĄధкଋ‫ ׶‬ECO ߛ॰̢જ۞̍үົϤ IDE ҋજயϠ඀ёቅֽᑒӄଋĄ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-5

ҭߏ༊ଋдેҖॡഇԓ୕х‫ פ‬ECO ۞‫ڇ‬ચॡĂଋಶυืᏐҋ‫ ׶‬ECO ߛ॰̢ જĂּтֹϡ OCL ྻზёរᙋጡٕߏֹϡ Undo/Redo ۞፟‫ט‬ඈĄ

Borland.Eco.Services Borland.Eco.Services ‫׻‬Щ۩มߏֹϡ ECO ߛ॰ેҖॡഇΑਕ۞͹ࢋ̬ࢬĄ ఺ֱ‫ڇ‬ચΒӣ˞Ĉ y

IStateServiceĄ೩ֻ˞ՙ‫࣎˘ؠ‬প‫ۏ۞ؠ‬Іٕߏপّҋଂ˯ѨՀາ‫ྤז‬फ़ ऱ̝‫ߏޢ‬ӎѣЇң۞ԼតĄ

y

IPersistenceServiceĄ೩ֻ˞ ECO ۩ม̚ϖᜈᐼх፟‫׶ྙߤט‬ᐼх۞‫ڇ‬ ચ‫ב‬ёĄ

y

IDirtyListServiceĄ೩ֻ˞ҋଂ˯Ѩྤफ़ऱՀາ̝‫ޢ‬Լត۞‫ۏ‬І۞ߤྙ‫ڇ‬ ચ‫ב‬ёĄ

y

IExtentServiceĄߤྙ ECO ۩ม̚প‫ؠ‬ᛳ‫ᙷٺ‬Ҿ۞ٙѣ‫ۏ‬ІĄ

y

IObjectFactoryServiceĄ೩ֻ˞ᖣϤሀ‫ֹݭ‬ϡ۞ UML ‫ݭ‬ၗր௚‫ޙ‬ϲপ‫ؠ‬ ᙷҾ‫ۏ‬І۞‫ڇ‬ચĄ༊ᅮࢋ‫ޙ‬ϲາ۞‫ۏ‬ІᇹּॡĂଋΞͽֹϡ IObjectFactoryService ̬ࢬٕߏଋ‫ؠ‬ཌྷ۞ᙷҾ۞‫ޙ‬ၹ‫ב‬ёĄ

y

IOclServiceĄ೩ֻ˞ેҖ OCL ྻზё֭ͷа็ඕ‫ڇ۞ڍ‬ચĄ

y

IVersionServiceĄ೩ֻдд ECO ۩ม̚‫ޙ‬ϲ‫׶‬ᐼх‫ۏ‬І‫ۍ‬ώ۞‫ב‬ёĄ‫צ‬ ‫ۍ‬ώଠ‫ۏ۞ט‬Іጾѣ‫ۍ‬ώᇾចĂ‫ۍ‬ώᇾចߏଂ 1 ฟؕĄ‫ۍצ‬ώଠ‫ۏ۞ט‬ І͚೯к࣎Ă઱᝝۞ᇹּͽ̈́˘࣎ৌ၁ᇹּ۞‫ڇ‬ચĄጾѣ CurrentVersion ‫ۍ‬ώበཱིᇾច۞ᇹּ̖ߏৌ၁ĂΞᆷˢ۞‫ۏ‬ІᇹּĄ

y

IUndoServiceĄ೩ֻ˞͚೯ ECO ۩ม̚ซҖ Undo/Redo Αਕ۞‫ב‬ёĄ

༊ଋ‫ޙ‬ϲາ۞ ECO ᑕϡ඀ёॡĂIDE ‫ࠎົܮ‬ଋҋજ‫ޙ‬ϲ EcoSpace ۞̄ᙷ ҾĂ҃ଋΞͽᖣϤ‫ײ‬Ψ EcoSpace ̄ᙷҾ۞͞‫ֹֽڱ‬ϡ఺ֱ‫ڇ‬ચ(ଋ˵Ξͽд னѣ۞ᑕϡ඀ё̚ΐˢາ۞ EcoSpace ̄ᙷҾ)Ą

2-6

ᑕϡ඀ёฟ൴͘Ί

Borland.Eco.Handles Borland.Eco.Handles ‫׻‬Щ۩มΒӣ˞Ξͽ‫ؠ‬ཌྷͽ̈́‫ ׶‬ECO ۩ม̢જ۞̮ ІĄд఺࣎‫׻‬Щ۩ม̚۞̮ІΞΞͽᕩৼј 3 ჌჌ᙷĈ y

DefaultEcoSpace ᙷҾ

y

OclVariables ᙷҾ

y

ElementHandle ٩෪ᙷҾ

ଋ̙ਕ‫ޙ‬ϲ‫ޙ‬ϲ DefaultEcoSpace ‫ۏ‬ІĂ̙࿅༊ଋֹϡ ECO ᑕϡ඀ёჟី ٕߏ ECO ۩มჟីॡ IDE ົҋજᑒӄଋ‫ޙ‬ϲ DefaultEcoSpace ۞̄ᙷҾĄ ElementHandle ᙷҾߏٙѣሀ‫̮ݭ‬৵۞٩෪ॲᙷҾĄHandle Ξͽ΃ܑಏ˘ ۞ᇴࣃĂٕߏ˘࣎ҚЕᇴࣃĄElementHandle ̄ᙷҾυื၁ү IlistSource ̬ ࢬĂтѩ˘ֽ఺ֱ̄ᙷҾಶΞͽዋЪֹϡд.NET ྤफ़ᘭඕߛၹ̚ઇࠎྤफ़ ֽ໚Ą OclVariables ᙷҾ̯ధଋд OCL ྻზё̚‫ޙ‬ϲតᇴĄ఺ֱតᇴಶΞͽᘭඕ ֭ͷͅߍ ECO ̚၁ᅫ۞̮৵ handle ᇴࣃĄ

Borland.Eco.ObjectRepresentation ଋΞͽֹϡ‫׌‬჌͞‫ֽڱ‬х‫פ‬ଋ۞ᑕϡ඀ё̚ ECO ۩ม̝̚۞‫ۏ‬ІĄ౵ۡତ ۞͞ёಶߏᖣϤᙷҾဦҋજயϠ۞ࣧؕ඀ёֽх‫ᙷפ‬Ҿ۞পّͽ̈́͞‫ڱ‬Ą Borland.Eco.ObjectRepresentation ‫׻‬Щ۩ม೩ֻ˞ௐ 2 ჌Ă఼ϡё۞͞ёֽ х‫ۏפ‬ІĂֹϡ Borland.Eco.ObjectRepresentation ̯ధଋ̙ᅮࢋֹϡҋજ யϠ۞඀ёቅ‫ؠ‬ཌྷ۞‫ݭ‬ၗĄ ఼ϡёх‫͞פ‬ёᖣϤٙѣ ECO ᙷҾౌมତ၁ү۞̬ࢬֽԆј(఺ֱϤᙷҾဦ ͽ̈́඀ёቅயϠ̍‫׍‬ҋજᑒଋ၁ү఺ֱ̬ࢬ)Ąಶည ObjectRepresentation ఺ ࣎ЩჍᔳӣ۞ຍཌྷ˘ᇹĂ఺ֱ̬ࢬͽ ECO ۩ม̰ొ۞ܑϯ͞ёᏮ΍‫ۏ‬ІĂ ଋົֹϡ ObjectRepresentation х‫ۏפ‬І۞ΞਕࣧЯ̝˘ಶߏт‫ڍ‬ଋຐ‫ޙ‬ϲ ‫׶‬Їң ECO ۩ม̢જ۞ֹϡ۰̬ࢬଠ‫ีט‬Ą

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-7

౵૱ֹϡ ObjectRepresentation ۞ௐ 2 ࣎ࣧЯ‫ߏ݋‬༊ଋԓ୕ֹϡ ECO ۞‫ڇ‬ ચĂּтϖᜈᐼхĂUndo/RedoĂ‫ۏ‬І‫ۍ‬ώଠ‫ ̈́ͽט‬OCL ྻზёរᙋඈĄ ఺ֱ‫ڇ‬ચߏ‫ؠ‬ཌྷд Borland.Eco.Services ‫׻‬Щ۩ม̚Ă֭ͷΞͽᖣϤ ECO ۩ ม‫ۏ‬Іֽ೩ֻĄ఺ֱ‫ڇ‬ચ API ତ‫ צ‬ObjectRepresentation ̬ࢬઇࠎણᇴĂ֭ ͷа็ ObjectRepresentation ણ҂ࣃĂତ඾ଋಶΞͽᖣϤ఺̬࣎ࢬ‫ײ‬Ψ͞ ‫ڱ‬ĂٕߏᖣϤԯ఺̬࣎ࢬᖼត‫ݭ‬ၗаሀ‫ؠݭ‬ཌྷ۞‫ݭ‬ၗĄ˭ࢬ۞ဦԛពϯ˞ ObjectRepresentation ‫׻‬Щ۩ม̚‫ؠ‬ཌྷ۞̬ࢬĄ

ॲ̬ࢬ IElement Βӣ ContentType পّĂ఺࣎পّΞͽឰଋᑭߤͽ‫ܮ‬ՙ‫ؠ‬ тңᖼត̬ࢬણ҂۞‫ݭ‬ၗĄIElement ΃ܑ˞ٙѣેҖॡഇ۞̮৵Ă఺࣎Β߁ ˞‫ۏ‬ІĂᛳّĂᙷҾ̝ม۞ᙯܼĂͽ̈́ૄᖂ‫ݭ‬ၗĂּтфҚ‫׶‬टጡᙷҾඈĄ ଋΞͽຐညᙷҾဦ̚‫ؠ‬ཌྷ۞ሀ‫ ׶ݭ‬ECO ߛ॰̝ม۞၆ߍࠎ˘࣎Ξ΃ܑٙѣ ̮৵۞఼ϡटጡᙷҾĄ఺ֱ̮৵Ξͽ΃ܑૄᖂ‫ݭ‬ၗĂ‫ۏ‬ІĂٕߏΒӣ‫̮΁׎‬ ৵۞टጡᙷҾĄ ּтĂଋ۞ሀ‫̚ݭ‬Βӣ˞˘࣎ Person ᙷҾĄଋಶΞͽຐည఺࣎ᙷҾӈߏ˘ ࣎ ट ጡ ᙷ Ҿ Ă ‫ ̚ ׎‬Β ӣ ˞ প ّ ะ Ъ Ă ּ т personName Ă home ‫׶‬ ownedBuildingsĄPersonName পّߏфҚ(ૄᖂ‫ݭ‬ၗ)Ăhome পّ‫ܑ΃݋‬ Ωγ˘࣎ᙷҾ۞‫ۏ‬Іᇹּ(఺࣎‫ۏ‬І˵Βӣ˞ιҋ̎۞পّะЪ)Ă҃ ownedBuildings ‫ۏߏ݋‬ІटጡĄ˭ࢬ۞ဦԛពϯ˞ࣧؕ඀ё‫ކ‬Ә‫ ׶‬ECO ̝ ̚۞‫ۏ‬І΃ܑ͞ё۞၆ߍĈ

2-8

ᑕϡ඀ёฟ൴͘Ί

Borland.Eco.Subscription Borland.Eco.Subscription ‫׻‬Щ۩มΒӣ˞ ECO ߛ॰̚ࢎዦ‫ڇ‬ચ۞̬ࢬ‫ᙷ׶‬ ҾĄᖣϤࢎዦ‫ڇ‬ચĂଋΞͽࢋՐ ECO ༊‫ۏ‬І۩ม̚প‫ְ۞ؠ‬І൴Ϡॡ็ਖ਼ ˘఼࣎ۢĄּтĂଋΞͽࢋՐߛ॰дপ‫ۏؠ‬І(ٕߏ˘ཏ‫ۏ‬І)Լតॡ็ਖ਼఼ ۢੈिĄд఺࣎‫׻‬Щ۩ม̚۞̬ࢬ‫ᙷ׶‬ҾΒӣ˞Ĉ y

ISubscriberĄ ଋυืдٙѣᅮࢋઇࠎࢎዦ۞ᙷҾ̚၁ү఺̬࣎ࢬĄ

y

SubscriberAdapterBaseĄ ༊ଋ̙ຐۡତ၁ү ISubscriber ̬ࢬॡĂଋΞ ͽֹϡ఺࣎٩෪ૄᖂᙷҾĄ

఼૱ଋົֹϡ SubscriberAdapterBase ᙷҾĂኑྶι۞ DoReceive ͞‫ڱ‬ಶಶ ည˭ࢬ۞඀ёቅ˘ᇹĈ uses Borland.Eco.Subscription, Borland.Eco.Services; type TMySubscribingClass = class private type TMySubscriberAdapter = class(SubscriberAdapterBase) strict protected procedure DoReceive(sender: System.Object; e: EventArgs); override; end; private FmyAdapter: TMySubscribingClass.TMySubscriberAdapter; FextentService: IExtentService; procedure ExtentServiceChanged;

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-9

procedure RespondToEvent; end; procedure TMySubscribingClass.TMySubscriberAdapter.DoReceive(sender: System.Object; e: EventArgs); begin // ActualSubscriber is a property of SubscriberAdapterBase. (ActualSubscriber as TMySubscribingClass).RespondToEvent; end; procedure TMySubscribingClass.ExtentServiceChanged; begin // Drop old subscriptions if any... if FmyAdapter <> nil then FmyAdapter.Deactivate(); FmyAdapter := TMySubscriberAdapter.Create(self); // Place a subscription FextentService.SubscribeToObjectAdded(FmyAdapter, nil); end; procedure TMySubscribingClass.RespondToEvent; begin // Add code to handle the event end;

Borland.Eco.Persistence Borland.Eco.Persistence ‫׻‬Щ۩มΒӣ˞Ξͽԯ ECO ۩ม̚۞‫ۏ‬Іᐼх‫ז‬ ჃჄ۞ᙷҾĄECO ߛ॰͚೯˞ᙯాྤफ़ऱٕߏ XML ᑫ९۞ϖᜈᐼхΑਕĄ д఺࣎‫׻‬Щ۩ม̚ѣˬ̮࣎ІߏপҾѣϡ۞Ĉ y

PersistenceMapperBdpĄ ఺̮࣎ІΞͽᖣϤ Borland Data Provider ᐼ х‫ۏ‬І‫ז‬ᙯాྤफ़ऱ̚Ą

y

PersistenceMapperSqlServerĄ఺̮࣎Іֹϡ SqlConnection ̮Іֽ೩ ֻྤफ़ऱాඕΑਕĄ

y

PersistenceMapperXMLĄ ఺̮࣎ІΞͽԯ‫ۏ‬Іᐼх‫ ז‬XML ᑫ९̚Ą

ଋ Ξ ͽ ԯ ఺ ֱ ̮ І ‫ ٳ‬Ѣ ‫ ז‬ECO ۩ ม ۞ న ࢍ छ ̚ Ă ֭ ͷ న ‫ ؠ‬ι ࣇ ۞ PersistenceMapper পّࠎᑕϡ඀ёֹϡ۞ ECO ۩มӈΞĄ ੵѩ̝γĂBorland.Eco.Persistence ‫׻‬Щ۩มΒӣ˞ˬ̬࣎ࢬΞͽԯᙷҾ۞ ᛳّ၆ߍ‫ߏٕ࣎˘ז‬к࣎ྤफ़ऱ۞᛼ҜĄ఺ֱ̬ࢬߏĈ

2-10

ᑕϡ඀ёฟ൴͘Ί

y

IAttributeMapping

y

ISingleColumnAttributeMapping

y

INonBooleanBooleanMapping

̰ಷд Borland.Eco.Persistence ̚۞̄‫׻‬Щ۩มΒӣ˞၁ү၆ߍᛳّ‫ྤז‬फ़ ऱ۞ᙷҾĄ

Borland.Eco.UmlRt Borland.Eco.UmlRt ‫׻‬Щ۩ม၁ү˞ UML 1.4 ‫ۍ‬ώ̚۞ૄᖂ package ۞̄ะ ЪĄд఺࣎‫׻‬Щ۩ม̚۞̬ࢬߏֹϡֽх‫פ‬௡јሀ‫ݭ۞ݭ‬ၗր௚۞ UML ̮ ৵ĄΒӣд‫ݭ‬ၗր௚̚۞ྤफ़‫ݭ‬ၗΞͽᖣϤ UmlRt ‫׻‬Щ۩ม̚۞̬ࢬֽх ‫פ‬ĄּтĂ఺࣎‫׻‬Щ۩มΒӣ˞ IClassifier ĂIClass Ă‫ ׶‬Iattribute ̬ࢬć ఺ֱ̬ࢬΞͽֹϡֽх‫ݭפ‬ၗր௚۞ metadataĄ ౵˯ᆸ۞̬ࢬߏ IEcoTypeSystemĄଋΞͽֹϡ 2 ჌͞‫ֽڱ‬х‫ݭפ‬ၗր௚Ĉ y y

EcoSpace ᙷҾ۞ TypeSystem পّĄ ᖣϤ၁ү IEcoServiceProvider ̬ࢬ۞ᙷҾ GetEcoService ͞‫ڱ‬Ą

˘όଋ‫ ˞଀פ‬IEcoTypeSystemĂଋ‫ܮ‬Ξͽᑭߤι۞পّĂּт AllClassesĂ ఺࣎পّΞͽа็ٙѣ‫ؠ‬ཌྷдሀ‫ ۞̚ݭ‬UML ᙷҾ۞ metadataĄ

ፋЪ۞ሀ‫׍̍ݭ‬ᖎ̬ ώ͹ᗟ੅ኢ˞ፋЪд Delphi 8 for .NET ̚۞ሀ‫ݭ‬ΑਕĈ y

ECO ૞९‫׶‬ჟី

y

Model View ෛ඄

y

UML ᙷҾဦ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-11

Delphi 8 for .NET ۞ፋЪ̍‫׍‬ ᖣϤ ECO ߛ॰ͽ̈́ፋЪ۞ Together UML ԫఙĂDelphi 8 for .NET IDE ೩ ֻ˞˘௡ሀ‫̯׍̍ݭ‬ధଋ‫ޙ‬ϲᙷҾဦĂҋજயϠࣧؕ඀ёቅĂ‫ޙ‬ϲྤफ़ऱჩ ࢋͽ̈́ႊซྤफ़ऱჩࢋĂ‫׶‬Հк‫۞΁׎‬ΑਕĄ

ECO ૞९‫׶‬ჟី IDE ̚ጾѣα࣎඀ёቅயϠჟីΞͽᑒӄଋฟ൴ ECO ᑕϡ඀ёĄ y

ECO ᑕϡ඀ёĄ఺࣎ჟីົࠎᑕϡ඀ё‫ޙ‬ϲ˘̰࣎‫ ۞ؠ‬ECO ۩มâ ࣎ॲ UML packageĂͽ̈́˘࣎ ECO ෛ඄ܑಏĄ

y

ECO ෛ඄ܑಏĄѩჟីົдଋ۞૞९̚ΐˢ˘࣎ ECO ෛ඄ܑಏĄ

y

ECO ۩มĄѩჟីົдଋ۞૞९̚‫ޙ‬ϲ˘࣎າ۞ DefaultEcoSpace ̄ᙷ ҾĄ

y

ECO UML PackageĄѩჟីົдଋ۞૞९۞ॲ UML package ̚ΐˢ˘ ࣎າ۞ packageĄଋ˵ΞͽۡତଂᙷҾဦ̚ΐˢາ۞ UML packageĄ

Ϥ఺ֱჟីயϠ۞඀ёቅົΒ߁ٙѣ ECO ࠹ᙯ۞υࢋ.NET ᛳّͽ̰̈́‫۞ؠ‬ ၁ү̬ࢬĄ

Model View ෛ඄ ‫׶‬૞९გநࣶ̙Т۞ߏĂModel View ෛ඄̯ధଋॲፂᙷҾ̝ม۞ទᏭ,ᙯܼ ͽ̈́ࣧؕ඀ё̚‫̮۞΁׎‬৵ᙯֽܼᕱᜓଋ۞૞९ĄModel View ෛ඄ֹϡ˞ ‫׌‬჌͞‫ֽڱ‬Ӕன఺ֱᙯܼĈෛᛇ̼Ӕன඀ёቅĂ఺჌͞ёਕૉӔனЇң Delphi ඀ёቅࠎ UML ᙷҾဦĂͽ̈́ͽෛᛇ̼͞ёӔன ECO ۞ package ‫׶‬ ᙷҾĄෛᛇ̼Ӕன඀ёቅΑਕਕૉବႿࣧؕ඀ё֭ͷயϠ̮৵Ăּт‫׻‬Щ۩ ม‫ᙷ׶‬ҾĂͽ̈́఺ֱ̮৵̝ม۞ᙯܼĄЯѩଋΞͽԯෛᛇ̼Ӕன඀ёቅ༊ј ଋ۞඀ёቅ̝มទᏭᙯܼ۞෹৺ะЪĄЯࠎιਕૉග̟ଋଂనࢍ۞֎‫ֽޘ‬ᑭ ෛ඀ёቅĂෛᛇ̼Ӕன඀ёቅ˵ົҋ൒۞Ӕன΍ ECO ߛ॰ࡦ‫۞ޢ‬၁ү௟༼Ą ˘࣎‫ޝ‬р۞ቑּಶߏ UML package ၁ᅫ˯ߏϤᙷҾֽ၁ү۞Ă̙҃ߏညଋ Ξਕᄮࠎ۞ߏֹϡ.NET ‫׻‬Щ۩มֽ၁ү۞Ąдෛᛇ̼Ӕன඀ёቅဦ̚Ăଋ

2-12

ᑕϡ඀ёฟ൴͘Ί

ົ࠻‫ ז‬UML package дଋ۞૞९‫׻‬Щ۩ม̚ߏͽᙷҾֽܑϯĄ൒҃д ECO ᙷҾဦ̚Ăଋ‫ ז࠻ົ݋‬UML package ۞၁ᅫĂͽទᏭ͞ёӔன۞ඕ‫ڍ‬Ą༊ ฟ൴ ECO ᑕϡ඀ёॡĂଋᑕྍ੃଀ֹϡෛᛇ̼Ӕன඀ёቅဦֽᑭෛ૞९̚ ‫ ܧ‬ECO ۞̮৵Ą д Model View ෛ඄̚Ăٙѣଋ۞ ECO UML package ‫ᙷ׶‬Ҿౌົд૞९ፘ ۞ ౵ ˯ ᆸ ॲ package ̚ ΍ ன Ą ॲ UML package ۞ ̰ ‫ ؠ‬Щ Ⴭ ߏ CoreClassesPackageĄॲ UML package ༼ᕇ(ͽ̈́ٙѣдι̝˭۞ UML package)ົᖣϤι۞ဦည‫˘׶‬ਠ.NET ‫׻‬Щ۩ม༼ᕇડҾ΍ֽĄဦည

΃ܑ

˞.NET ‫׻‬Щ۩มĂ҃఺࣎ဦည ‫ ࣎˘ܑ΃݋‬UML packageĄ Тᇹ۞ĂECO ᙷҾ˵ֹϡ̙Т۞ဦညͽ‫˘׶ܮ‬ਠ۞ᙷҾઇડ̶Ą఺࣎ဦည ΃ܑ˘ਠ۞ᙷҾĄ఺࣎ဦည ‫ ܑ΃݋‬ECO ࠹ᙯ۞ᙷҾĄ

ᙷҾဦ ፋЪ۞ UML ဦԛ̍‫͚׍‬೯˞˭ࢬ۞̍үĈ y

‫ޙ‬ϲ UML packages

y

ᙷҾᙷҾ

y

ᘱᄦᙷҾ̝ม۞ᚶٚᙯܼ

y

ᘱᄦᙷҾ̝มᙯా

y

дဦԛ̮৵̚ΐˢ౯ො͛

y

дᙷҾ̚ΐˢᛳّ‫ڱ͞׶‬

ᙷҾဦ˵ߏ˘჌ෛᛇ̼నࢍछ̬ࢬĄଋΞͽд఺࣎ဦֹ̚ϡ̍‫׍‬ሹֽΐˢາ ۞ UML ̮৵ĂΞͽΒ߁ᙯా‫׶‬౯ො͛ĄଋΞͽдဦ̚Ᏼፄ UML ̮৵֭ͷ д ‫ ۏ‬І ᑭ ෛ ጡ ̚ న ‫ ؠ‬ι ࣇ ۞ প ّ ࣃ Ą ༊ ଋ д ᙷ Ҿ ဦ ̚ ̍ ү ॡ Ă Delphi 8 for .NET ‫ົܮ‬ҋજயϠ၁ү఺࣎ሀ‫ ۞ݭ‬ECO ࠹ᙯࣧؕ඀ёቅĄ ଋΞͽଂ Model View ෛ඄̚ฟୁᙷҾဦĄՏ˘࣎ଋనࢍ۞ UML package ౌጾѣιҋ̎۞͹ᙷҾဦĂଋ˵ΞͽӁੵ఺࣎ᙷҾဦ(˵Ξͽࢦາ‫׻‬Щ)Ąᙷ Ҿဦ༼ᕇົд Model View ፘ̚ᕩৼдιࣇ۞ UML package ̚ĄUML

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-13

package ۞͹ᙷҾဦົពϯ఺࣎ package ٙѣΒӣ۞̰टćιົពϯٙѣ۞ ̄ packageĂᙷҾĂͽ̈́ package ̚хд۞ᙯܼĄ༊ଋд UML package ̚ ΐˢາ۞̮৵ॡĂι‫ົܮ‬ҋજ۞Ӕனд͹ᙷҾဦ̚Ą т‫ڍ‬ଋຐពϯ఺࣎ package ̚۞ొЊ̄ᙷҾĂଋ˵Ξͽд UML package ̚ ‫ޙ‬ϲௐ˟ᙷҾဦĄ‫׶‬͹ᙷҾဦ̙Т۞ߏĂଋд package ̚ΐˢ۞າ̮৵̙ົ ΍னдௐ˟ᙷҾဦ̚Ąௐ˟ᙷҾဦ˵Ξͽࢦາ‫׻‬Щ‫׶‬ӁੵĄ Їңଋд͹ᙷҾဦٕߏௐ˟ᙷҾဦ̚ΐˢ۞̮৵ౌົ΍னдΒӣι۞ UML package ̚Ąࢋពϯ‫ ΁׎‬UML package ̚۞̮৵Ăଋυื‫ޙ‬ϲాඕ‫ֱ఺ז‬ ̮৵۞ଥशĄଋΞͽдᙷҾဦ̚۞̰टΑਕܑ̚Ԇј఺࣎̍үĄଥशົдဦ ̚ͽ˘࣎дν˭֎ጾѣ̈቏ᐝ۞ဦညֽ΃ܑĄ˘ό‫ޙ‬ϲ˞ଥशĂଋ‫ܮ‬Ξͽд ι‫ ΁׎׶‬UML package ጾѣᙷҾม‫ޙ‬ϲᙯా˞Ą

ฟ൴ ECO ᑕϡ඀ё дώ̈༼̚૟ᄲ‫ځ‬тңֹϡ Delphi 8 for .NET ̚۞ ECO ߛ॰ֽฟ൴ᑕϡ඀ ёĂ֭ͷ૟ֹϡ˘࣎ᗖ‫ݭ‬ቑּሀ‫ֽݭ‬ᄲ‫ ځ‬ECO ۞៍‫ه‬Ăߛၹͽ̈́тңֹϡ ECOĄ˭ࢬߏώቑֹּϡ۞హវĈ y

Delphi 8 for .NET ۞ ECO ߛ॰

y

MS SQL Server 2000

ECO ᑕϡ඀ё۞ฟ൴Վូ‫ߛ׶‬ၹ дฟ൴ ECO ᑕϡ඀ё̝݈ĂАᒢྋ ECO ᑕϡ඀ё۞៍‫ܧߏه‬૱ѣᑒӄ۞Ą ˘ਠֽᄲฟ൴ ECO ᑕϡ඀ёົགྷ࿅˭ဦୃࢗ۞ 5 ̂ՎូĈ

2-14

ᑕϡ඀ёฟ൴͘Ί

Ϥ‫ ٺ‬ECO ߏૄ‫ ٺ‬MDA/DDA ۞హវ̍඀ࠎฟ൴८͕៍‫ه‬ĂЯѩ ECO ᑕϡ ඀ёౌߏଂనࢍᑕϡ඀ё۞ሀ‫ݭ‬ฟؕĂ఺‫˘׶‬ਠ۞ฟ൴͞ё̙ТĄనࢍр˞ ᑕϡሀ‫ޢ̝ݭ‬ĂಶΞͽᖣϤ ECO ۞ OR-Mapping ፟‫ט‬ᘭඕሀ‫ྤ׶ݭ‬फ़ֽ໚Ą ௐ 3 ࣎Վូ‫ֹߏ݋‬ϡ ECO ̮І‫ ׶‬OCL ֽᘭඕሀ‫׶ݭ‬ᑕϡ඀ёĂ౵‫ޢ‬ฟ൴ˠ ࣶГֹϡ˘ਠ۞.NET ̮Іాඕ ECO ̮І֭ͷֹϡ Delphi ඀ёᄬ֏ᇤᆷᑕ ϡ඀ёĄ ኛ‫ڦ‬ຍĂECO ᑕϡ඀ё۞ฟ൴ߏ˘࣎ೈᒖё۞ฟ൴߹඀Ă఺ຍᏜฟ൴ˠࣶд ซҖ ECO ᑕϡ඀ёฟ൴ॡΞͽд˘࣎ล߱Ԇј̝‫ޢ‬ĂГѨа‫ז‬నࢍ۞ ECO ሀ‫̼ૻֽݭ‬ሀ‫ݭ‬Ă֭ͷГѨ۞ֹϡ̝‫۞ޢ‬ՎូֽซҖ ECO ᑕϡ඀ёฟ൴۞ ̍үĄECO ̯ధฟ൴ˠࣶԼត˞ሀ‫ޢ̝ݭ‬ਕૉҋજ۞Հາྤफ़ֽ໚̚۞ჩࢋ ֽລ੨࣒Լ࿅۞ሀ‫ݭ‬Ą д˘࣎ ECO ᑕϡ඀ё̚Ăฟ൴ˠࣶߏֹϡ Delphi ඀ёቅፆү˘࣎Ⴭࠎ ECOSpace ̝̚۞‫ۏ‬ІĄ༊ฟ൴ˠࣶ‫ޙ‬ϲ ECO ሀ‫ᙷ۞̝̚ݭ‬Ҿ‫ۏ‬ІॡĂ఺ֱ ‫ۏ‬ІົϤ ECOSpace გநĂECOSpace ೩ֻ˞ԣᐼ‫ ׶‬Two-Phase Commit ۞ ΑਕĄฟ൴ˠࣶ˵Ξͽֹϡ OCL ֽߤྙ‫׶‬ፆү ECOSpace ̝̚۞‫ۏ‬ІĄ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-15

༊ฟ൴ˠࣶᅮࢋԯ ECOSpace ̚ளજ۞‫ۏ‬Іྤफ़Հາаྤफ़ֽ໚ॡĂ˵Ξͽ ‫ײ‬Ψ ECOSpace ۞͞‫ڱ‬ឰ ECOSpace ҋજॲፂιგந۞‫ۏ‬Іྤੈԯυࢋ۞‫ۏ‬ Іྤफ़Հາаྤफ़ֽ໚̚Ą˭ဦពϯ˞ ECO ᑕϡ඀ё۞ໄ៍ߛၹĄ

ତ˭ֽώ༼૟ֹϡ ECO ֽฟ൴˘࣎ቑּቢ˯ಡЩր௚Ă֭ͷ૟ֹϡ࿉ᒖё ۞ฟ൴͞ёֽ̙ᕝ۞Լච఺࣎ቑּ ECO ᑕϡ඀ёĄ

‫ޙ‬ϲ ECO ᑕϡ඀ё д Delphi 8 for .NET ፋЪ൴णᒖဩ̚ᕇᏴ File|New|Other…Αਕܑୁજ New Items ၆ྖ஼Ăд Delphi for .NET Projects ༼ᕇ̚Ᏼፄ ECO Windows Forms Application ဦညֽ‫ޙ‬ϲ ECO ᑕϡ඀ёĈ

2-16

ᑕϡ඀ёฟ൴͘Ί

ᕇᏴ˞ ECO Windows Forms Application ဦည̝‫ ޢ‬Delphi 8 for .NET ົҋ જ‫ޙ‬ϲ ECO ᑕϡ඀ё۞੻ၹĂΒӣ˞˘࣎ ECO Windows ܑಏĂдܑಏ̚ ‫݋‬ѣҋજயϠ۞ ECO ̮ІĂ˘̰࣎‫ ۞ؠ‬CoreClasses ᙷҾဦĂͽ̈́˘࣎ ECOSpace నࢍछĄ

ECO ᑕϡ඀ёயϠ۞ ECO ̮І

ECO ̮Іሹ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-17

ኛᕇᏴፋЪ൴णᒖဩ̚ΐ˯͞۞ Model View ࢱѨĂᗕᑝ࢐̚۞ CoreClasses ᙷҾဦ༼ᕇĂDelphi 8 for .NET ಶົពϯ CoreClasses ᙷҾဦ֭ͷдΐ˭͞ ۞̍‫׍‬ሹ̚ពϯΞͽдᙷҾဦֹ̚ϡ۞̮ІĄฟ൴ˠࣶΞͽд఺࣎ᙷҾဦ̚ ฟ ؕ న ࢍ ᑕ ϡ ሀ ‫ ݭ‬Ă ּ т ˭ ဦ ӈ ព ϯ ˞ ѩ ቑ ּ ECO ᑕ ϡ ඀ ё ۞ ̰ ‫ؠ‬ CoreClasses ᙷҾဦĈ

‫ޙ‬ϲ/࣒Լᅳાሀ‫ݭ‬ Ϥ‫ٺ‬ቢ˯ಡЩր௚̚۞ᙷҾ၁វΒӣ˞ Seminar ͽ̈́ᓝҖ Seminar ۞ಞгĂ Яѩឰԧࣇд CoreClasses ᙷҾဦ̚‫ٸ‬ˢ‫ᙷ࣎׌‬Ҿ̮ІĂ֭ͷన‫ؠ‬ιࣇ۞ᙷ ҾЩჍࠎ Seminar ‫ ׶‬SrSiteĂତ඾ᕇᏴՏ˘࣎ᙷҾ֭ͷᕇᏴ໣ဂΠᔣᏴፄ Add|Attribute Αਕܑд఺‫ᙷ࣎׌‬Ҿ̚ΐˢᛳّĄ

2-18

ᑕϡ඀ёฟ൴͘Ί

ԧࣇд Seminar ᙷҾ̚ΐˢ SRIDĂNameĂSRDateĂDescription ‫ ׶‬Note ఺ 5 ࣎ᛳّĂ֭ͷд SrSite ᙷҾ̚ΐˢ AddressĂContactĂPhoneĂCapacityĂ Note ‫ ׶‬Name ఺ 5 ࣎ᛳّĄѩॡᑕϡሀ‫ݭ‬т˭ٙϯĈ

‫ޙ‬ϲ˞ Seminar ‫ ׶‬SrSite ᙷҾ̝‫ޢ‬ĂԧࣇಶΞͽ‫ޙ‬ϲ఺‫ᙷ࣎׌‬Ҿ̝ม۞ᙯ ܼĄϤ‫ ࣎˘ٺ‬Seminar ಞгΞͽᓝᏱ 0 ‫ז‬к࣎ SeminarĂ҃˘࣎ Seminar д Т˘ॡมΪਕд˘࣎ಞгᓝҖĂЯѩឰԧࣇд̍‫׍‬ሹ̚ΐˢ˘࣎ Association ̮ІĂన‫ؠ‬ι۞ЩჍࠎ assSeminarAndSiteĂ֭ͷన‫ ؠ‬assSeminarAndSite ۞ End1 ‫ ׶‬End2 ఺‫࣎׌‬পّࣃࠎĈ Multiplicity

End1 0..*

End2 1

Name

asHolds

asTakePlaceAt

˭ဦពϯ˞ѩॡᑕϡሀ‫۞ݭ‬నࢍඕ‫ڍ‬Ĉ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-19

ឰԧࣇд఺྆ઇࠎௐ˘࣎ฟ൴ล߱ĂЯࠎனдԧࣇಶΞͽฟ൴ᑕϡ඀ё֭ͷ дᑕϡ඀ё̚ॲፂ఺࣎ሀ‫ֽݭ‬ᏮˢᓝᏱ Seminar ۞ಞгͽ̈́Տ˘࣎ Seminar ۞ಞгΞͽᓝᏱ۞ Seminar ྤੈ˞Ą

న‫ ؠ‬Persistent Mapping ᑕϡሀ‫ݭ‬నࢍр˞̝‫ޢ‬Ă˭˘Վಶߏᘭඕᑕϡሀё‫ྤ׶‬फ़ֽ໚Ăтѩ˘ֽൾ ‫ ޢ‬ECO ᑕϡ඀ёளજ۞‫ۏ‬Іྤफ़ಶΞͽᖣϤ఺࣎ᘭඕҋજ۞ଂ ECOSpace Հາ‫ۏ‬Іྤफ़аྤफ़ֽ໚̚Ą ࢋ ᘭ ඕ ᑕ ϡ ሀ ‫ ྤ ׶ ݭ‬फ़ ֽ ໚ ‫ ܧ‬૱ ۞ ᖎ ಏ Ă Я ࠎ ECO ೩ ֻ ˞ ҋ જ ۞ OR-Mapping ԫఙĂ̯ధᑕϡሀ‫ݭ‬ᖣϤ ECO ೩ֻ۞ Mapper ̮Іᘭඕ‫ז‬ Borland Data Provider ͚೯۞ᙯాྤफ़ऱĂ.NET ྤफ़х‫̮פ‬І͚೯۞ MS SQL ServerĂAccess ‫ ׶‬OracleĂͽ̈́ XML ᑫ९Ą

2-20

ᑕϡ඀ёฟ൴͘Ί

дώቑּ̚૟ֹϡ MS SQL Server 2000 ઇࠎྤफ़ֽ໚ĂЯѩኛᗕᑝ૞९გந ࣶ ̚ ۞ XXXXEcoSpace.pas ༼ ᕇ Ă Delphi 8 for .NET ‫ ົ ܮ‬ҋ જ ฟ ୁ ECOSpace న ࢍ छ Ă ኛ д న ࢍ छ ̚ ΐ ˢ PersistenceMapperBdp ‫׶‬ BdpConnection ఺‫̮࣎׌‬ІĄ

ᕇᏴ BdpConnection ̮ІĂᕇᏴ໣ဂΠᔣĂᏴፄ Connection Editor…Αਕ ܑĂ֭ͷд̏གྷхд۞ BDP ాඕ̚ΐˢ˘࣎າ۞ MS SQL Server ాඕĂన ‫ؠ‬ι۞ Provider Name ࠎ MSSQLĂConnection Name ࠎ DemoMSDBĈ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-21

ତ඾ࠎ DemoMSDB Ꮾˢϒቁ۞ాඕྤੈͽ‫ాܮ‬ඕ‫ ז‬MS SQL ServerĂ˭ဦ ߏώቑּన‫ా۞ؠ‬ඕপّࣃĞ᝝۰ᅮࢋॲፂҋֹ̎ϡ۞ MS SQL Server ซҖ ϒቁ۞న‫ؠ‬ğĈ

2-22

ᑕϡ඀ёฟ൴͘Ί

‫ ޙ‬ϲ ֭ ͷ న ‫ ˞ ؠ‬DemoMSDB ̝ ‫ ޢ‬Ă ኛ న ‫ ؠ‬PersistenceMapperBdp ‫׶‬ BdpConnection ఺‫̮࣎׌‬І۞পّࣃт˭Ĉ Connectionপّࣃ

PersistenceMapperBdp BdpConnection1

SqlDatabaseConfig

SqlDatabaseConfig

ConnectionStringপّࣃ

౵ ‫ ޢ‬న ‫ؠ‬

PersistenceMapperBdp database=DemoECODB;hostname=GORDON-AMD; assembly=Borland.Data.Mssql, Version=1.5.1.0, Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b; vendorclient=sqloledb.dll;

XXXXECOSpace

۞

PersistenceMapper

প ّ ࣃ ࠎ

PersistenceMapperBdp1Ă఺ᇹಶԆј˞ᑕϡሀ‫ྤ׶ݭ‬फ़ֽ໚̝ม۞ᘭඕ̍ ү˞Ą ѩॡ ECO ົдᑕϡ඀ё૞९̚ҋજயϠ ECOSpace ۞੻ߛ඀ёቅĂּт˭ ࢬಶߏቑּᑕϡ඀ёҋજயϠ۞ ECOSpace ‫ކ‬ӘĈ unit PECODemo1EcoSpace; interface uses Borland.Eco.Services,

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-23

Borland.Eco.UmlCodeAttributes, Borland.Eco.Handles, CoreClassesUnit, Borland.Eco.Persistence, Borland.Eco.Persistence.Interbase, Borland.Eco.Persistence.Default, Borland.Eco.Persistence.Configuration, Borland.Data.Provider; type [EcoSpace] [EcoSpacePackage(TypeOf(CoreClassesUnit.CoreClasses))] TPECODemo1EcoSpace = class(Borland.Eco.Handles.DefaultEcoSpace) strict private PersistenceMapperBdp1: Borland.Eco.Persistence.PersistenceMapperBdp; BdpConnection1: Borland.Data.Provider.BdpConnection; procedure InitializeComponent; private class var typeSystemProvider: ITypeSystemService; strict protected function GetTypeSystemProvider: ITypeSystemService; override; public constructor Create; class function GetTypeSystemService: ITypeSystemService; static; procedure UpdateDatabase; function get_PersistenceService: IPersistenceService; property PersistenceService: IPersistenceService read get_PersistenceService; function get_DirtyListService: IDirtyListService; property DirtyListService: IDirtyListService read get_DirtyListService; function get_UndoService: IUndoService; property UndoService: IUndoService read get_UndoService; function get_TypeSystemService: ITypeSystemService; property TypeSystemService: ITypeSystemService read get_TypeSystemService; function get_OclService: IOclService; property OclService: IOclService read get_OclService; function get_ObjectFactoryService: IObjectFactoryService; property ObjectFactoryService: IObjectFactoryService read get_ObjectFactoryService; function get_VariableFactoryService: IVariableFactoryService; property VariableFactoryService: IVariableFactoryService read get_VariableFactoryService; end;

ѩॡдቑּ ECO ᑕϡ඀ё̚ಶயϠ˞˘࣎ ECOSpaceĂECO ົͽ˭ࢬ۞ॾ ёֽ‫׻‬Щ఺࣎ ECOSpaceĈ ඀ёಏ̮.ECO ߛ॰ҋજயϠ۞ᙷҾЩჍ

д఺࣎ቑּ̚ѩ ECOSpace ۞ЩჍಶߏĞт‫ڍ‬᝝۰ͽ̙Т۞ЩჍֽ‫ޙ‬ϲ ECO ᑕϡ඀ё֭ͷֹϡ̙Т۞ЩჍֽᐼх඀ёಏ̮Ă֤ᆃಶົ‫۞྆఺׶‬ЩჍ̙ ТğĈ

2-24

ᑕϡ඀ёฟ൴͘Ί

PECODemo1EcoSpace.TPECODemo1EcoSpace

ॲፂనࢍሀ‫ޙݭ‬ϲྤफ़ऱჩࢋ ‫ ޙ‬ϲ ˞ ᑕ ϡ ሀ ‫ ྤ ׶ ݭ‬फ़ ֽ ໚ ̝ ม ۞ ᘭ ඕ ̝ ‫ ޢ‬Ă ன д ಶ Ξ ͽ ࢋ Ր ECO ۞ OR-Mapping ፟‫ט‬ҋજॲፂሀ‫ᙷ۞̚ݭ‬Ҿߛၹдྤफ़ֽ໚̚‫ޙ‬ϲჩࢋྤੈ ˞Ă఺࣎̍үΞͽᖣϤᕇᏴ ECOSpace నࢍछ̚۞̍‫ֽ׍‬ԆјĄд ECOSpace నࢍछ۞˭͞ѣα࣎ဦညΞͽ̶Ҿ‫ޙ‬ϲྤफ़ऱჩࢋĂॲፂሀ‫ݭ‬ҋજႊซྤफ़ ऱĂᑭߤሀ‫۞ݭ‬ѣड़ّͽ̈́Ᏼፄᑕϡ඀ёֹ̚ϡ۞ UML PackageĈ ‫ޙ‬ϲྤफ़ऱ ჩࢋ

ҋજႊซྤ फ़ऱ

ᑭߤሀ‫۞ݭ‬ѣड़ ّ

Ᏼፄ UML Package

ன д ᕇ Ᏼ ECOSpace న ࢍ छ ˭ ͞ ۞ ‫ ޙ‬ϲ ྤ फ़ ऱ ჩ ࢋ (Create Database Schema ဦညॲፂሀ‫ޙݭ‬ϲ MS SQL Server ۞ჩࢋྤੈĄϤ‫ߏ఺ٺ‬ௐ 1 Ѩॲ ፂሀ‫ޙݭ‬ϲྤफ़ऱჩࢋĂЯѩ ECO ົពϯт˭ဦ۞۩ϨྤੈĂ΃ܑ఺Ѩ՟ ѣჩࢋྤੈົ‫זצ‬ᇆᜩĄᕇᏴ˭ဦ̚۞ OK ޷ตࢋՐ ECO ᚶᜈ‫ޙ‬ϲྤफ़ऱ ჩࢋĄ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-25

дјΑ۞‫ޙ‬ϲ˞ྤफ़ऱჩࢋྤੈ̝‫ޢ‬ĂDelphi 8 for .NET ົдੈिෛ඄̚ព ϯјΑ۞‫ޙ‬ϲ˞ྤफ़ऱჩࢋĂତ඾ГᕇᏴ ECOSpace నࢍछ˭͞۞ᑭߤሀ‫ݭ‬ ѣड़ّဦညĂࢋՐ ECO ᑭߤѩॡ۞ሀ‫׶ݭ‬ჩࢋĄ఼࿅ᑭߤ̝‫ ޢ‬Delphi 8 for .NET ˵ົдੈिෛ඄̚ពϯјΑੈिĈ

న‫ ؠ‬ECO ̮І/OCL ˭˘Վߏа‫ ז‬ECO ᑕϡ඀ёயϠ۞ Windows ܑಏ̚న‫ ؠ‬ECO ̮Іͽ̈́న ࢍ GUIĄన‫ ؠ‬ECO ̮І۞ϫ۞ߏឰ ECO ᑕϡ඀ёᖣϤ ECO ̮Іਕૉᘭඕ ‫ז‬ԧࣇనࢍ۞ᑕϡሀ‫ݭ‬Ăనࢍ GUI ‫ాߏ݋‬ඕ.NET ̮І‫ ז‬ECO ̮І̚ͽ‫ܮ‬ឰ GUI ពϯ‫׶‬გநᑕϡሀ‫̝̚ݭ‬хд‫ ٺ‬ECOSpace ̚۞ᑕϡ‫ۏ‬ІĄ ࢵАᕇᏴ Windows ܑಏ̚۞ rhRoot ̮ІĂ֭ͷన‫ؠ‬ι۞ EcoSpaceType প ّࣃт˭Ĉ

2-26

ᑕϡ඀ёฟ൴͘Ί

EcoSpaceTypeপّࣃ

rhRoot PECODemo1EcoSpace.TPECODemo1EcoSpace

఺࣎న‫˞ࠎߏؠ‬ឰ ECO ᑕϡ඀ёాඕ‫ࢬ݈ז‬నࢍ۞ᑕϡሀ‫ݭ‬Ąдన‫˞ؠ‬ rhRoot ̮І‫ޢ‬ĂrhRoot ̮Іಶ΃ܑ݈ࢬԧࣇనࢍ۞ᑕϡሀ‫ݭ‬Ăٙѣ‫۞ޢ׎‬ ECO ̮ІಶΞͽᖣϤ rhRoot ֽх‫פ‬ᑕϡሀ‫̮۞̝̚ݭ‬৵˞Ą

˭˘Վߏд ECO ᑕϡ඀ёֹ̚ϡ̮Іֽ΃ܑᑕϡሀ‫۞̝̚ݭ‬Տ˘࣎ᙷҾĂ д ECO ̮І௡̚۞ ExpressionHandle ̮ІಶΞͽᖣϤֹϡ OCL ֽ΃ܑᑕ ϡሀ‫ᙷ۞̚ݭ‬ҾĄனдԧࣇᅮࢋ˘࣎дᑕϡ඀ё̚΃ܑ Seminar ಞг۞̮ ІĂЯѩд Enterprise Core Objects ۞̍‫׍‬ሹ̚ᕇᏴ ExpressionHandle ̮ Іͽ‫ܮ‬ԯιΐˢ‫ז‬ᑕϡ඀ё̚Ăତ඾న‫ؠ‬ιт˭۞পّࣃĈ Nameপّࣃ

ExpressionHandle̮І ehSeminarSites

RootHandleপّࣃ

RhRoot

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-27

Expressionপّࣃ

ExpressionHandle̮І SrSite.allInstances

న‫ ؠ‬ehSeminarSites ۞ RootHandle পّࣃࠎ ECO ᑕϡ඀ё̚۞ RhRoot ຍᏜ ehSeminarSites ࢋ΃ܑᑕϡሀ‫̚ݭ‬প‫̮۞ؠ‬৵ĂГԯ ehSeminarSites ۞ Expression পّࣃన‫ ؠ‬SrSite.allInstances ‫ ܑ΃݋‬ehSeminarSites ̮Ід ECO ᑕϡ඀ё̚΃ܑٙѣᑕϡ඀ё‫ޙ‬ϲ‫׶‬ჯ᜕۞ SrSite ᙷҾ۞‫ۏ‬ІĄ ExpressionHandle ̮І۞ Expression পّࣃಶߏ OCL(Object Constraint Language)Ăֹϡ OCLĂExpressionHandle ̮ІΞͽߤ ྙ‫׶‬఍நٙ ѣд ECOSpace ̚۞ᑕϡᙷҾ‫ۏ‬ІĄ ฟ൴ˠࣶΞͽᗕᑝ‫ۏ‬Іᑭෛጡ̚ ExpressionHandle ̮І۞ Expression প ّĂѩॡ Delphi 8 for .NET ົୁજ Expression পّ۞পّࣃበᏭጡĂฟ൴ ˠࣶಶΞͽт˭ဦਠͽᕇᏴ۞͞ёϤ఺࣎পّࣃበᏭጡҋજயϠϒቁ۞ OCLĄ

2-28

ᑕϡ඀ёฟ൴͘Ί

ѣ˞΃ܑ Seminar ಞг۞̮І̝‫ޢ‬Ăତ˭ֽԧࣇᅮࢋᘭඕ΃ܑ Seminar ಞг ۞̮Іͽ̈́΃ܑ Seminar ώ֗۞̮ІĄ఺Ξͽֹϡᇴ჌͞‫ֽڱ‬ԆјĂ‫˘̚׎‬ ჌͞‫ڱ‬ಶߏАᖣϤ ECO ۞ CurrencyManagerHandle ̮ІАᗆ‫ؠ‬ϫ݈۞ Seminar ಞгĂГᖣϤᑕϡሀё̚۞ assSeminarAndSite ᙯܼాඕ఺‫ᙷ࣎׌‬ Ҿ‫ۏ‬ІĄCurrencyManagerHandle ̮Іਕૉᗆ‫ؠ‬ϫ݈ EcoSpace ̚ϒពϯд DataGrid ̝̚প‫ ۞ؠ‬Seminar ಞг‫ۏ‬ІĄϤ‫ٺ‬ൾ‫ޢ‬ώቑּ૟ֹϡ DataGrid ֽពϯٙѣ Seminar ಞг‫ۏ‬ІĂЯѩ CurrencyManagerHandle ̮Іϒр௑ Ъԧࣇ۞ᅮࢋĄ ЯѩኛᕇᏴ CurrencyManagerHandle ̮Іͽ‫ܮ‬ΐˢ‫ז‬ᑕϡ඀ё̚ĂГన‫ؠ‬ ι۞পّࣃт˭Ĉ Nameপّࣃ

CurrencyManagerHandle̮І cmhSelectedSite

RootHandleপّࣃ

ehSeminarSites

BindingContextপّࣃ

dgSites

Ϥ ‫ ٺ‬cmhSelectedSite ߏ ᗆ ‫ ؠ‬ϫ ݈ ٙ ѣ Seminar ಞ г ‫ ۏ‬І ̚ ϫ ݈ ϒ д DataGrid ̝̚జᏴፄ۞ Seminar ಞг‫ۏ‬ІĂЯѩд˯ࢬన‫ ؠ‬cmhSelectedSite ۞ RootHandle পّࣃࠎ ehSeminarSitesĂЯࠎ ehSeminarSites ̮І΃ܑٙ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-29

ѣ۞ Seminar ಞг‫ۏ‬ІĄ҃న‫ ؠ‬cmhSelectedSite ۞ BindingContext পّࣃ ࠎ dgSitesĂߏЯࠎ dgSites ߏൾ‫ޢ‬ΐˢ۞ DataGrid ̮ІĂ҃ͷ dgSites జ న‫ؠ‬ពϯٙѣ۞ Seminar ಞг‫ۏ‬ІĄ ౵‫ޢ‬ಶΞͽన‫ܑ΃ؠ‬ᑕϡሀ‫ ̚ݭ‬Seminar ᙷҾ۞ ExpressionHandle ̮І ˞ĂኛГΐˢ˘࣎ ExpressionHandle ̮ІĂ֭ͷన‫ؠ‬ι۞পّࣃт˭Ĉ Nameপّࣃ

ExpressionHandle̮І ehSeminars

RootHandleপّࣃ

cmhSelectedSite

Expressionপّࣃ

self.asHolds

న‫ ؠ‬ehSeminars ۞ RootHandle পّࣃࠎ cmhSelectedSite ΃ܑϫ݈఍ந۞ Seminar ᙷҾ‫ۏ‬Іߏ cmhSelectedSite ٙ΃ܑ۞ Seminar ಞг‫ۏ‬ІĄ఺˵ߏ ᄲϫ݈఍ந۞ Seminar ᙷҾ‫ۏ‬Іϒߏд cmhSelectedSite ٙ΃ܑ۞ Seminar ಞг‫ۏ‬І̚ᓝᏱ۞ SeminarĄ҃న‫ ؠ‬ehSeminars ۞ xpression পّࣃࠎ self.asHolds ‫ࢬ݈ߏ݋‬నࢍ۞ᑕϡሀё̚‫ؠ‬ཌྷ۞ᙯܼĂኛ᝝۰аᐝણ҂݈ࢬ నࢍ۞ᑕϡሀ‫ݭ‬Ą ༊൒Ăฟ൴ˠࣶ˵ΞͽᖣϤᗕᑝ ehSeminars ۞ Expression পّࣃͽୁજপ ّࣃበᏭጡֽซҖ OCL ҋજயϠ۞̍үĂт˭ဦٙϯĈ

2-30

ᑕϡ඀ёฟ൴͘Ί

னд Windows ܑಏᑕϡ඀ёֹ̚ϡ۞ ECO ̮Іт˭ဦٙϯĈ

˭ ࢬ ۞ ۞ ˬ ࣎ ‫ ۏ‬І ᑭ ෛ ጡ ဦ ԛ ‫ ੅ ࢬ ݈ ߏ ݋‬ኢ ۞ ehSeminarSites Ă cmhSelectedSiteĂͽ̈́ ehSeminars ఺ˬ̮࣎Ід‫ۏ‬Іᑭෛጡ̚۞న‫ࣃؠ‬Ą

నࢍ GUI ౵ ‫ ߏ ޢ‬д Windows ܑ ಏ ̚ ΐ ˢ GUI ̮ І ֭ ͷ ᖣ Ϥ న ‫ ؠ‬GUI ̮ І ۞ DataSource প ّ ࣃ ా ඕ ‫ ࢬ ݈ ז‬ΐ ˢ ۞ ExpressionHandle ̮ І ٕ ߏ CurrencyManagerHandle ̮Іֽពϯ‫׶‬఍நᑕϡሀ‫ۏ۞̚ݭ‬ІĄ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-31

ࢵАд Windows ܑಏ̚ΐˢ DataGrid ̮Іֽពϯ Seminar ಞг‫ۏ‬Іͽ̈́ Seminar ‫ۏ‬ІĂ˭ࢬ۞ߏ఺‫ ࣎׌‬DataGrid ̮І۞পّన‫ࣃؠ‬Ĉ Nameপّࣃ

DataGrid DgSites

DataSourceপّࣃ

EhSeminarSites

Nameপّࣃ

DataGrid DgSeminars

DataSourceপّࣃ

EhSeminars

ତ඾д Window ܑಏ̚Гΐˢˬ࣎ TextBox ̮ІĂͽពϯ Seminar ಞг‫ۏ‬ І۞᛼ҜࣃĂ˭ࢬߏ఺ˬ࣎ TextBox ̮І۞న‫ࣃؠ‬Ĉ Nameপّࣃ

TextBox TextBox1

DataBindings|Textপّࣃ

ehSeminarSites – Name

Nameপّࣃ

TextBox TextBox2

DataBindings|Textপّࣃ

ehSeminarSites - Capacity

Nameপّࣃ

TextBox TextBox3

DataBindings|Textপّࣃ

ehSeminarSites - Address

ଂ˯ࢬ۞న‫ؠ‬Ξͽۢ྽Ă.NET ۞ GUI ̮ІΞͽᖣϤన‫ؠ‬ιࣇ۞ DataSource ٕߏ DataBindings.Text পّࣃֽాඕ ECOSpace ̝̚۞‫ۏ‬ІĄ

ᇤᆷᑕϡ඀ё ౵‫˘ޢ‬Վߏᇤᆷ၁ү඀ёቅĂࢵАԧࣇдᑕϡ඀ё̚‫ؠ‬ཌྷт˭۞‫࣎׌‬૱ᇴࣃĈ const ADDSEMINARSITE = 1100; UPDATEDATASOURCE = 9900;

2-32

ᑕϡ඀ёฟ൴͘Ί

implementation

ତ඾д Window ܑಏ̚ΐˢ ToolBar ̮ІĂ֭ͷ၁үι۞ Click ְІ఍ந‫ב‬ ёт˭Ĉ procedure TWinForm.ToolBar1_ButtonClick(sender: System.Object; e: System.Windows.Forms.ToolBarButtonClickEventArgs); begin case Convert.ToInt32(e.Button.Tag) of ADDSEMINARSITE : DoAddSeminarSite; UPDATEDATASOURCE : EcoSpace.UpdateDatabase; end; end;

д˯ࢬ۞඀ёቅ̚༊ֹϡ۰ᕇᏴ˞ĺᆧΐಞгĻ۞̍‫޷׍‬ต̝‫ޢ‬Ăಶ‫ײ‬Ψ DoAddSeminarSite ֽາᆧ Seminar ಞг‫ۏ‬ІĂт‫ֹڍ‬ϡ۰ᕇᏴ˞ĺՀາྤ फ़Ļ̍‫޷׍‬ตಶ‫ײ‬Ψ ECOSpace ‫ۏ‬І۞ UpdateDatabase ͞‫ࢋڱ‬Ր ECOSpace ॲፂιჯ᜕۞‫ۏ‬І‫ې‬ၗֹֽϡ ECO ۞ OR-Mapping Հາ‫ۏ‬Іྤफ़аྤफ़ֽ ໚̚Ăѩॡ ECO ົҋજॲፂᑕϡሀ‫ᙷ۞̚ݭ‬ҾֽயϠዋ༊۞ SQL ୃٕࢗߏ XML ᇾច̰टֽᐼх‫ۏ‬ІྤੈĄ ࢋд ECOSPace ̚ᆧΐ Seminar ಞг‫ۏ‬І‫ܧ‬૱۞ᖎಏĂ඀ёቅΪᅮࢋ‫ޙ‬ϲ SrSite ᙷҾ‫ۏ‬І֭ͷ็ᅍ ECOSpace ઇࠎ‫ޙ‬ၹ‫ב‬ё۞ણᇴӈΞĈ function TWinForm.DoAddSeminarSite: SrSite; begin Result := SrSite.Create(EcoSpace); end;

Ϥ‫ ٺ‬SrSite ᙷҾ̏གྷдᑕϡሀ‫̚ݭ‬నࢍĂЯѩ ECO ົҋજயϠ SrSite ᙷҾ ۞‫ؠ‬ཌྷĂᑕϡ඀ёΞͽۡତֹϡĄ

ેҖ ECO ᑕϡ඀ё னдበᛌ֭ͷેҖѩ ECO ᑕϡ඀ёĂᏮˢ˘ֱ Seminar ಞгĂт˭ဦٙϯĈ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-33

౵‫ޢ‬ᕇᏴ Window ܑಏ̚۞ĺՀາྤफ़Ļ޷ตĂSeminar ಞг‫ۏ‬Іಶົҋજ Հາаྤफ़ֽ໚̚Ą

ΐˢ Seminar ‫ۏ‬І۞ాඕ ౵‫˘۞ޢ‬Վ඀ёቅ၁үಶߏ‫ޙ‬ϲд DataGrid ̚ϫ݈ϒజᏴፄ۞ Seminar ಞ г‫ۏ‬ІϹ‫ۏٽ‬ІࢋᓝᏱ۞ Seminar ‫ۏ‬І˞ĄࢵАд̍‫׍‬Е̚Гΐˢ˘࣎ĺາ ᆧ SeminarĻ޷ตт˭ٙϯĈ

2-34

ᑕϡ඀ёฟ൴͘Ί

ତ඾࣒Լ ToolBar1_ButtonClick т˭Ĉ procedure TWinForm.ToolBar1_ButtonClick(sender: System.Object; e: System.Windows.Forms.ToolBarButtonClickEventArgs); begin case Convert.ToInt32(e.Button.Tag) of ADDSEMINARSITE : DoAddSeminarSite; ADDSEMINAR : DoAddSeminar; UPDATEDATASOURCE : EcoSpace.UpdateDatabase; end; end;

౵‫ޢ‬၁ү DoAddSeminar ͞‫ڱ‬т˭Ĉ function TWinForm.DoAddSeminar: Seminar; var selectedSite : SrSite; selectedSeminar : Seminar; begin selectedSite := GetSelectedSite; selectedSeminar := Seminar.Create(EcoSpace); selectedSite.asHolds.Add(selectedSeminar); selectedSeminar.asTakePlaceAt := selectedSite; Result := selectedSeminar; end; function TWinForm.GetSelectedSite: SrSite; begin Result := nil;

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-35

if (cmhSelectedSite.Element.AsObject is SrSite) then Result := SrSite(cmhSelectedSite.Element.AsObject); end;

д˯ࢬ۞඀ёቅ̚ GetSelectedSite ົа็ϫ݈д DataGrid ̚జᏴፄ۞ Seminar ಞг‫ۏ‬ІĂ఺ΞͽᖣϤ cmhSelectedSite ̮Іֽ‫଀פ‬Ą ତ඾඀ёቅ‫ޙ‬ϲ Seminar ‫ۏ‬ІĂ֭ͷᖣϤ asHolds ᙯాԯ Seminar ‫ۏ‬І‫׶‬ Seminar ಞг‫ۏ‬Іᘭඕ੓ֽĄ ౵‫ࢦޢ‬າበᛌᑕϡ඀ёĂેҖιĂ֭ͷдᏴፄ˞ DataGrid ̮І̚۞ Seminar ಞг‫ۏ‬І‫ޢ‬Ă‫ٺ‬ௐ 2 ࣎ DataGrid ̚Ꮾˢ˘ֱ Seminar ྤफ़Ăт˭ဦٙϯĄ ౵‫ޢ‬ГᕇᏴ Windows ܑಏ̚۞ĺՀາྤफ़Ļ޷ตಶΞͽৌϒ۞ԯ Seminar ྤफ़ᐼх‫ྤז‬फ़ֽ໚̚˞Ą

ೈᒖёฟ൴ ECO ᑕϡ඀ё Delphi 8 for .NET ۞ ECO ̯ధฟ൴ˠֹࣶϡೈᒖё۞ฟ൴ሀёֽᇤᆷᑕϡ ඀ёĂฟ൴ˠࣶΞͽ̙ᕝ۞д ECO ۞ᙷҾဦ̚ΐˢາ۞̮৵ֽᆧΐᑕϡ඀

2-36

ᑕϡ඀ёฟ൴͘Ί

ё۞ΑਕĄдώ̈༼̚૟ᄲ‫ځ‬тңᚶᜈֹϡ ECO Լච݈ࢬ੅ኢ۞ቑּ ECO ᑕϡ඀ёĄ னдੵ˞ Seminar ಞг‫ ׶‬Seminar ̝γĂԧࣇԓ୕Гΐˢણΐ Seminar ۞ֹ ϡ۰ᙷҾĂͽ‫ܮ‬൳ᐂણΐ Seminar ˠࣶ۞ྤफ़ĄϤ‫ٺ‬д݈ࢬฟ൴۞ቑּᑕϡ ඀ё̚ ECO ̏གྷॲፂԧࣇనࢍ۞ᑕϡሀ‫ޙݭ‬ϲ˞ྤफ़ऱĂЯѩдΐˢາ۞ ᙷҾ̮৵ॡົᇆᜩ‫ྤז‬फ़ऱ۞ჩࢋĂ఺Ξͽឰԧࣇᒢྋ ECO тң఍ந఺࣎ યᗟĄ ࢵАа‫ז‬ቑּ ECO ᑕϡ඀ё̚Ăฟୁι۞ᙷҾဦĂ֭ͷΐˢ˘࣎າ۞ᙷҾĂ ‫פ‬Щࠎ JoinerĄତ඾д Joiner ᙷҾ̚ΐˢα࣎পّĂNameĂEMailĂPhone ‫ ׶‬CompanyĂт˭ဦٙϯĈ

̝‫ޢ‬ԧࣇᅮࢋ‫ؠ‬ཌྷ Seminar ‫ ׶‬Joiner ఺‫ᙷ࣎׌‬Ҿ̝ม۞ᙯܼĂЯѩд఺‫࣎׌‬ ᙷҾ̚ΐˢ Association ̮৵Ă֭ͷన‫ؠ‬ι۞ЩჍࠎ assSeminarJoinerĂГ న‫ؠ‬ι۞ End1 ‫ ׶‬End2 পّࣃࠎĈ

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-37

Multiplicity

End1 1..*

End2 1..*

Name

asJoins

AssHolds

఺࣎ Association ΃ܑણΐˠࣶΞͽણΐ 1 ‫ז‬к࣎ SeminarĂ҃˘ಞ Seminar ‫݋‬ѣ 1 ‫ז‬к࣎ણΐˠࣶĄ༊൒д఺྆ԧࣇ˵Ξͽ޽‫˘ؠ‬ಞ Seminar Ҍ͌ᅮࢋ ѣ 10 ˠણΐ̖ᓝᏱĂ֤ᆃ End2 ۞ Multiplicity পّࣃಶΞͽన‫ ࠎؠ‬10..*Ą ତ඾а‫ ז‬EcoSpace నࢍछ̚ĂϤ‫ٺ‬னдᑕϡሀ‫ݭ‬ѣ˞າ۞̮৵ĂЯѩ ECO ᅮࢋॲፂ࣒Լ۞ᑕϡሀ‫ֽ࣒ݭ‬Լྤफ़ऱჩࢋĂᕇᏴ ECO నࢍछ˭͞۞ Evolve Database ဦညĂECO ົ̶‫ژ‬ϫ݈۞ᙷҾဦͽ̈́ྤफ़ऱჩࢋĂॲፂ̶‫۞ژ‬ඕ ‫ڍ‬யϠ໤౯࣒Լ۞ SQL ୃࢗĄѩॡ ECO ົពϯт˭ဦ۞ Database Evolution ၆ྖ஼Ăд఺࣎၆ྖ஼̚ጾѣᇴ̙࣎Т۞ࢱѨĂՏ˘࣎ࢱѨ̚ົӔன̙Т۞ ྤੈĂּт ECO ۞̶‫ژ‬ඕ‫ ̈́ͽڍ‬ECO ໤౯ેҖ۞ SQL ୃֽࢗԼតྤफ़ऱ ჩࢋඈĄฟ൴ˠࣶΞͽ៍၅‫ژ̶۞̚׎‬ඕ‫֭ڍ‬ͷՙ‫ߏؠ‬ӎឰ ECO ેҖĄ̙ ࿅дฟ൴ˠࣶт‫ڍ‬ՙ‫ؠ‬ឰ ECO Լតྤफ़ऱჩࢋ̝݈˘‫ࢋؠ‬А౯Њྤफ़ऱ̚ ࢦࢋ۞ྤफ़Ą

2-38

ᑕϡ඀ёฟ൴͘Ί

дฟ൴ˠࣶቁ‫ؠ‬ឰ ECO Լតྤफ़ऱჩࢋ‫ޢ‬ಶΞͽᕇᏴ Database Evolution ၆ྖ஼̚۞ Execute ޷ตેҖՀາ۞̍үĄ

д ECO јΑ۞Հາྤफ़ऱჩࢋ̝‫ࢋ̙˵ޢ‬Ԟ੃ГᕇᏴ Validate Model ֽᑭ ߤᑕϡሀ‫ݭ‬Ă౵‫ ޢ‬ECO ົдੈिෛ඄̚ពϯՀາјΑ۞ඕ‫ੈڍ‬िĈ

а‫ ז‬Window ܑಏ̚Ăனдԧࣇᅮࢋֹϡ ExpressionHandle ̮Іֽ΃ܑາ ΐˢ۞ Joiner ᙷҾĄଂ Enterprise Core Obejcts ̚ΐˢ ExpressionHandle ̮ІĂ֭ͷన‫ؠ‬т˭۞পّࣃĈ Nameপّࣃ

ExpressionHandle̮І ehJoiner

RootHandleপّࣃ

cmhSelectedSeminar

Expressionপّࣃ

self.assHolds

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-39

ehJoiner న‫ ؠ‬RootHandle ࠎ CmhSelectedSeminar ΃ܑдᑕϡ඀ё̚఍ந ۞ણΐˠࣶߏд Window ܑಏ̚ϒజᏴፄ۞ SeminarĄన‫ ؠ‬ehJoiner ۞ Expression পّࣃࠎ self.assHolds ‫ॲߏ݋‬ፂ݈ࢬనࢍ۞ᙷҾဦ̚ Seminar ‫ ׶‬Joiner ᙷҾ̝ม Association ᙯܼ۞‫ؠ‬ཌྷĄ

ΐˢ˞ ehJoiner ̝‫ޢ‬Ăԧࣇ˵ᅮࢋည݈ࢬֹϡ CurrencyManagerHandle ˘ ᇹԱ‫ז‬ᑕϡ඀ё̚ϒពϯд DataGrid ̝̚۞ SeminarĄЯѩд Window ܑ ಏ̚ΐˢ˘࣎ CurrencyManagerHandle ̮ІĂ֭ͷన‫ؠ‬ι۞পّࣃт˭Ĉ Nameপّࣃ

CurrencyManagerHandle̮І cmhSelectedSeminar

RootHandleপّࣃ

ehSeminars

BindingContextপّࣃ

dgSeminars

cmhSelectedSeminar ΃ ܑ ˞ ᑕ ϡ ඀ ё ̚ ϫ ݈ д dgSeminars ̚ జ Ᏼ ፄ ۞ SeminarĄన‫ؠ‬р˞ ehJoiner ‫ ׶‬cmhSelectedSeminar ̝‫ޢ‬ĂಶΞͽ໤౯ా ඕ GUI ̮І˞Ą

2-40

ᑕϡ඀ёฟ൴͘Ί

˭ࢬ۞ဦԛߏѩॡ ehJoiner ‫ ׶‬cmhSelectedSeminar ఺‫̮࣎׌‬Ід‫ۏ‬Іᑭෛ ጡ̚న‫۞ؠ‬পّࣃĈ

౵‫ޢ‬д Window ܑಏ۞ TabControl ̚ΐˢ˘࣎າ۞ࢱѨĂГ‫ࢱٺ‬Ѩ̚ΐˢ DataGrid ‫ ׶‬2 ࣎ TextBox ̮ІĂ֭ͷన‫ؠ‬ι۞পّࣃт˭Ĉ Nameপّࣃ

DataGrid DgJoiners

DataSourceপّࣃ

EhJoiners

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-41

Nameপّࣃ

TextBox TextBox4

DataBindings|Textপّࣃ

ehSeminars - Name

Nameপّࣃ

TextBox TextBox5

DataBindings|Textপّࣃ

ehSeminars - SRDate

౵‫ޢ‬д̍‫׍‬Е̚ΐˢາ۞˘࣎ĺᆧΐણΐˠࣶĻ޷ตĂ֭ͷΐˢт˭඀ёቅĈ function TWinForm.DoAddJoiner: Joiner; var selectedSeminar : Seminar; selectedJoiner : Joiner; begin selectedSeminar := GetSelectedSeminar; selectedJoiner := Joiner.Create(EcoSpace); selectedSeminar.assHolds.Add(selectedJoiner); Result := selectedJoiner; end; function TWinForm.GetSelectedSeminar: Seminar; begin Result := nil; if (cmhSelectedSeminar.Element.AsObject is Seminar) then Result := Seminar(cmhSelectedSeminar.Element.AsObject); end;

DoAddJoiner тТ݈ࢬ۞ DoAddSeminar ֹϡᙷҬ۞៍‫ه‬ĂࢵАА‫פ‬΍ϫ ݈ᑕϡ඀ё̚Ᏼፄ۞ SeminarĂ‫ޙ‬ϲ Joiner ‫ۏ‬ІĂ౵‫ޢ‬ГᖣϤ Seminar ‫ۏ‬І ۞ assHolds ᙯܼాඕ Seminar ‫ ׶‬JoinerĄ በᛌ֭ͷેҖᑕϡ඀ёĂಶΞͽт˭ဦдᑕϡ඀ё̚၆প‫ ۞ؠ‬Seminar ΐˢ ણΐˠࣶ˞Ă౵‫ޢ‬ᕇᏴĺՀາྤफ़Ļ޷ตಶΞͽԯາᏮˢ۞ણΐˠࣶྤफ़ͽ ̈́‫ ׶‬Seminar ̝ม۞ᙯܼᐼх‫ ז‬MS SQL Server ̚˞Ą

2-42

ᑕϡ඀ёฟ൴͘Ί

ࠎᙷҾΐˢ͞‫ڱ‬ ECO ۞ᙷҾဦੵ˞ᛳّ̝γĂ༊൒˵Ξͽΐˢ͞‫ڱ‬Ą՟ѣᙷҾ͞‫̙ߏڱ‬ਕჍ ࠎֹϡ‫ۏ‬ІጱШԫఙฟ൴ᑕϡ඀ё۞Ąдώ̈༼̚૟ᄲ‫ځ‬тңࠎᑕϡሀёΐ ˢ͞‫֭ڱ‬ͷдᑕϡ඀ё̚‫ײ‬ΨĄ а‫ז‬ቑּᑕϡ඀ё۞ᙷҾဦĂᕇᏴ Seminar ᙷҾĂ޷˭໣ဂΠᔣᏴፄ Add Operation ΑਕܑĂ֭ͷᏮˢ˭ࢬ۞͞‫ڱ‬Ĉ getJoinerCount : Integer;

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-43

ѩॡ ECO ົд CoreClassesUnit ඀ёಏ̮̚யϠ˭ࢬ۞‫ކ‬ӘĈ [UmlElement] function getJoinerCount(): Integer;

ฟ൴ˠࣶΞͽᕇᏴ˯ဦ̚۞ Open Source Αਕܑྯ‫ ז‬CoreClassesUnit ඀ё ಏ̮۞ࣧؕ඀ё̚Ą ତ඾д getJoinerCount ͞‫̚ڱ‬ΐˢт˭۞၁ү඀ёቅĈ function Seminar.getJoinerCount(): Integer; begin Result := Self.assHolds.Count; end;

getJoinerCount ົа็প‫ ؠ‬Seminar ۞ણΐˠᇴĂ఺࣎ᇴϫΞͽᖣϤх‫ᙷפ‬ Ҿဦ̚ Seminar ᙷҾ۞ asHolds ᙯా۞ Count পّࣃֽ‫଀פ‬Ą ౵‫ޢ‬а‫ ז‬Window ܑಏ̚ĂдĺણΐˠࣶĻࢱѨ̚ΐˢາ۞ TextBox ଠ‫ีט‬ ͽ ̈́ ˘ ࣎޷ต Ă ֭ ͷдາ ΐ ˢ ۞޷ต ۞ Click ְ І ఍ ந‫ ב‬ё ̚ ᇤᆷ‫ ײ‬Ψ getJoinerCount ͞‫۞ڱ‬඀ёቅĈ

2-44

ᑕϡ඀ёฟ൴͘Ί

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs); begin TextBox6.Text := Convert.ToString(GetSelectedSeminar.getJoinerCount); end;

˯ࢬ۞඀ёቅᖣϤᑕϡ඀ё̏̚གྷ၁ү۞ GetSelectedSeminar ͞‫଀פڱ‬ϫ ݈۞ Seminar ‫ۏ‬ІĂГ‫ײ‬Ψι۞ getJoinerCount ͞‫ڱ‬ӈΞĄ ౵‫ޢ‬በᛌ֭ͷેҖᑕϡ඀ёĂдĺણΐˠࣶĻࢱѨ̚̚ᕇᏴ޷ตಶΞͽ࠻‫ז‬ ϫ݈ Seminar ۞ણΐˠᇴ˞Ăт˭ဦٙϯĈ

ώ̈༼Ϊߏઇࠎтңฟ൴ ECO ᑕϡ඀ё۞ˢ‫ܝ‬ᄲ‫ځ‬ĂECO ߛ॰Βӣ˞Հк ૻ̂۞ΑਕĂּтࢉϠᛳّĂࢉϠᙯܼͽ̈́ OCL ඈĄ᝝۰Ξͽણ҂ ECO ߛ ॰۞ቢ˯ᅃӄᄲ‫ځ‬

̶൴ ECO ᑕϡ඀ё ࢋ̶൴ ECO ᑕϡ඀ёĈ 1

ฟୁଋ۞૞९Ă֭ͷᏴፄ View|Project Manager ពϯ૞९გநࣶĄ

2

д Project Options ၆ྖ஼̚Ᏼፄዋ༊۞በᛌጡన‫ؠ‬Ą

ֹϡ ECO Framework ฟ൴ᑕϡ඀ё

2-45

‫ڦ‬ຍ

ଋυืдଋ۞ᑕϡ඀ё۞૞९ཏ௡̚ࠎՏ˘࣎૞९న‫ؠ‬ዋ༊۞በᛌన‫ؠ‬ ᏴፄĄ 3

Ᏼፄ ProjectBuild <૞९ЩჍ>Ă҃<૞९ЩჍ> ߏ‫ޙ‬ϲଋ۞ᑕϡ඀ё۞ ၁၁૞९ЩჍĄ

ଋ۞ᑕϡ඀ё۞૞९ཏ௡̚۞Տ˘࣎૞९ౌົֹϡЧҋ۞በᛌన‫ؠ‬Ą၆‫ٺ‬૞ ९ણ҂۞ assemblies т‫ڍ‬ѣన‫ ؠ‬Copy LocalĂ֤ᆃ఺ֱણ҂ assemblies ಶ ົ޿֓‫ז‬૞९۞Ꮾ΍ϫᐂ̚Ą ੵ˞ଋ૞९ણ҂۞‫ ΁׎‬assemblies ̝γĂՏ˘࣎ ECO ᑕϡ඀ёౌυื̶൴ 5 ࣎ᗝγ۞ ECO ߛ॰ֹϡ۞ assembliesĞ఺ֱ assemblies ົពϯд૞९გ நࣶ̚૞९˭۞ References ༼ᕇ̚ğĈ y

Borland.Eco.Core.dll

y

Borland.Eco.Handles.dll

y

Borland.Eco.Interfaces.dll

y

Borland.Eco.Ocl.ParserCore.dll

y

Borland.Eco.Persistence.dll

Delphi 8 for .NET щ྅඀ёົԯ఺ 5 ࣎ assemblies щ྅д.NET Global Assembly Cache (GAC)̝̚Ą൒҃ GAC ̚۞ᑫ९̙ਕૉۡତፆүĂ఺ֱᑫ ९ͽ̈́‫ ΁׎‬Delphi 8 for .NET ̶ֳ۞ assemblies ౌົܲ঻˘Њ޿֓д.NET ۞ Common Files ϫᐂ̚Ą఺࣎ϫᐂ̰‫ྮؠ‬शߏ\Program Files\Common Files\Borland Shared\BDS\Shared Assemblies\ Ă ‫۞ ̚ ׎‬ ߏ̶൴፟ጡ̚ Delphi 8 for .NET ۞щ྅‫ۍ‬ώཱིĄ Ϊѣ‫ ࣎׌‬assembliesĂBorland.Eco.HandlesĂ‫ ׶‬Borland.Eco.Interfaces ົ ΍னд References ༼ᕇ˭Ą‫ ۞΁׎‬assemblies ߏдેҖॡഇજၗྶˢ۞Ă Яѩ఺ֱ assemblies ̪൒ᅮࢋ̶൴Ą дϡ͗ბֹϡ۰۞፟ጡ̚ĂଋΞͽԯ ECO assemblies ̶൴‫ ז‬GAC ̚Ăٕߏ ଋ˵Ξͽ̶൴ιࣇ‫ז‬ଋ۞ᑕϡ඀ё۞ϫᐂ̚Ąт‫ڍ‬ଋົ̶൴к࣎ ECO ᑕϡ ඀ёĂ֤ᆃଋ౵рͽВֳ assemblies ۞ԛё̶൴ιࣇĄ

2-46

ᑕϡ඀ёฟ൴͘Ί

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё ASP.NET ߏ.NET Framework ೩ֻֽฟ൴ Web ᑕϡ඀ё۞඀ёሀ‫ݭ‬Ąώౢ ୃࢗ˞ֹϡ Delphi 8 for .NET ฟ൴ ASP.NET ᑕϡ඀ё۞ࡦഀ៍‫ه‬Ąੵ˞ д.NET Framework ͚̚೯ྤफ़х‫̮פ‬І̝γĂDelphi 8 for .NET ˵Βӣ˞ DB Web ଠ‫ีט‬ĄDB Web ଠ‫ีט‬Ξͽ‫׶‬.NET Framework ͽ̈́ Borland Data Providers for .NET (BDP.NET)Ъүͽΐి Web ᑕϡ඀ё۞ฟ൴̍үĄ дώౢ̚ԧࣇ૟̬௜˭ࢬ۞͹ᗟĈ y

ASP.NET ໄ៍ ̬௜тңֹϡ Delphi 8 for .NET ฟ൴ Web ᑕϡ඀ё۞ ASP.NET ߛၹĄ

y

ASP.NET ۞ DB Web ଠ‫ีט‬ ̬௜ Borland DB Web ଠ‫ีט‬Ăιߏ˘̮࣎Іߛ॰ĂΞͽ‫ ׶‬Borland ྤ फ़ຏ̮ۢІЪүԣిฟ൴ ASP.NET ᑕϡ඀ёĄ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-1

y

ฟ൴ ASP.NET ᑕϡ඀ё ୃֹࢗϡ Delphi 8 for .NET ‫ޙ‬ϲ ASP.NET ᑕϡ඀ёυࢋ۞̍ү߹඀Ą

y

ֹϡᇾចበᏭጡ ̬௜тңֹϡ HTML ᇾចበᏭጡĄ

ASP.NET ໄ៍ ASP.NET ߏ.NET ೩ֻ۞඀ёనࢍᒖဩĂιΞͽઇࠎฟ൴ Internet ᑕϡ඀ё ۞८͕ԫఙĄASP.NET ߛၹజనࢍјΞͽ‫΁׎׶‬.NET ඀ёሀ‫ݭ‬൑ᓀ۞ඕЪ д˘੓Ă఺Β߁˞‫ޙ‬ϲϡ͗ბ۞ Web FormsĂͽ XML ઇࠎੈि፟‫ ۞ט‬Web Service Ă ͽ ̈́ ֹ ϡ ADO.NET ઇ ࠎ ‫ ޢ‬ბ ྤ फ़ х ‫ ۞ פ‬ԫ ఙ Ą ଋ Ξ ͽ ֹ ϡ ASP.NET ‫ޙ‬ϲેҖд Web Ҩ‫ڇ‬ጡ̚ͽܑಏࠎૄᖂ۞ HTML ᑕϡ඀ёĄ Borland ೩ֻ˞̍‫׍‬Ξͽᖎ̼ ASP.NET ۞ฟ൴̍үĄт‫ڍ‬ଋሢଉԣిᑕϡ඀ ё ฟ ൴ (RAD) ͽ ̈́ ֹ ϡ প ّ Ă ͞ ‫ ְ ׶ ڱ‬І ࠎ ጱ Ш ۞ ‫ ۏ‬І ጱ Ш ඀ ё న ࢍ (OOP)Ă֤ᆃଋಶົ൴னֹϡ ASP.NET ሀ‫ݭ‬ฟ൴ᖳಱ۞ Web ᑕϡ඀ёߏ‫ܧ‬ ૱΄ଋሢଉ۞Ą ˭ࢬ۞͹ᗟ೩ֻ˞ 1)ᒢྋ ASP.NET ߛၹ۞͹ࢋ̮Іͽ̈́ 2)ᒢྋ ASP.NET тңፋЪ.NET Framework ̚‫΁׎‬඀ёనࢍሀ‫ࡦ۞ݭ‬ഀ៍‫ه‬Ą ώ̈༼̬௜˞Ĉ

3-2

y

ASP.NET ߛၹĄ

y

Web Forms ̮ІĄ

y

Web Forms ྤफ़х‫פ‬Ą

y

Web ServicesĄ

y

ASP.NET ‫׻‬Щ۩มĄ

ᑕϡ඀ёฟ൴͘Ί

ASP.NET ߛၹ

ASP.NET ߛ ၹ ۞ ͹ ࢋ ̮ І ߏ Web ܑ ಏ Ă ASP.NET Ҩ ‫ ڇ‬ბ ଠ ‫ ี ט‬Ă code-behind ទᏭͽ̈́በᛌ۞ DLL ᑫ९ĄܑಏΒӣ˞ HTML ̮৵Ă͛фͽ ̈́Ҩ‫ڇ‬ბଠ‫ีט‬ĄCode-behind ᑫ९Βӣ˞ܑಏֹϡ۞ᑕϡ඀ёទᏭĄ҃በ ᛌ۞ DLL ᑫ९‫ົ݋‬д Web Ҩ‫ڇ‬ጡ̚જၗ۞யϠ HTML ඕ‫̰ڍ‬टĄ

Web ܑಏ̮І Web ܑ ಏ ֹ ϡ ˞ HTML ઇ ࠎ ෛ ᛇ ̼ ۞ ̬ ࢬ ͽ ̈́ ᐼ х д ፾ ϲ ᑫ ९ ̚ ۞ code-behind ទᏭֽ‫ؠ‬ཌྷଋ۞ Web ᑕϡ඀ёĄWeb ܑಏΒӣ˞ࢱࢬĂଠ‫ט‬ ีͽ̈́ code-behind ᑫ९Ą

Web Forms Page Web ܑಏࢱࢬΒӣ˞ HTML ‫ ׶‬ASP.NET Ҩ‫ڇ‬ბଠ‫ีט‬Ą༊ֹϡ۰ௐ˘Ѩд Web ˯х‫ܑפ‬ಏࢱࢬॡĂASP.NET ‫ົܮ‬யϠበᛌ۞ DLL ᑫ९Ăበᛌ۞ DLL ᑫ९‫ົܮ‬જၗ۞யϠ HTML Ꮾ΍ͽ‫ֹܮ‬ϡ۰ᕱᜓĄ

HTML ̮৵ͽ̈́Ҩ‫ڇ‬ბଠ‫ีט‬ ASP.NET ̚۞ HTML ̮৵‫׶‬ధк Web ࢱࢬ̚۞ HTML ̮৵ѣ඾‫ܧ‬૱૜̷ ۞ᙯܼĄѩγ఼ϡ۞ HTML ̮৵ĂWeb ܑಏࢱࢬ఼૱˵ົΒӣ ASP.NET Ҩ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-3

‫ڇ‬ბଠ‫ีט‬ĄASP.NET Ҩ‫ڇ‬ბଠ‫ีט‬Ξ̶ᇴ჌̙Т۞჌ᙷĈּт WebĂរ ᙋ‫ֹ׶‬ϡ۰ଠ‫ีט‬ĄWeb Ҩ‫ڇ‬ბଠ‫ܧีט‬૱ᙷҬͽܑಏࠎૄᖂ۞ଠ‫ีט‬Ăͽ ̈́˘ֱপҾϫ۞۞ଠ‫ีט‬Ăּт͟ፌٕߏྤफ़ॾଠ‫ีט‬Ąរᙋଠ‫̯ีט‬ధଋ ീྏֹϡ۰۞ᏮˢĄֹϡ۰ଠ‫݋ีט‬೩ֻ˞‫ޙ‬ϲΞࢦᖬֹϡ̮І۞፟‫ט‬Ăּ тΑਕܑ‫׍̍׶‬Е̮ІĄ˘ό‫ޙ‬ϲ˞఺ֱΞࢦᖬֹϡ۞̮І̝‫ޢ‬ĂଋಶΞͽ д‫ ΁׎‬Web ܑಏࢱࢬֹ̚ϡ఺ֱֹϡ۰ଠ‫ีט‬Ą

Code-behind ᑫ९ Code-behind ᑫ९Βӣ˞ Web ܑಏࢱࢬ̚‫׶‬ෛᛇ̼̮Іͽ̈́ ASP.NET Ҩ‫ڇ‬ ბଠ‫̢ีט‬જυࢋ۞ᑕϡ඀ёទᏭĄ

Web ܑಏྤफ़х‫פ‬ д.NET Framework ̚ĂWeb ܑಏߏᖣϤ ADO.NET х‫ྤפ‬फ़۞ĄଋΞͽ ֹϡ.NET Framework ̚۞ ADO.NET ٕߏ BDP.NET ̮Іឰ ASP.NET ాඕ ‫ז‬Ч჌̙Т۞ຽࠧᇾ໤ྤफ़ऱĄੵѩ̝γĂDB Web ଠ‫ีט‬Հᖎ̼˞ଋֹϡ BDP.NET ٕߏ.NET Framework ซҖྤफ़ऱฟ൴۞̍үĄDB Web ଠ‫ีט‬೩ ֻ˞Аซ۞ΑਕĂ఺Β߁˞ྤफ़ຏ̮ۢІॾĂᕱᜓଠ‫ีט‬Ă͟ፌĂcombobox ͽ̈́‫߹΁׎‬Җ۞̮ІĄ

Web Services Web Service ೩ֻ˞ᑕϡ඀ё̮Іֹϡͽ XML ࠎૄᖂ۞ੈि፟‫ט‬х‫פ‬Їң ۞̶೸ёր௚ĄWeb Service Ξͽߏᖎಏ۞ֹϡ XML ੈिՀາᅈბ۞ᑕϡ඀ ё(˵ధߏд Web ϡ͗ბ۞۵ைྤੈ)Ăٕߏ˘࣎ኑᗔ۞ ASP.NET/ADO.NET ᑕϡ඀ё۞ొЊΑਕĄWeb Service ‫ ׶‬ADP.NET ̶ֳ˞࠹Т۞.NET ߛၹͽ ‫ܮ‬ซҖ൑ᓀ۞ፋЪĄ

ASP.NET ‫׻‬Щ۩ม ኛણ҂ Microsoft .NET Framework SDK ͽ‫଀פܮ‬Հк System.Web ‫׻‬Щ ۩มͽ̈́ ASP.NET ۞ྤੈĄ

3-4

ᑕϡ඀ёฟ൴͘Ί

Borland DB Web ଠ‫ีט‬ Borland DB Web ଠ‫ีט‬ਕૉ‫ ׶‬BDP.NET ͽ̈́ .NET Framework ྤफ़х‫פ‬ ̮ІЪүͽᖎ̼ྤफ़ऱฟ൴۞̍үĄDB Web ଠ‫ྤߏีט‬फ़ຏ̮ۢІ̮ІĂ ι೩ֻ˞Аซ۞ΑਕĂ఺Β߁˞ྤफ़ຏ̮ۢІॾĂᕱᜓଠ‫ีט‬Ă͟ፌĂ combobox ͽ̈́‫߹΁׎‬Җ۞̮ІĄ ώ̈༼૟੅ኢ˭ࢬ۞͹ᗟĈ y

DB Web ଠ‫ߛีט‬ၹ

y

ྤफ़ຏ̮ۢІ۞ᐹᕇ

y

͚೯۞ྤफ़х‫̮פ‬І

y

DB Web ଠ‫׻ีט‬Щ۩ม

y

ֹϡ DB Web ଠ‫ ۞ีט‬ASP.NET ᑕϡ඀ё۞̶൴

DB Web ଠ‫ߛีט‬ၹ DB Web ଠ‫˘ߏีט‬௡ෛᛇ̼‫׶‬ෛᛇ̼۞̮ІĂιᖣϤ‫ٳ‬Ѣਕ˧ͽ̈́ૻ̂۞ ྤफ़ֽ໚ాඕ፟‫҃ט‬ਕૉΐి ASP.NET ᑕϡ඀ё۞ฟ൴̍үĄ̂ొЊ۞ DB Web ଠ ‫ ఼ ߏ ี ט‬ϡ ۞ ASP.NET GUI ଠ ‫ ี ט‬Ą ‫ ࣎ ˘ ۞ ̚ ׎‬ଠ ‫ߏ ี ט‬ DBWebDataSource ଠ‫ีט‬Ăι۞Αਕߏઇࠎෛᛇ̼ଠ‫ྤ׶ีט‬फ़ֽ໚̝ม ۞ྤफ़ຏۢాඕਕ˧ĄೱήྖᄲĂDBWebDataSource ଠ‫ ࠎีט‬ASP.NET ܑ ಏ̚ଠ‫ྤ׶ีט‬फ़ֽ໚̚۞ྤफ़̝ม໛఼۞፜ሇĄDBWebDataSource Ξͽ Тॡాඕ.NET Framework ADO.NET ͽ̈́ BDP.NET ̮І(ּтĂιΞͽ ాඕ‫ ז‬SQLDataAdapter ٕߏ BDP.NET ۞ BDPDataAdapter ٙயϠ۞੃ጸ វྤफ़ะ)Ąኛણ҂ Borland Data Providers for .NET ˘ౢ̚ୃࢗ۞ྤफ़х‫פ‬ ̮Іͽ‫଀פ‬Հк۞ྤੈĄ

ྤफ़ຏ̮ۢІ۞ᐹᕇ ˘ਠֽᄲĂ༊ଋฟ൴ֹϡ̮Іֽх‫ྤפ‬फ़ֽ໚̚۞ྤफ़۞ ASP.NET ᑕϡ඀ ёॡĂଋᅮࢋώ֗௡ၗ֭ͷᘭඕྤफ़ֽ໚‫׶‬ଠ‫ีט‬Ą఺ຍᏜ඾ଋυืೠ೪Տ ˘࣎ଠ‫ాีט‬ඕ‫ྤז‬फ़ֽ໚ֹٙϡ۞ᄬ‫׶ڱ‬ણᇴĄ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-5

ֹϡ DB Web ଠ‫۞ีט‬ᐹᕇߏ˘όଋֹϡ˞ DBWebDataSource ଠ‫ాีט‬ඕ ‫ྤז‬फ़ֽ໚̝‫ޢ‬Ăд ASP.NET ࢱࢬ̚۞ DB Web ଠ‫ౌีט‬ਕૉҋજᖣϤ DBWebDataSource ాඕ‫ྤז‬फ़ֽ໚Ąଋ‫̙ܮ‬ГᅮࢋΐˢЇң۞඀ёቅֽซ Җྤफ़ᘭඕ۞̍үĄ DB Web ଠ‫ีט‬೩ֻ˞ᇴีᐹ‫ٺ‬ᇾ໤ Web ଠ‫۞ีט‬ᐹᕇĂιࣇߏĈ y

̙ᅮࢋ‫ײ‬Ψ WebControl.databind()Ą˘ਠֽᄲд Web ܑಏ̚۞Տ˘࣎ ASP.NET ଠ‫ౌีט‬υืд Page_load ̚‫ײ‬Ψ఺࣎͞‫ڱ‬Ăӎ‫݋‬ଠ‫ีט‬ಶ̙ ົ΍னдܑಏ̚Ą

y

೩ֻనࢍॡഇᑭෛྤफ़۞ਕ˧Ą

y

ҋજԯྤफ़ளજՀາа‫ޢ‬ბ۞ྤफ़ะ̚Ą˘ਠֽᄲ ASP.NET ଠ‫ีט‬ᅮࢋ ᇤᆷ඀ёቅͽ‫ેܮ‬Җ఺ี̍үĄ

y

ჯ᜕ϫ݈ྤफ़Е۞ҜཉĄ

y

ҋજგநளજͽ̈́ྤफ़Е‫ې‬ၗĄ఺ຍᏜ඾ଂ̙Т፟ጡֽ۞ϡ͗ბΞͽ፾ ϲ۞̍үĂ҃൑ᅮ̶͕‫ٺ‬Ҩ‫ڇ‬ბ۞‫ې‬ၗĄ

ੵ˞఺ֱᐹᕇ̝γĂଋ˵Ξͽֹϡ‫މ‬ᄦ̼প‫۞ؠ‬ᐹᕇĈ y

DBWebDataSource ົჯ᜕˘࣎ளજ̍үҚЕĂЯѩֹϡ۰ΞͽᖣϤ఺࣎ পֽّаೇА݈ซҖ۞ளજĄ

y

ྤफ़ຏ̮ۢІᕱᜓଠ‫ีט‬Ξͽ‫̮ॾ׶‬Іͽ̈́͛фଠ‫˘ีט‬੓̍үĄ

y

DBWebDataGrid ೩ֻ˞̰‫ࢱ̶۞ޙ‬ΑਕĂ೩ֻ݈ࢱĂ˭˘ࢱ۞ဦညĂ በᏭ‫׶‬Ӂੵ᛼Ҝͽ̈́Հк۞ΑਕĄೱήྖᄲଋ̙Гᅮࢋдଋ۞ॾଠ‫ีט‬ ̚ࢦᖬᇤᆷ఺ֱΑਕ۞඀ёቅ˞Ą

͚೯۞ྤफ़х‫̮פ‬І DB Web ଠ‫ีט‬ᄃ.NET Framework ADO.NET ‫ ׶‬Borland BDP.NET ྤफ़ х ‫ ̮ פ‬І ౌ ࠹ ट Ą Ї ң ਕ ૉ జ .NET Framework ADO.NET ‫ ׶‬Borland BDP.NET х‫ྤ۞פ‬फ़ֽ໚ౌਕૉઇࠎ DB Web ଠ‫ྤ۞ีט‬फ़х‫ֽפ‬໚Ą

3-6

ᑕϡ඀ёฟ൴͘Ί

DB Web ଠ‫׻ีט‬Щ۩ม DB Web ଠ‫ ߏีט‬Borland.Data.Web ‫׻‬Щ۩มĄᖣϤֹϡ reflectionĂଋΞ ͽጯ௫‫׻࣎఺ז‬Щ۩ม۞ߛၹͽ̈́Βӣ۞ଠ‫ีט‬ĄଋΞͽдଋ۞૞९̚ΐˢ ఺࣎‫׻‬Щ۩มĂ൒‫ޢ‬д඀ёቅበᏭጡ̚ฟୁ఺࣎‫׻‬Щ۩มĄ఺࣎જүົฟୁ Reflection በᏭጡͽ̈́ົឰଋ࠻‫ז‬ٙѣଠ‫̈́ͽีט‬ଠ‫ีט‬јࣶ۞ඕၹྤੈĄ

͹ଂᙯܼ۞҂ณ ༊ DB Web ଠ‫ాีט‬ඕ‫ז‬͹ଂᙯܼ۞ଂ DataTable ॡĂ֤ᆃ΍னдଠ‫̚ีט‬ ۞ྤफ़Е‫זצܮ‬ଠ‫ט‬ι۞͹ྤफ़ܑ̚ϫ݈۞ྤफ़۞ѣड़ቑಛ۞ଠ‫ีט‬Ą

ֹϡ DB Web ଠ‫ ۞ีט‬ASP.NET ᑕϡ඀ё۞̶൴ дֹϡ DB Web ଠ‫ޙีט‬ϲ˞ ASP.NET ૞९̝‫ޢ‬Ă̶൴఺჌ ASP.NET ᑕϡ ඀ё‫˘׶‬ਠ۞ ASP.NET ᑕϡ඀ёߏ˘ᇹ۞Ą՟ѣপҾ۞̍үᅮࢋᗝγ۞ซ ҖĄ

ֹϡ DataViews DataViews ̯ధଋֹϡ RowFilter পّࣃд DataTable ̚న‫ྤؠ‬फ़࿅ᕭጡĂ ٕߏన‫ྤؠ‬फ़ͽপ‫۞ؠ‬ѨԔֽӔனĄдֹϡ DataViews ॡѣ˘ֱયᗟᅮࢋ҂ ᇋĂপҾߏ༊дેҖॡഇֹϡٕߏд͹ଂᙯֹܼ̚ϡॡĄώ̈༼ᖎ̬˞тң д̙Т۞ᑕϡֹ̚ϡ DataViewsĈ y

ેҖॡഇপّ

y

͹ଂᙯܼ(Master-detail relationships)

y

ClearSessionChanges ͞‫ڱ‬

y

ࢨ‫ט‬

ેҖॡഇপّ дనࢍॡഇĂ༊ DB Web ଠ‫ాีט‬ඕ‫ ז‬DataView ॡĂ༊ DataView ଠ‫ט‬ព ϯ۞ྤफ़Е۞পّࣃԼតॡĂDB Web ଠ‫ົܮีט‬ҋજᒔ଀Հາ۞፟ົĄд ેҖॡഇԼត DataView ۞পّࣃॡĂଋυืቁ‫ؠ‬д DB Web ଠ‫ีט‬Լតព

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-7

ϯ̝݈఺ֱԼតౌ̏གྷԆј˞ĄּтĂт‫ڍ‬ଋֹϡ ListBox ֽన‫ؠ‬࿅ᕭጡĂ ଋΞͽన‫ ؠ‬ListBox ۞ AutoPostback পّࣃࠎ True ֭ͷд Page_Load ְІ ̚ ᇤ ᆷ ඀ ё ቅ ֽ ఍ ந ༊ RowFilter Լ ត ॡ т ң న ‫ ؠ‬RowFilter ‫ ײ ׶‬Ψ ClearSessionChanges()͞‫ڱ‬ĄּтĂ઄నଋֹϡ˞ ASP.NET ListBox ۞ DataBind ాඕ‫ྤז‬फ़ܑĂТॡ‫̚׎‬Βӣ˞˘࣎ߤྙࣃĂ఺࣎ߤྙࣃߏઇࠎా ඕ ‫ ז‬DataGrid ۞ ௐ ˟ ࣎ ྤ फ़ ܑ ۞ ࿅ ᕭ ጡ Ą ֤ ᆃ ଋ Ξ ͽ న ‫ ؠ‬Listbox ۞ AutoPostback পّࣃࠎ TrueĂд Page_Load ̚఍ந RowFilter న‫ࣃؠ‬Ă֭ ͷд RowFilter Լត̝‫ײޢ‬Ψ ClearSessionChanges()͞‫ڱ‬Ą ኛ‫ڦ‬ຍĂт‫ڍ‬ଋన‫ ؠ‬AutoRefresh পّࣃࠎ FalseĂ఺ߏ̰‫ࣃؠ‬Ă֤ᆃଋΞ ਕົֹϡԣᐼ۞ྤफ़̙҃ߏ၁ᅫ۞ྤफ़Ąኛણ҂\Demos\DBWeb ϫᐂ˭۞ WorldTravel ቑּĂ֭ͷᒢྋ఺࣎߹඀ߏтң఍ந۞Ą

͹ଂᙯܼ(Master-detail relationships) ଋΞͽд͹ଂᙯܼ̚ᖣϤΐˢ࿅ᕭጡ҃ឰ DataView јࠎ͹ྤफ़ܑĄଋΞͽ д˘࣎ DataSet Βӣ۞ 2 ٕ࣎ߏк࣎ DataTables ̚న‫ؠ‬͹ଂᙯܼĂ൒‫ాޢ‬ඕ DataView ‫ז‬͹ DataTable ̚Ą༊ DBWebDataSource ాඕ‫ ז‬DataView ‫ޢ‬Ă DB Web ଠ‫ܮีט‬ΞͽᏴፄాඕϤ DataView ΃ܑ۞͹ྤफ़ܑĂٕߏ̄ྤफ़ ܑĄ

ClearSessionChanges ͞‫ڱ‬ ClearSessionChanges()͞‫ڱ‬Ξͽ఼ۢ DBWebDataSource ᄲ‫ ځ‬DataSet ̏གྷ ԼតĂϫ݈۞ྤफ़ЕĂ᛼Ҝͽ̈́ளજ۞ྤफ़ྤੈ̏གྷ൑ड़˞Ąٙѣ‫إ‬ϏՀາ ۞Լតౌ૟జொੵĄኛ̙ࢋдᕱᜓ޷ตజᕇᏴॡ‫ײ‬Ψ఺࣎͞‫ڱ‬Ăӎ‫݋‬ᕱᜓ޷ ต૟൑‫̍ڱ‬үĄ

ࢨ‫ט‬ ֹϡ DataViews ॡѣ˘ֱࢨ‫ט‬Ąд DataViews ̚າᆧྤफ़Е‫׶‬д DataTable ̚າᆧྤफ़Е۞Җࠎߏ̙˘ᇹ۞Ą y

кѨາᆧ Null ੃ᐂĄDataView ̙̯ధкѨາᆧ Null ੃ᐂĄ఺ຍᏜଋυ ืАдາᆧ۞ྤफ़Е̚Ꮾˢྤफ़Ă̖ਕૉᚶᜈາᆧ‫ྤ۞΁׎‬फ़ЕĄ

3-8

ᑕϡ඀ёฟ൴͘Ί

y

Ӂੵ̏གྷ೧ˢ۞ྤफ़Ąт‫̏ڍ‬གྷ೧ˢ۞ྤफ़జӁੵĂ֤ᆃ֤ඊྤफ़‫̏ܮ‬ གྷଂ DataView ̚ொੵĂଋ൑‫ֹڱ‬ϡ Undo ГаೇӁੵ۞ྤफ़Ą

y

ຍγӁੵĄт‫̏ڍ‬གྷ೧ˢ۞ྤफ़ЕΒӣ˞ಏ˘۞‫ ܧ‬null ᇴࣃĂ൒‫֤࣎ޢ‬ ᇴࣃజన‫ؠ‬ј nullĂ֤ᆃ఺࣎ྤफ़Ед˘ֱଐԛ˭ΞͽӁੵ֭ͷ൑‫ڱ‬а ೇĄ

y

DataView SORT পّĄ DBWeb ϫ݈՟ѣԆБ͚೯ DataView ۞ SORT পّĄт‫ڍ‬ѣ˘࣎ଵԔ᛼ҜĂ֤ᆃΒӣд SORT পّࣃ̚۞᛼Ҝᇴࣃ‫ܮ‬ ൑‫ڱ‬ԼតĂ҃ͷ DBWebNavigator ۞າᆧᔣົᇶॡεΝΑਕĄ

WebDataLink ̬ࢬ ٙѣాඕ‫ ז‬DBWebDataSource ۞ DB Web ଠ‫ౌีט‬၁ү˞˭ࢬ۞̬ࢬĈ y

IDBWebDataLink

y

IDBWebColumnLink:IDBWebDataLink

y

IDBWebLookupColumnLink:IDBWebColumnLink

y

IDBWebDataLink

IDBWebDataLink DBWebNavigator ‫ ׶‬DBWebGrid ̮І၁ү˞ѩ̬ࢬĄ఺̬࣎ࢬ‫ؠ‬ཌྷ˞ྤ फ़ֽ໚ͽ̈́ྤफ़ྤफ़ܑ̝ม۞ᙯܼĄ

IDBWebColumnLink:IDBWebDataLink ఺ ࣎ ̬ ࢬ జ DBWeb ᛼ Ҝ ଠ ‫ ี ט‬ٙ ၁ ү Ă ּ т DBWebImage Ă DBWebTextBoxĂ DBWebCalendar ͽ̈́‫̮۞΁׎‬І. ఺̬࣎ࢬ‫ؠ‬ཌྷ˞᛼Ҝ ଠ‫ాีט‬ඕ۞᛼ҜЩჍĄ

IDBWebLookupColumnLink:IDBWebColumnLink ఺ ࣎ ̬ ࢬ జ DBWeb ᛼ Ҝ ଠ ‫ ี ט‬ٙ ၁ ү Ă ּ т DBWebListBox Ă DBWebRadioGroupĂ ͽ̈́ DBWebDropDownListĄ఺̬࣎ࢬд DataSet

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-9

̚ ‫ ؠ‬ཌྷ ˞ TableName Ă ι ΃ ܑ д lookup ̚ Β ӣ ྤ फ़ ۞ ྤ फ़ ܑ Ă ColumnNameĂ΃ܑ˞Βӣᇴࣃ۞᛼ҜĂ༊ᇴࣃజᏴፄॡ ColumnName ົ ాඕ‫ז‬ពϯι۞ଠ‫̝̚ีט‬Ą̰‫ ˯ؠ‬ColumnName ‫ ׶‬DataTextField ߏ˘ ᇹĄ

ฟ൴ ASP.NET ඀ё ώ̈༼૟ᄲ‫ځ‬тңֹϡ Delphi 8 for .NET ฟ൴ ASP.NET ᑕϡ඀ёĂ֭ͷֹ ϡ˘࣎̈ቑּֽᄲ‫ځ‬ฟ൴۞࿅඀ͽ̈́˘ֱ̈ԫμĄд఺࣎ቑּ̚૟ᄲ‫ځ‬т˭ ۞͹ᗟĈ y

ฟ൴ ASP.NET ͹඀ё

y

ฟ൴ ASP.NET ֹϡ۞ᅃӄ Assembly

y

ֹϡ ASP.NET Бા‫ۏ‬І

y

д̙Т۞ Web Page ̷̚ೱ

ASP.NET ͹඀ё ࢋฟ൴ ASP.NET ᑕϡ඀ёĂኛд Delphi 8 for .NET ፋЪ൴णᒖဩ̚ᕇᏴ File|New|Others…Αਕܑୁજ New Items ၆ྖ஼ĂᕇᏴ Delphi.NET ASP Projects ༼ᕇ֭ͷᕇᏴ‫ ۞̚׎‬ASP.NET Web Application ဦညĂт˭ٙϯĈ

3-10

ᑕϡ඀ёฟ൴͘Ί

ᕇᏴ˯ဦ۞ OK ޷ต̝‫ ޢ‬Delphi 8 for .NET ົྙયฟ൴ˠࣶ ASP.NET ૞९ ۞ЩჍĂᐼхҜཉͽ̈́х‫פ‬ᝋࢨඈྤੈĄдฟ൴ˠࣶᏮˢ఺ֱྤੈ̝‫ޢ‬Ă Delphi 8 for .NET ົͽฟ൴ˠࣶᏮˢ۞૞९ЩჍд Web Server ̚‫ޙ‬ϲ˘࣎ ТЩ۞෍ᑢϫᐂĄּтд˭ࢬ۞၆ྖ஼̚ώቑֹּϡ˞ waASPNETDemo ઇ ࠎ Щ Ⴭ Ă ֤ ᆃ Delphi 8 for .NET ‫ ົ ܮ‬д IIS ̚ ‫ ޙ‬ϲ ˘ ࣎ Щ ࠎ waASPNETDemo ۞෍ᑢϫᐂĄ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-11

ᕇᏴ˯ဦ۞ OK ޷ต̝‫ޢ‬ĂDelphi 8 for .NET ‫ົܮ‬ҋજ‫ޙ‬ϲ˘࣎ ASP.NET ૞९Ă૞९ЩჍಶߏ݈ࢬฟ൴ˠࣶᏮˢ۞ЩჍĂ֭ͷд఺࣎૞९̚ҋજ‫ޙ‬ϲ ૄ ώ ۞ ᑫ ९ Ă ‫ ̚ ׎‬Β ӣ ˞ *.aspx ۞ ᑫ ९ ͽ ̈́ ೡ ࢗ ASP.NET ૞ ९ প ّ ۞ Web.Config ᑫ९Ăฟ൴ˠࣶΞͽд૞९გநࣶ̚࠻‫ז‬Ϥ Delphi 8 for .NET ҋજயϠ۞ᑫ९Ą ኛд૞९გநࣶ̚ᗕᑝ WebForm1.aspx ᑫ९ͽ‫ୁܮ‬જ Delphi 8 for .NET ۞ ASP.NET ෛᛇ̼నࢍछ໤౯ֹϡ‫ٳ‬Ѣ۞͞ёᖣϤ Web ଠ‫ֽีט‬ฟ൴ቑּ ASP.NET ᑕϡ඀ёĄ ࢵАд Web Controls ۞̍‫׍‬ሹ̚‫ٳ‬Ѣ LabelĂCheckBoxĂTextBox ͽ̈́ Button ඈ Web ଠ‫ זีט‬Web ܑಏ̚Ăତ඾т˭ࢬ۞ဦԛన‫ ֱ఺ؠ‬Web ଠ ‫ ۞ีט‬Text পّࣃĈ

3-12

ᑕϡ඀ёฟ൴͘Ί

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-13

дనࢍԆ˞͹ Web ܑಏ̝‫ޢ‬Ăତ˭ֽԧࣇᔘᅮࢋГ‫ޙ‬ϲௐ˟࣎ Web ܑಏĂ ఺࣎ Web ܑಏ̚дֹϡ۰‫ٺ‬͹ Web ܑಏᕇᏴ˞ֹϡ۞ Borland ̍‫ޢ̝׍‬ព ϯቁ‫ੈྤ۞ؠ‬Ą ࢋд ASP.NET ૞९̚‫ޙ‬ϲௐ˟࣎ Web ܑಏĂᕇᏴ File|New|Others…Αਕ ܑୁજ New Items ၆ྖ஼ĂᕇᏴ Delphi ASP Files ༼ᕇ֭ͷᕇᏴ‫۞̚׎‬ ASP.NET Web Page ဦညĂт˭ٙϯĈ

3-14

ᑕϡ඀ёฟ൴͘Ί

ᕇᏴ˞˯ဦ۞ OK ޷ต̝‫ޢ‬ĂDelphi 8 for .NET ົд ASP.NET ૞९̚ΐˢ ˘࣎າ۞*.aspx ᑫ९Ąд૞९გநࣶ̚ᗕᑝາ۞*.aspx ᑫ९ୁજෛᛇ̼నࢍ छĂ֭ͷт˭ဦٙϯд Web ܑಏ̚ΐˢ˘࣎ Label ̮Іͽ̈́˘࣎ HyperLink ̮ІĂ֭ͷన‫ؠ‬ιࣇ۞ Text পّࣃĄ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-15

ѩॡд૞९გநࣶ̚ᑕྍѣ‫*࣎׌‬.aspx ᑫ९Ăฟ൴ˠࣶΞͽд૞९გநࣶ̚ А ᕇ Ᏼ *.aspx ᑫ ९ Ă Г ᕇ Ᏼ ໣ ဂ Π ᔣ ୁ જ ԣ ព Α ਕ ܑ ֭ ͷ ᕇ Ᏼ ‫۞ ̚ ׎‬ rename…Ᏼีֽࢦາ‫׻‬Щ*.aspx ᑫ९۞ЩჍĄּт˭ဦಶԯ WebForm1 Հ Լј SurveyMain.aspxĄ

3-16

ᑕϡ඀ёฟ൴͘Ί

ฟ൴ˠࣶдֹϡෛᛇ̼నࢍछనࢍ Web ܑಏॡĂDelphi 8 for .NET ົд࠹ ၆ ۞ *.aspx ᑫ ९ ̚ ҋ જ ய Ϡ ฟ ൴ ˠ ࣶ న ࢍ ۞ ̰ ट ඀ ё ቅ Ą ּ т ˭ ࢬ ಶ ߏ SurveyMain.aspx ۞̰टĂ‫̚׎‬ѣ˘ֱࣃ଀੅ኢ۞г͞Ą <%@ Page language="c#" Debug="true" Codebehind="SurveyMain.pas" AutoEventWireup="false" Inherits="SurveyMain.TWebForm1" %> <meta name="GENERATOR" content="Borland Package Library 7.1">
Borland ฟ൴̍‫׍‬አߤ ଋϫֹ݈ϡ۞ Borland ̍‫׍‬

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-17

ଋ۞ EMail : "ؠ‬


ଂ˯ࢬ۞̰टΞͽ࠻‫ז‬Տ˘࣎ Web ଠ‫ֹౌีט‬ϡ˞ ASP.NET ۞ᇾច(Tag) ֽො‫ځ‬Ăּт΃ܑ Label ଠ‫ ߏ۞ีט‬asp:labelĄѩγд˯ࢬ۞඀ёቅ̚Ξͽ ࠻‫ז‬дௐ 1 Җֹϡ˞Ĉ

3-18

ᑕϡ඀ёฟ൴͘Ί

Codebehind="SurveyMain.pas"

ֽ Ә ෦ ASP.NET ે Җ ͔ ᑜ ఺ ࣎ Web ܑ ಏ ۞ ᑕ ϡ ඀ ё ទ Ꮽ ߏ д SurveyMain.pas ඀ёಏ̮̚ͽ Delphi ඀ёᄬ֏ฟ൴۞Ąൾ‫ޢ‬ԧࣇΞͽ࠻‫ז‬ Delphi 8 for .NET тңాඕ Web ܑಏ̚ Web ଠ‫ְ۞ีט‬І఍ந‫ב‬ё‫׶‬ Delphi ᇤᆷ඀ёቅĄ నࢍԆ˞ Web ܑಏ̝‫ޢ‬ಶΞͽฟؕᇤᆷ ASP.NET ᑕϡ඀ё۞ទᏭ඀ёቅ ˞ĄࢵАឰԧࣇଂ SurveyMain ܑಏ̚۞ĺቁ‫ؠ‬Ļ޷ตฟؕĂ༊ֹϡ۰д͹ Web ܑಏ̺̚Ᏼ˞ֹϡ۞̍‫֭׍‬ͷᕇᏴĺቁ‫ؠ‬Ļ޷ต̝‫ޢ‬Ăቑּ ASP.NET ᑕϡ඀ёυืฟؕ఍ந఺ֱྤफ़Ąࢋࠎ Button ଠ‫ีט‬ΐˢ Click ְІ఍ந‫ב‬ ёĂኛд Web ܑಏనࢍछ̚ᗕᑝĺቁ‫ؠ‬Ļ޷ตĂDelphi 8 for .NET ‫ົܮ‬ҋ જயϠ OnClick ְІ఍ந‫ב‬ё֭ͷซˢ඀ёቅበᏭጡ̚ĄдѩְІ఍ந‫ב‬ё ̚АᏮˢ˭ࢬ۞඀ёቅĈ procedure TWebForm1.btnOK_Click(sender: System.Object; e: System.EventArgs); begin if (HandleInputData) then Server.Transfer('ThankMessage.aspx'); end; function TWebForm1.HandleInputData: Boolean; begin Result := True; end;

TWebForm1.btnOK_Click А‫ײ‬Ψ HandleInputData ֽ఍நֹϡ۰д Web ܑ ಏ̚ᕇᏴ۞ᏴีĂт‫ڍ‬఍நјΑಶ‫ײ‬Ψ Server ‫ۏ‬ІӔன ThankMessage.aspx ۞ Web ̰टĄ҃ ThankMessage.aspx ಶߏ݈ࢬΐˢ۞ௐ˟࣎ Web ܑಏĄ ࠎ̦ᆃֹϡ۰дϡ͗ბᕇᏴ˞ Web ܑಏ̚۞ĺቁ‫ؠ‬Ļ޷ต‫ ޢ‬ASP.NET ᑕϡ ඀ёಶົેҖ˯ࢬ۞ TWebForm1.btnOK_Click ְІ఍ந‫ב‬ёĉ఺ߏЯࠎд SurveyMain.aspx ̚ĺቁ‫ؠ‬Ļ޷ตଠ‫ߏีט‬ො‫ેځ‬ҖдҨ‫ڇ‬ბĂЯѩ༊ֹϡ ۰ᕇᏴĺቁ‫ؠ‬Ļ޷ต‫ޢ‬Ăፋ࣎ Web ܑಏົᖣϤ HTTP ็ਖ਼‫ ז‬Web Ҩ‫ڇ‬ጡ఍ நĄ "ؠ‬

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-19

Ϥ‫ ٺ‬SurvetMain.aspx ֹϡ˞ CodeBehind ԫఙĂЯѩ Web Ҩ‫ڇ‬ጡົ‫ײ‬Ψ SurveyMain.pas ֽ఍நֹϡ۰ᕇᏴ۞જүĂ҃д Delphi8 for .NET ࠎ Web ܑಏயϠ۞඀ёቅ̚ĂWeb ܑಏ۞၁ү඀ёಏ̮ົд InitializeComponent ͞‫ײ̚ڱ‬Ψ Include ԯ btnOK_Click ְІ఍ந‫ב‬ё‫ ׶‬Button ଠ‫ีט‬ᘭඕд ˘੓Ĉ {$REGION 'Designer Managed Code'} /// <summary> /// Required method for Designer support -- do not modify /// the contents of this method with the code editor. /// procedure TWebForm1.InitializeComponent; begin Include(Self.btnOK.Click, Self.btnOK_Click); Include(Self.btnResult.Click, Self.btnResult_Click); Include(Self.Load, Self.Page_Load); end;

ฟ൴ ASP.NET ֹϡ۞ Assembly д݈ࢬ۞ HandleInputData ͞‫̚ڱ‬ᔘ՟ѣ၁үᑕϡ఍நទᏭĂ఺ߏЯࠎώቑ ּ૟ֹϡΩγ˘࣎ Assembly ֽ఍ந Web ܑಏ̚Ꮾˢ۞ྤफ़ͽ̈́ᑕϡ඀ёទ ᏭĄ னдд Delphi 8 for .NET ۞૞९გநࣶ̚‫ޙ‬ϲ˘࣎າ۞ Package ૞९Ă఺Ξ ͽᖣϤᕇᏴ File|New|Others…ୁજ New Items ၆ྖ஼Ăд Delphi for NET Projects ༼ᕇ̚ᕇᏴ Package ဦညͽ‫ޙ‬ϲ Package ૞९Ăт˭ဦٙϯĈ

3-20

ᑕϡ඀ёฟ൴͘Ί

ତ ඾ д Package ૞ ९ ̚ ‫ ޙ‬ϲ ‫ ࣎ ׌‬඀ ё ಏ ̮ Ă ఺ Ξ ͽ ᖣ Ϥ ᕇ Ᏼ File|New|Others… ୁ જ New Items ၆ ྖ ஼ Ă д Delphi for NET Projects/New Files ༼ᕇ̚ᕇᏴ Unit ဦညͽ‫ޙ‬ϲ Package ૞९Ăт˭ဦٙϯĈ

ௐ˘࣎඀ёಏ̮ߏᐼхֹϡ۰д͹ Web ܑಏ̚ᕇᏴ۞ᏴีĂ఺࣎඀ёಏ̮జ ‫׻‬Щࠎ uSurveyDataĂι‫ކ‬Ә˞˘࣎ Record ‫ݭ‬ၗ۞ SurveyDataĂ֭ͷд SurveyData ֹ̚ϡ˞˘࣎ᙷҾតᇴ sDataMapĂsDataMap ߏ.NET ߛ॰̚ ۞ HashTable ᙷҾĄ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-21

unit uSurveyData; interface uses System.Collections; type SurveyData = Record class var sDataMap : Hashtable; EMail : String; class Constructor Create; end; implementation { SurveyData } class constructor SurveyData.Create; begin sDataMap := HashTable.Create; end; end.

Package ૞९̚۞ௐ˟࣎඀ёಏ̮ߏ uSurveyĂι‫ކ‬Ә˘࣎˘࣎఍நֹϡ۰ Ꮾ ˢ ۞ ᑕ ϡ ඀ ё ទ Ꮽ Ą TSurvey ‫ ކ‬Ә ֭ ͷ ၁ ү ˞ ͹ Web ܑ ಏ ‫ ײ‬Ψ ۞ DoHandleSurveyDataĂТॡ TSurvey ˵ֹϡ˞˘࣎ HashTable ᙷҾ‫ۏ‬Іֽ ᐼхፋ࣎ ASP.NET ᑕϡ඀ёჯ᜕۞Տ˘࣎ϡ͗ბᕇᏴ۞̍‫׍‬ᏴีĄ unit uSurvey; interface uses System.Collections, uSurveyData; type TSurvey = class private { Private Declarations } myData : HashTable; public constructor Create; procedure DoHandleSurveyData(sData : SurveyData); function GetKeyData(aKey : TObject) : TObject; property SurveyData : HashTable read myData; end;

3-22

ᑕϡ඀ёฟ൴͘Ί

implementation constructor TSurvey.Create; begin inherited Create; // TODO: Add any constructor code here myData := HashTable.Create; end; procedure TSurvey.DoHandleSurveyData(sData : SurveyData); var aValue : TObject; myValue : TObject; iCount : Integer; IEnum : IDictionaryEnumerator; begin IEnum := sData.sDataMap.GetEnumerator; while (IEnum.MoveNext) do begin if (myData.Contains(IEnum.Key)) then begin myValue := GetKeyData(IEnum.Key); aValue := IEnum.Value; iCount := Convert.ToInt32(myValue) + Convert.ToInt32(aValue); myData.Remove(IEnum.Key); myData.Add(IEnum.Key, TObject(icount)); end else myData.Add(IEnum.Key, IEnum.Value); end; end; function TSurvey.GetKeyData(aKey : TObject) : TObject; var IMyEnum : IDictionaryEnumerator; entry : DictionaryEntry; begin Result := nil; IMyEnum := myData.GetEnumerator; while (IMyEnum.MoveNext) do begin entry := IMyEnum.Entry; if (entry.Key = aKey) then begin Result := entry.Value; break; end; end; end; end.

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-23

DoHandleSurveyData ົॲፂൾ‫ޢ‬Ϥ͹ Web ܑಏ‫ދ‬྅Տ˘࣎ϡ͗ბᕇᏴ۞ ̍‫׍‬Ᏼี۞ SurveyData ྤफ़ֽՙ‫ؠ‬тң௢ࢍՏ˘࣎̍‫׍‬జᏴፄ۞ѨᇴĄ DoHandleSurveyData ົॲፂ SurveyData ̚۞ྤफ़Ăͽ̈́ιώ֗ჯ᜕۞ HashTable ̚۞ྤफ़ֽՙ‫ؠ‬тң఍நĄт‫ ڍ‬SurveyData Βӣ˞ myData ̚ ՟ѣ۞̍‫׍‬ᏴีĂ֤ᆃ DoHandleSurveyData ‫ົܮ‬д myData ̚ΐˢ˘࣎າ ۞ EntryĄт‫ ڍ‬DoHandleSurveyData ൴ன SurveyData Βӣ˞ myData ̚ ̏གྷѣ۞ EntryĂಶԯ myData ̚ჯ᜕۞ Tool Ᏼี‫פ‬΍ĂГ‫ ׶‬SurveyData ̚۞Ᏼี࠹ΐĂ౵‫ޢ‬Гԯඕ‫ڍ‬ᐼха myData ̝̚Ą னдበᛌ఺࣎ Package ૞९јࠎ AssemblyĂ໤౯ឰ ASP.NET ᑕϡ඀ё‫ײ‬Ψ ֹϡĄ

၁ү͹඀ё۞ HandleInputData ͞‫ڱ‬ னда‫ ז‬ASP.NET ᑕϡ඀ё૞९Ăд HandleInputData ͞‫̚ڱ‬ᇤᆷт˭۞ ඀ёቅĈ function TWebForm1.HandleInputData: Boolean; var aData : SurveyData; begin Result := True; aData := GetSurveyData; aSurvey! :=! TSurvey(Application['SURVEY']); aSurvey.DoHandleSurveyData(aData); end;

function TWebForm1.GetSurveyData: SurveyData; var aData : SurveyData; begin aData.sDataMap.Clear; if (cbDelphi.Checked) then aData.sDataMap.Add(cbDelphi.Text, '1'); if (cbCB.Checked) then aData.sDataMap.Add(cbCB.Text, '1'); if (cbCBX.Checked) then aData.sDataMap.Add(cbCBX.Text, '1');

3-24

ᑕϡ඀ёฟ൴͘Ί

if (cbDelphiNET.Checked) then aData.sDataMap.Add(cbDelphiNET.Text, '1'); if (cbJBuilder.Checked) then aData.sDataMap.Add(cbJBuilder.Text, '1'); if (cbTogether.Checked) then aData.sDataMap.Add(cbTogether.Text, '1'); if (cbTogetherNET.Checked) then aData.sDataMap.Add(cbTogetherNET.Text, '1'); if (cbBorlandC.Checked) then aData.sDataMap.Add(cbBorlandC.Text, '1'); Result := aData; end;

HandleInputData ‫ײ‬Ψ GetSurveyData ͞‫ڱ‬ќะֹϡ۰д Web ܑಏ˯ᕇᏴ ۞̍‫׍‬ᏴีĂତ඾ଂ ASP.NET ۞ Application ‫ۏ‬І̚‫פ‬΍Бા TSurvey ‫ۏ‬ ІĂГ‫ײ‬Ψ TSurvey ‫ۏ‬І۞ DoHandleSurveyData ͞‫ڱ‬఍நֹϡ۰۞ᏮˢĄ Ҍ‫ٺ‬Бા TSurvey ‫ۏ‬Іߏд Web ܑಏ۞ Page_Load ͞‫ޙ̚ڱ‬ϲ۞Ĉ procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); begin // TODO: Put user code to initialize the page here if (Application['SURVEY'] = nil) then begin aSurvey := TSurvey.Create; Application['SURVEY'] := aSurvey; end; end;

ࢋበᛌ࣒Լ࿅۞ቑּ ASP.NET ૞९ĂࢵАυืдቑּ ASP.NET ૞९̚ΐˢ ણ҂݈ࢬ۞ Package ૞९۞በᛌඕ‫ ڍ‬AssemblyĈ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-25

ତ඾д ASP.NET ᑕϡ඀ё۞ uses ή̄̚ΐˢ Package ૞९̚۞‫࣎׌‬඀ёಏ ̮Ĉ uses System.Collections, System.ComponentModel, System.Data, System.Drawing, System.Web, System.Web.SessionState, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls, uSurvey, uSurveyData;

னдበᛌቑּ ASP.NET ૞९Ăѩॡд૞९۞෍ᑢϫᐂ˭ᑕྍѣ˘࣎ bin ̄ ϫᐂĂд bin ̄ϫᐂ̚‫݋‬хд˞ ASP.NET ᑕϡ඀ёͽ̈́ Package ఺‫࣎׌‬ Assembly DLLĂт˭ٙϯĈ

3-26

ᑕϡ඀ёฟ൴͘Ί

౵‫ޢ‬ឰԧࣇГΐˢΩγ˘࣎ Web ܑಏĂ఺࣎ Web ܑಏ૟ពϯϫ݈ٙѣֹϡ ۰၆‫׍̍ٺ‬Ᏼี۞Ᏼፄඕ‫ڍ‬Ą னдд૞९გநࣶ̚ᖣϤ New Items ၆ྖ஼Гΐˢ˘࣎ ASP.NET PageĈ

д఺࣎າ۞ Web ܑಏ̚ΐˢ˘࣎ Table ଠ‫ ࣎˘̈́ͽีט‬Button ଠ‫ีט‬Ąֹ ϡ‫ۏ‬Іᑭෛጡࠎ Table ଠ‫ีט‬ΐˢdz࣎ RowĂ֭ͷࠎՏ˘࣎ Row ΐˢ‫࣎׌‬ CellĂт˭ٙϯĈ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-27

ࠎ఺࣎າ۞ Web ܑಏ‫פ‬Щࠎ ShowResultĂ֭ͷᇤᆷт˭۞඀ёቅĈ unit ShowResult; interface uses System.Collections, System.ComponentModel, System.Data, System.Drawing, System.Web, System.Web.SessionState, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls, uSurvey, uSurveyData; type TWebForm1 = class(System.Web.UI.Page) {$REGION 'Designer Managed Code'} strict private procedure InitializeComponent; procedure btnBackToMain_Click(sender: System.Object; e: System.EventArgs); {$ENDREGION} strict private procedure Page_Load(sender: System.Object; e: System.EventArgs); strict protected tblResult: System.Web.UI.WebControls.Table; btnBackToMain: System.Web.UI.WebControls.Button; procedure OnInit(e: EventArgs); override; private { Private Declarations } aSurvey : TSurvey; procedure DoShowResult; public { Public Declarations } end; implementation {$REGION 'Designer Managed Code'} /// <summary> /// Required method for Designer support -- do not modify /// the contents of this method with the code editor. /// procedure TWebForm1.InitializeComponent; begin Include(Self.btnBackToMain.Click, Self.btnBackToMain_Click); Include(Self.Load, Self.Page_Load); end; {$ENDREGION} procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); begin // TODO: Put user code to initialize the page here aSurvey := TSurvey(Application['SURVEY']);

3-28

ᑕϡ඀ёฟ൴͘Ί

DoShowResult; end; procedure TWebForm1.OnInit(e: EventArgs); begin // // Required for Designer support // InitializeComponent; inherited OnInit(e); end; procedure TWebForm1.btnBackToMain_Click(sender: System.Object; e: System.EventArgs); begin Server.Transfer('SurveyMain.aspx'); end; procedure TWebForm1.DoShowResult; var aResult : HashTable; IEnum : IDictionaryEnumerator; iCount : Integer; begin aResult := aSurvey.GetSurveyData; IEnum := aResult.GetEnumerator; iCount := 0; while (IEnum.MoveNext) do begin tblResult.Rows.Item[iCount].Cells.Item[0].Text := IEnum.Key.ToString; tblResult.Rows.Item[iCount].Cells.Item[1].Text := IEnum.Value.ToString; Inc(iCount); end; end;

ShowResult Web ܑಏ͹ࢋߏពϯ TSurvey ̚ჯ᜕۞ֹϡ۰Ᏼፄྤफ़ĂЯѩ д ι ۞ Page_Load ְ І ఍ ந ‫ ב‬ё ̚ А ‫ פ‬΍ Б ા TSurvey ‫ ۏ‬І Ă Г ‫ ײ‬Ψ DoShowResult ព ϯ ඕ ‫ ڍ‬Ą DoShowResult ͞ ‫ ڱ‬ᖣ Ϥ .NET ߛ ॰ ۞ IDictionaryEnumerator ̬ࢬଂ TSurvey ‫ۏ‬Іჯ᜕۞ Hashtable ‫ۏ‬І̚˘˘ ‫פ‬΍ٙѣ۞ྤफ़֭ͷពϯд Web ܑಏ̚۞ Table ଠ‫̚ีט‬Ą ࠎ˞ពϯ ShowResult Web ܑಏĂа‫ז‬͹ Web ܑಏĂд‫̚׎‬ΐˢ˘࣎ Button ଠ‫ีט‬Ă֭ͷдι۞ Click ְІ఍ந‫ב‬ё̚ᇤᆷт˭۞඀ёቅĈ procedure TWebForm1.btnResult_Click(sender: System.Object; e: System.EventArgs); begin Server.Transfer('ShowResult.aspx'); end;

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-29

˯ࢬ۞඀ёቅᖎಏ۞ֹϡ Server ‫ۏ‬Іֽពϯ'ShowResult Web ܑಏĄ னдԧࣇಶΞͽ‫ދ‬Җѩቑּ ASP.NET ඀ё˞Ă˭ࢬ۞ᇴ࣎൪ࢬߏѩቑּ ASP.NET ඀ёેҖ۞ඕ‫ڍ‬Ĉ

3-30

ᑕϡ඀ёฟ൴͘Ί

౵‫ޢ‬ԧࣇᔘΞͽࠎቑּ ASP.NET ඀ёГΐˢᑭߤ Email ۞Αਕͽ༰ͤ࠹Т Email ࢦᖬԸை۞ଐԛĂ఺Ϊᅮࢋឰ TSurvey ᙷҾГჯ᜕̏གྷԸை۞ Email ӈΞĂ˭ࢬߏΐˢ఺࣎̈Αਕ۞඀ёቅĈ function TWebForm1.HandleInputData: Boolean; var aData : SurveyData; begin

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-31

Result := True; aData := GetSurveyData; aSurvey := TSurvey(Application['SURVEY']); if(aSurvey.AlreadySurveyed(Self.tbEMail.Text)) then begin Result := False; Self.tbEMail.Text := 'Sorry, ଋ̏གྷ๱ᆷ࿅˞!'; end else begin aSurvey.DoHandleSurveyData(aData); aSurvey.Addsurveyer(Self.tbEMail.Text); end; end;

uSurvey ඀ёಏ̮ᅮࢋд TSurvey ᙷҾ̚ΐˢ˘࣎າ۞ HashTable ‫ۏ‬ІĈ unit uSurvey; interface uses System.Collections, uSurveyData; type TSurvey = class private { Private Declarations } myData : HashTable; surveyer : HashTable; public constructor Create; procedure DoHandleSurveyData(sData : SurveyData); procedure Addsurveyer(const sEMail : String); function GetKeyData(aKey : TObject) : TObject; function GetSurveyData : HashTable; function AlreadySurveyed(const sEMail : String) : Boolean; end; implementation procedure TSurvey.Addsurveyer(const sEMail: String); begin surveyer.Add(sEMail, nil); end; function TSurvey.AlreadySurveyed(const sEMail: String): Boolean; begin Result := False; if (surveyer.Contains(TObject(sEMail))) then Result := True; end;

3-32

ᑕϡ඀ёฟ൴͘Ί

constructor TSurvey.Create; begin inherited Create; // TODO: Add any constructor code here myData := HashTable.Create; surveyer := HashTable.Create; end; procedure TSurvey.DoHandleSurveyData(sData : SurveyData); var aValue : String; myValue : String; iCount : Integer; IEnum : IDictionaryEnumerator; begin IEnum := sData.sDataMap.GetEnumerator; while (IEnum.MoveNext) do begin if (myData.Contains(IEnum.Key)) then begin myValue := GetKeyData(IEnum.Key).ToString; aValue := IEnum.Value.ToString; iCount := Int32.Parse(myValue) + Int32.Parse(aValue); myData.Remove(IEnum.Key); myData.Add(IEnum.Key, TObject(Convert.ToString(iCount))); end else myData.Add(IEnum.Key, IEnum.Value); end; end; function TSurvey.GetKeyData(aKey : TObject) : TObject; var IMyEnum : IDictionaryEnumerator; entry : DictionaryEntry; begin Result := nil; IMyEnum := myData.GetEnumerator; while (IMyEnum.MoveNext) do begin entry := IMyEnum.Entry; if (entry.Key = aKey) then begin Result := entry.Value; break; end; end; end; function TSurvey.GetSurveyData: HashTable; begin

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-33

Result := myData; end; end.

౵‫ޢ‬ΞГѨેҖѩቑּ ASP.NET ඀ёֽរᙋѩΑਕĂ˭ࢬߏበᛌ̝‫ેޢ‬Җ ۞ඕ‫ڍ‬Ĉ

3-34

ᑕϡ඀ёฟ൴͘Ί

Delphi 8 for .NET ೩ֻ˞ฟ൴ ASP.NET ᑕϡ඀ё‫ܧ‬૱ૻ̂Ăᖎ‫۞ٽ‬ฟ൴ᒖ ဩĂ˵ࠎ Delphi ฟ౹˞˘࣎າ۞ Web ᑕϡฟ൴ԫఙ۞າࢱĄ ො

ώቑּΪߏઇࠎᄲ‫̝ځ‬ϡĂд၁ᅫ۞ฟ൴̚ώቑּ۞඀ёቅΞͽѣՀซ˘Վ ۞౵ָ̼۩มĄ

ֹϡ ASP.NET ฟ൴ Web ᑕϡ඀ё

3-35

3-36

ᑕϡ඀ёฟ൴͘Ί

ֹϡ ASP.NET ฟ൴ Web Service Web Service ߏ೩ֻপ‫ؠ‬Αਕ۞Ξ඀ё̼၁វĂּт Web Service ΞેҖᑕ ϡ඀ёទᏭĂ Їң۞̶೸ёր௚˵ΞͽᖣϤЧ჌̙Т۞ Internet ᇾ໤Ăּ т XML ‫ ׶‬XMLĂֽх‫ פ‬Web ServiceĄϤ ASP.NET ฟ൴۞ Web Service Ξͽߏಏ፾ેҖ۞ᑕϡ඀ёĂٕߏᛳ‫ ݭ̂࣎˘ٺ‬Web ᑕϡ඀ё۞̮̄ІĂ֭ ͷਕૉᖣϤͽ XML ࠎૄᖂ۞ੈिր௚ֹϡ҃јࠎЇң̶೸ёᑕϡր௚۞ᑕ ϡ̮ІĄDelphi 8 For .NET ೩ֻ˞ᇴ჌͞‫ֽڱ‬ᑒӄଋฟ൴Ă̶൴‫ֹ׶‬ϡ ASP.NET ‫ݭ‬ၗ۞ Web Service ᑕϡ඀ёĄຐᒢྋՀк Web Service ۞ྤੈĂ ኛણ҂ Microsoft ۞.NET SDK ͛ІĄ

ASP.NET Web Service ໄ៍ Web Service ߏͽ Internet ࠎૄᖂ۞ፋЪԫఙĂ̯ధЇңπέ‫׶‬඀ёᄬ֏ฟ ൴ ۞ ᑕ ϡ ඀ ё ా ඕ д ˘ ੓ ֭ ͷ Ϲ ೱ ྤ ੈ Ą Web Service ̏ གྷ ღ ૜ ۞ ፋ Ъ д.NET Framework ۞ ASP.NET ሀ‫̚ݭ‬Ą‫็׶‬௚۞ࣧϠ Windows ᑕϡ඀ё

ֹϡ ASP.NET ฟ൴ Web Service

4-1

̙Т۞ߏĂASP.NET Web Service ᑕϡ඀ёΒӣ˞‫ۏ‬І‫֭ڱ͞׶‬ͷᖣϤᖎಏ ۞ੈि఼ੈ‫ؠם‬д Web ˯Ꮾ΍ĄЇңϡ͗ბౌΞͽᖣϤ HTTP ֹϡ Web Service ೩ֻ۞ Web ͞‫ڱ‬Ąಶည Windows Form Ξͽх‫פ‬ᑕϡ඀ё̚Їң۞ ͞‫˘ڱ‬ᇹĂWeb ͞‫˵ڱ‬Ξͽ೩ֻপ‫ڇ۞ؠ‬ચĂҭߏ Web ͞‫̙ڱ͞΁׎׶ڱ‬ Т۞г͞ߏ Web ͞‫ߏڱ‬ᖣϤ Web ᕱᜓጡֽх‫۞פ‬ĄຐᒢྋՀк Web Service ۞ྤੈĂኛણ҂ Microsoft ۞.NET SDK ͛ІĄ Borland ೩ֻ˞̍‫̯׍‬ధฟ൴ˠֹࣶϡЧ჌ԫఙֽฟ൴‫׶‬х‫ פ‬ASP.NET Web ServiceĄಶ‫׶‬Ξሀ௡̼۞‫ۏ‬І˘ᇹĂWeb Service ̯ధฟ൴ˠࣶࢦᖬֹ ϡ֭ͷᔖҺᅮࢋᇤᆷᗝγ۞඀ёቅĄ ˭ࢬ۞͹ᗟ೩ֻ˞ ASP.NET Web Service ߛၹĂWeb Service ໛఼۞ૄώࣧ நĂͽ̈́ଋдฟ൴ ASP.NET Web Service ॡ‫ޙ‬ϲ۞ᑫ९۞ໄࢋ۞̬௜ྤੈĂ ώ̈༼̬௜˞Ĉ

4-2

y

ASP.NET Web

y

Web Service ۞υࢋ୧ІĄ

y

Web Service ۞ֹϡಞഀĄ

y

ASP.NET Web Service ࠹ᙯᑫ९Ą

ᑕϡ඀ёฟ൴͘Ί

Service ߛၹĄ

Web Service ߛၹ

ASP.NET Web Service ߛၹ۞͹ࢋ̮ІΒӣ˞Ĉϡ͗ბᑕϡ඀ёĂASP.NET Web Service ᑕ ϡ ඀ ё ͽ ̈́ ᇴ ࣎ ᑫ ९ Ă ּ т ֹ ϡ ۞ ฟ ൴ ᄬ ֏ ۞ ඀ ё ቅ ᑫ ९Ă.asmx ᑫ९ͽ̈́በᛌ࿅۞.dll ᑫ९Ąଋᅮࢋֹϡ˘࣎ Web Ҩ‫ڇ‬ጡֽેҖ ASP.NET Web Service ᑕϡ඀ёͽ̈́ϡ͗ბᑕϡ඀ёĄଋ˵Ξਕᅮࢋֹϡྤ फ़ऱҨ‫ڇ‬ጡֽᐼх ASP.NET Web Service х‫ֹפ‬ϡ۞ྤफ़Ą

Web Service ۞υࢋ୧І дଋฟؕฟ൴ Web Service ᑕϡ඀ё̝݈Ăଋυืሢଉ˭ࢬ۞៍‫ه‬Ĉ y

XML(Extensible Markup Language)ĄXML ߏͽֹϡ۰‫ؠ‬ཌྷĂˠᙷΞዦ ᝝۞ॾёֽೡࢗߛၹ̼ྤफ़۞ԫఙĄЇңଋຐଂ WebService ็ਖ਼ٕߏତ ќ۞ྤफ़Ăྤफ़ะٕߏ͛Іౌߏͽ XML ԫఙ‫ދ‬྅۞Ą

y

SOAP (Simple Object Access Protocol)ĄSOAP ߏ Web Service ‫׶‬ϡ͗ ბ໛఼ֹϡ۞ᇾ໤ੈि఼ੈ‫ؠם‬ĄSOAP ֹϡ XML ֽ‫ދ‬྅ι۞ੈिĂ֭ ͷΞΒӣҨ‫ڇ‬ბ‫׶‬ϡ͗ბֹϡ۞ણᇴͽ̈́а็ࣃĄ

y

WSDL (Web Services Description Language)Ą WSDL ߏ ୃ ࢗ Web Service ۞ᄬ֏ĄWeb Service ΞͽֹϡЇң۞၁үᄬ֏ֽ‫ؠ‬ཌྷĄࠎ˞ј ࠎಏ˘ϫ۞۞̳ϡԫఙĂՏ˘࣎ Web Service ౌ၆‫ٺ‬ι‫ؠ‬ཌྷ۞‫ڇ‬ચ̬ࢬ

ֹϡ ASP.NET ฟ൴ Web Service

4-3

ౌ೩ֻ೩ֻ‫ڇ‬ચୃࢗĂͽ‫ܮ‬ϡ͗ბਕૉ‫ ׶‬Web Service ໛఼ĄWSDL ೩ ֻ˞౵ૄᖂ۞ΑਕĂWSDL ͛Іୃࢗ˞ϡ͗ბυื೩ֻ۞ણᇴྤੈͽ̈́ ϡ͗ბਕૉତ‫۞צ‬а็ྤੈĂ఼૱а็ྤੈΒӣ˞а็ྤफ़۞ྤफ़‫ݭ‬ၗ y

UDDI (Universal Description, Discovery, and Integration)ĄUDDI ߏຽ ࠧ੓ਨ۞ᇾ໤Ăι೩ֻ˞ЋຽᏮ΍ΞజЇң‫̳΁׎‬Φֹϡ۞ Web Service ۞ ᇾ ໤ ᐼ х ፟ ‫ ט‬Ą UDDI ೩ ֻ ˞ ᐼ х ፟ ‫ ܮ ͽ ט‬Β ӣ ా ඕ ‫ ז‬Ч ჌ Web Service ۞ྤੈͽ̈́ୃࢗĄଋΞͽֹϡ IDE ̚۞ UDDI ᕱᜓጡֽຩವ Web ServiceĂ˭ྶ WSDL ͛ІĂх‫ פ‬Web Service ᗝγ۞ྤੈͽ̈́೩ֻ఺ֱ Web Service ̳Φ۞ྤੈĄ

Web Service ۞ֹϡಞഀ ϫ݈۞ Web Service ೩ֻ˞ᖎಏ۞ྤੈֽ໚֭ͷ̯ధଋፋЪ‫ז‬ᑕϡ඀ё̚Ă ּт۵ᆊྤੈĂ͇ঈ࿰ീĂྻજͧᇴඈĄ༊д Web ˯х‫פ‬ЋຽទᏭ۞ᅮՐດ ֽດ̂ॡĂЋຽ‫ܮ‬ᅮࢋ೩ֻ˘჌͞‫̯ܮͽڱ‬ధ΁ࣇ۞‫׶ژ̶͗މ‬ፋЪྤੈĄ т‫͗މڍ‬னдֹϡ Microsoft Excel ྏზܑͽˠ̍۞͞ёፋЪੑચྤੈĂּт ۵ைྤੈĂᅙҖ૳ཱི‫׶‬෷ഠྤੈඈĂ֤ᆃдϏֽ Web Service ΞͽፋЪ֭ͷ ޺ᜈ۞Հາ఺ֱྤੈ֭ͷពϯд Excel ̚Ă࣎ˠშ৭ٕߏᇴҜӄநన౯̚Ą ᔵ൒఺ֱྤੈ̏གྷΞд Web ˯೩ֻĂWeb Service ‫ݒ‬೩ֻ˞Հᖎ‫۞ٽ‬х‫פ‬Ă ፋЪྤੈਕ˧ͽ̈́ቁܲՀ̂۞ΞያّĄ ଋΞͽд˭ࢬ۞ᅳાֹ̚ϡ Web Service ྋՙ͞९Ĉ y

Ћຽᑕϡ඀ёፋЪ (EAI)Ąּт Web Service ̯ధᇴ࣎ЋຽϾҡϹೱऱ хྤੈĂࢎಏྤੈٕߏੑચྤफ़Ă҃൑ᅮۢ྽Տ˘࣎ЋຽϾҡ၁ᅫᐼх ۞ྤफ़ॾёĄּтధк CRM ٕߏ݈ბᑕϡ඀ёͽள‫ޢٺ‬ბ ERP ր௚ ֹ ϡ۞ྤफ़ॾёֽᐼх‫ྤ͗މ‬फ़Ą൒҃ዚ઴ొ‫ܝ‬ΞਕТॡᅮࢋֹϡ CRM ֽ ఍ந̈́ॡࢎಏͽ̈́‫ޢ‬ბϤ ERP ր௚೩ֻ۞̈́ॡऱхྤੈĄ֤ᆃ Web Service ಶΞਕߏԯ CRM ኛՐྤफ़ᖼೱග ERP ͽ̈́ԯ ERP ྤफ़а็ග CRM ۞ྋՙ͞९Ą

4-4

ᑕϡ඀ёฟ൴͘Ί

y

Ћຽ̝ม۞ፋЪ(B2B)ĄᙷҬ‫ ٺ‬EAI ྋՙ͞९ĂB2B Ξֹϡ Web Service ۞ᐹᕇֽ೩ֻ̂ณࢎಏ۞ԣᐼ፟‫ט‬ĄB2B Ϲ‫ ׶ٽ‬B2C Ϲ‫̙ٽ‬Т۞ߏ B2B ົጾѣͧ B2C Հ̂ณ۞Ϲ‫ٽ‬ѨᇴĄּтĂ‫͗މ‬Ξਕົଂቢ˯͛‫׍‬થ‫ظ‬ᔉ ෴˘஼۞࿖ඊĂҭߏЋຽΞਕ˘࣎͡ົᔉ෴˯˼஼۞࿖ඊĂ҃ͷົֹϡ ̙Т۞ਖ਼ఱгӬĄB2B Ϲ‫۞ٽ‬ఢሀ‫׶‬ኑᗔ‫ޘ‬ᅮࢋ Web Service ۞̬ˢͽ ‫ܮ‬ᑒӄЋຽͽՀԣి‫׶‬Հ˘࡭۞͞ёֽᖎ̼‫׶‬఍நϹ‫ٽ‬Ą

y

Ћຽ‫̝͗މ׶‬ม۞ፋЪ (B2C)Ą B2C web services ఼૱ౌߏ఍நͽ Web ࠎጱШ۞Ϲ‫ٽ‬Ąּт˘̯࣎ధଋߤྙฎ߆በཱི۞ Web Service ಶΞ ͽ࠷ΝՏ˘࣎შ৭ᅮࢋ఺࣎‫ڇ‬ચ۞ฟ൴јώĄߙֱથຽშ৭˵Ξਕֹϡ Web Service ֽᑒӄιࣇдତ‫઼צ‬ᅫࢎಏॡซҖఱ။ᖼೱ۞̍үĄ

y

Җજฟ൴ (ംᇊ‫ݭ‬ϡ͗ბᑕϡ඀ё)Ą Ϥ‫ٺ‬ϡ͗ბҖજన౯̂ౌΪѣໂ̈ ۞ࢍზྤ໚ĂЯѩ఺ֱన౯ౌົࢋՐࠎ౵ࢦࢋ۞ր௚Αਕܲ঻੃ጸវĂ ˵Ϥ‫ٺ‬д‫ؠ‬ཌྷ˯ϡ͗ბҖજన౯ౌߏֹϡ൑ቢ఼ੈ఼ੈ‫ాֽؠם‬ඕ InternetĂЯѩ Web Service дϡ͗ბҖજన౯˯Էႊ˞೩ֻᅅμҭΑਕ ૻ̂ᑕϡ඀ё۞֎ҒĄWeb Service ̯ధϡ͗ბҖજన౯ֹϡ۰ેҖΪᅮ ࢋдҖજన౯˯Ꮾˢྤफ़‫׶‬ពϯඕ‫ྻ۞ڍ‬ზĄٙѣ۞ࢍზેҖ‫ߏ݋‬дᅈ ბ۞ Web Service ̚Ă఺Ξͽഴ͌Җજన౯ᅮࢋ۞ᐛᆵĄ

y

̶೸ё/ᕇ၆ᕇ(Peer-to-Peer)Ą၆‫̶ֱߙٺ‬೸ё‫׶‬ᕇ၆ᕇ۞ᑕϡ඀ёֽ ᄲĂWeb Service ˵Էႊ˞ࢦࢋ۞֎ҒĄт‫ߏڍ‬д˘̙࣎‫צ‬ଠგ۞შྮ̚ ֹϡ̶೸ёࢍზ(ּт Internet)Ă̙҃ߏд LAN ٕߏ̳Φშྮ̚ેҖ̶ ೸ёᑕϡĂଋಶΞͽֹϡ Web ServiceĂЯࠎ Web Service ̙ᅮࢋგநે Җ‫ې‬ၗĂ఺ΞͽᆧΐેҖड़தĂপҾߏ༊ֹϡ۰̙ᅮࢋֹϡĺࢋՐ-аᑕĻ ۞ᑕϡሀёॡĄ၆‫ٺ‬ᅮࢋֹϡĺࢋՐ-аᑕĻ۞ᑕϡሀёٕߏᅮࢋᚑॾ۞ щБ‫ڇ‬ચᑕϡॡĂଋᑕྍ҂ᇋֹϡՀ‫צ‬ଠ‫ࢍ۞ט‬ზ‫ڇ‬ચĂּт COMĂ CORBA ٕߏ.NET RemotingĄ

ֹϡ ASP.NET ฟ൴ Web Service

4-5

ASP.NET Web Services ࠹ᙯᑫ९ ༊ଋ‫ޙ‬ϲ ASP.NET Web Service ‫ݭ‬ၗ۞ᑕϡ඀ёॡĂߙֱᑫ९ົҋજࠎଋ‫ޙ‬ ϲĄ఺ֱਕૉᑒӄ ASP.NET Web Service ᖣϤ Web Ҩ‫ڇ‬ጡᏮ΍ι೩ֻ۞‫ڇ‬ ચĄ˭ࢬ۞ܑॾЕ΍˞఺ֱᑫ९۞ЩჍͽ̈́ιࣇ۞ᄲ‫ځ‬Ĉ ᑫ९ЩჍ .asmx

ᄲ‫ځ‬ ༊ଋ‫ޙ‬ϲASP.NET Web Serviceᑕϡ඀ёॡâֹ࣎ϡ.asmxඕԍ ۞͛фᑫ९ಶົҋજ‫ޙ‬ϲĄѩγĂυࢋ۞Web Serviceበᛌጡ޽΄ ಶົЕд఺࣎ᑫ९۞ฟᐝ఍ͽ‫ాܮ‬ඕWeb Service۞URL‫׶‬Web Service۞၁ү඀ёቅĄд఺࣎ᑫ९̚ଋΞͽΐˢϡ͗ბਕૉ࠻‫ז‬ ۞Ꮾ΍‫ڇ‬ચ͞‫۞ڱ‬Web ServiceទᏭ඀ёቅĄ.asmxᑫ९೩ֻ˞ϡ ͗ბ‫ײ‬ΨWeb Service‫ڇ‬ચ۞ૄᖂURLĄ఺࣎ᑫ९ົాТ‫΁׎‬ᑫ९ በᛌ‫ז‬Assembly̚ͽ‫̶ܮ‬൴ֹϡĄ

Code-Behind

༊ଋ‫ޙ‬ϲASP.NET Web Serviceᑕϡ඀ёॡĂ‫׶‬၁ү඀ёᄬ֏࠹ ᙯ۞˘࣎Code-Behindᑫ९‫ົܮ‬யϠĄଋᅮࢋд̳ฟ͞‫̚ڱ‬ΐˢ Web ServiceទᏭͽ‫ܮ‬Web Serviceਕૉ఍நኛՐ֭ͷа็ඕ‫ڍ‬Ą

በᛌ۞DLLᑫ ९

Web Service DLLᑫ९дWebҨ‫ڇ‬ጡ̚೩ֻ˞જၗ۞‫ڇ‬ચĄ

.wsdl

༊ଋдϡ͗ბᑕϡ඀ё̚ᖣϤᕇᏴAdd Web ReferenceΑਕܑΐ ˢWeb ServiceॡĂ఺࣎ᑫ९ಶົҋજயϠĄ఺࣎ᑫ९ୃࢗ˞ϡ͗ ბਕૉх‫۞פ‬Web Service‫ڇ‬ચ̬ࢬĄ

.map

఺࣎ᑫ९೩ֻ˞̯ధдপ‫۞ؠ‬Ҩ‫ڇ‬ጡ̚ຩವWeb Service۞Α ਕĄ఺࣎ᑫ९˵೩ֻ˞Web Serviceᅮࢋ۞‫ྤ΁׎‬໚۞ాඕྤੈĄ.

Web Services ఼ੈ‫ુؠם‬ᝑ ࢋᒢྋ Web Service ۞ߛၹᅮࢋଋൾ຋ሢଉ XMLĂSOAPĂWSDL ͽ̈́ UDDIĄઇࠎ XML Web Service ۞ฟ൴ˠࣶĂଋ̙֭ᅮࢋ˘̷ଂᐝฟؕĂЯ ࠎ˘ֱߛၹ̏གྷхд˞Ą࠹ͅ۞ĂଋߏӀϡனѣ۞ԫఙĂּт XML ‫ ׶‬HTTPĂ ֹֽϡᇾ໤۞ Web ఼ੈ‫ؠם‬Ą Borland ೩ֻ˞ଋυࢋ۞‫ڇ‬ચĂͽ‫ܮ‬ឰଋਕૉᅅ‫ޙ۞ٽ‬ϲĂ̶൴‫ֹ׶‬ϡ Web! ServiceĂ൑ᅮፉᇎ‫ޢ‬ბ۞఍ந࿅඀҃૞͕‫ٺ‬నࢍଋຐࢋ೩ֻ۞‫ڇ‬ચĄ

4-6

ᑕϡ඀ёฟ൴͘Ί

˭ࢬ੅ኢ۞͹ᗟ೩ֻ˞ឰଋᒢྋ Web Service Αਕֹϡ۞఼ੈ‫ુؠם‬ᝑ۞៍ ‫ࡦه‬ഀྤੈĄ

y

Web Service тңᖣϤ Web х‫׶פ‬Ꮾ΍‫ڇ‬ચ

y

XML тңᖣϤᇾ໤۞ SOAP ‫ ׶‬HTTP ็ᅍྤੈ

y

ϡ͗ბтңᙊҾ Web Service ೩ֻ۞‫ڇ‬ચ

y

тңຩವ‫׶‬х‫ פ‬Web Service

Web Services ఼ੈ‫ુؠם‬ᝑ

Web Service ఼ੈ‫ુؠם‬ᝑ͹ࢋ۞̮ІΒӣ˞Ĉ

y

дᑕϡ඀ёม็ᅍੈि۞఼ੈᆸ

y

‫ދ‬྅ੈिࠎ XML ॾё۞‫ދ‬྅ᆸĂ఺࣎Ξͽឰϡ͗ბ‫׶‬Ҩ‫ڇ‬ბֹϡ࠹Т ۞Ϲೱᇾ໤

y

ୃࢗ‫ڇ‬ચ۞ྤੈᆸ

y

ঈ̚გந‫ڇ‬ચ۞Вϡᐼх፟‫ט‬

ֹϡ ASP.NET ฟ൴ Web Service

4-7

็Ꮾᆸ(Transport Layer) ็Ꮾᆸߏુᝑ̚۞ௐ˘̮࣎ІĂι࢑యдᑕϡ඀ё̝ม็ਖ਼ XML ੈिĄ౵ ૱ֹϡ۞็Ꮾ఼ੈ‫ߏؠם‬ᇾ໤۞ HTTP ఼ੈ‫ؠם‬Ą‫఼΁׎‬૱ֹϡ۞ Web ఼ ੈ‫ؠם‬Β߁˞ SMTP ͽ̈́ FTPĄ

XML ੈि ુ ᝑ ఼ ੈ ‫ ੈ ۞ ؠ ם‬ि ᆸ ߏ ૄ ‫ ٺ‬XML ሀ ‫ ݭ‬Ą XML(Extensible Markup Language)జᇃ‫ֹھ‬ϡд Web Service ᑕϡ඀ё֭̚ͷߏٙѣ Web Service ۞ૄϮĄXML Ϊߏឰ Web Service ਕૉֹϡдЧ჌ԫఙᅳા̚۞ᇾ໤̝˘Ą ଋົд Web ̚Ա‫ז‬ధкྤ໚ౌдୃࢗ XML ੈि፟‫ט‬Ąࢋ଀‫ז‬Հк۞ྤੈĂ ኛણ҂ World Wide Web Consortium შ৭Ą XML ੈिᑕϡ඀ёߏధк‫΁׎‬প‫ֹؠםੈ఼ؠ‬ϡ۞ᇃ‫ھ‬௚ჍĄ‫ ۞̚׎‬Simple Object Access Protocol (SOAP)ߏ ౵ࠎ߹Җ۞ ᇾ໤Ă఺࣎ ᇾ໤̯ధ Web Service дშྮ̚࠹̢໛఼Ąಶည XML ೩ֻ˞̶೸ёր௚ֹϡኛՐ/аᑕሀ ёд Web ˯ᖣϤ XML ͛ІϹೱྤੈĄSOAP ‫̯݋‬ధ XML ͛І۞็ਖ਼۰ͽ ̈́ତ‫צ‬۰дშྮֹ̚ϡѣड़۞఼ϡྤफ़็ਖ਼఼ੈ‫ֽؠם‬ซҖ໛఼Ą ଋΞͽд Web ̚Ա‫ז‬ధкୃࢗ SOAP ۞ྤ໚Ąࢋ଀‫ז‬Հк۞ྤੈĂኛણ҂ World Wide Web Consortium შ৭Ą

WSDL ᆸ ఺࣎ୃࢗᆸ΃ܑ Web Service Ξͽֹϡֽ޽‫̳ځ‬ѣ̬ࢬ۞፟‫ט‬Ąι೩ֻ˞ Web Service ̚Ξ೩ֻ۞Αਕ۞ྤੈĂజ XML ੈि፟‫ֹט‬ϡ۞ྤफ़‫ݭ‬ၗĂѣ ᙯ็ਖ਼఼ੈ‫۞ؠם‬ᘭඕྤੈĂͽ̈́প‫ ؠ‬Web Service ۞ҜཉĄ Їңϡ͗ბт‫ڍ‬ຐࢋۢ྽ Web Service ೩ֻ۞‫ڇ‬ચྤੈĂତ‫ྤ۞צ‬फ़ྤੈ Web Service ߏӎа็Їң۞ેҖඕ‫ڍ‬Ă͚೯۞็ਖ਼఼ੈ‫ؠם‬ඈౌΞͽֹϡ Web Services Description Language (WSDL)ֽ‫ੈྤֱ఺଀פ‬Ą༊ଋ‫ޙ‬ϲ Web Service ॡĂιυืШሕд۞ϡ͗ბୃࢗι۞‫ڇ‬ચྤੈĄWSDL ‫ܮ‬೩ֻ

4-8

ᑕϡ඀ёฟ൴͘Ί

˞ୃࢗ Web Service ‫ڇ‬ચ۞఼ϡॾёĄ˘ਠֽᄲĂWSDL ߏ‫ ׶‬SOAP ˘੓ֹ ϡ۞ĂWSDL ۞ఢቑ˵Β߁˞‫ ׶‬SOAP ۞ᘭඕĄ ଋΞͽֹϡ Borland ۞ Add Web Reference Αਕࠎଋ۞ Web Service ‫଀פ‬ WSDL ͛ІĄWSDL ͛ІĂٕߏჍࠎ proxy ᑫ९Ăົజ޿֓‫ז‬ϡ͗ბ֭ͷֹ ϡֽ‫ײ‬ΨҨ‫ڇ‬ጡĄ఺࣎ proxy ᑫ९ጾѣ References.*۞ЩჍĂι۞‫ؼ‬ҩᑫЩ ‫ ߍͅ݋‬Web Service ֹϡ۞প‫ؠ‬ᄬ֏‫ݭ‬ၗĄଋΞͽд Web ̚Ա‫ז‬ధкୃࢗ WSDL ۞ྤ໚Ąࢋ଀‫ז‬Հк۞ྤੈĂኛણ҂ World Wide Web Consortium შ৭Ą

ຩವ‫ڇ‬ચ(Service Discovery) ຩವ‫ڇ‬ચᆸߏ޽д Web ˯೩ֻ˘჌͞‫ֽڱ‬Ꮾ΍‫׶‬ຩವ Web ServiceĄଋΞͽ ԯ఺࣎‫ڇ‬ચᆸຐညј࿪ྖᘨ۞Ϩ/เࢱĄWebService ۞Ϩࢱ೩ֻ˞প‫̳ؠ‬Φ ۞˘ਠྤੈĂּтЋຽЩჍĂЋຽୃࢗĂͽ̈́ЋຽгӬĄเࢱ‫݋‬Βӣ˞ Web Service ೩ֻ۞‫ڇ‬ચ۞̶ྤफ़ᙷĂּт̍ຽ‫ݭ‬ၗ‫׶‬ய‫ݡ‬Ą ֹϡֽᏮ΍ WebService ۞఼ੈ‫ؠם‬Ⴭࠎ Universal Description, Discovery, and Integration (UDDI)Ą ᖣϤ Delphi 8 for .NETĂଋ۞ྤफ़૟ҋજᏮ΍‫ז‬ොΊጡĂٕߏ Web Service ۞̶೸ёϫᐂ̚ĄUDDI ЋຽොΊጡ̯ధЇңຩವனѣ۞ UDDI ྤफ़֭ͷ̯ ధଋොΊଋ۞̳Φͽ̈́೩ֻ۞‫ڇ‬ચĄ

ASP.NET Web Services ۞͚೯ ASP.NET Web Services ͚೯ VCL.NET ܑಏĂ.NET Windows ܑಏĂͽ ̈́ ASP.NET Web ܑಏĂ఺ֱౌΞͽઇࠎх‫ פ‬Web Service ۞ϡ͗ბᑕϡ඀ ёĄAdd Web Reference Αਕ̯ధଋдϡ͗ბᑕϡ඀ё̚ΐˢຐࢋֹϡ۞ ASP.NET Web Service ᑕϡ඀ёĄѩγ Add Web Reference Αਕ˵Ξͽୁજ UDDI ᕱᜓጡֽᑒӄଋຩವଋຐֹϡ۞ Web ServiceĄ

ֹϡ ASP.NET ฟ൴ Web Service

4-9

Delphi 8 for .NET ೩ֻ˞ᖎ‫׍̍۞ٽ‬ᑒӄଋฟ൴‫̶׶‬൴ଋ۞ ASP.NET Web Service ᑕϡ඀ёĄੵѩ̝γĂDelphi 8 for .NET ˵೩ֻ˞Ꮾˢ WSDL ͛І ͽ‫ࢗୃܮ‬প‫ ؠ‬Web Service ᑕϡ඀ё೩ֻ۞‫ڇ‬ચĂ֭ͷдϡ͗ბᑕϡ඀ё̚ ΐˢ఺ֱ‫ڇ‬ચྤੈĄ ଋΞͽֹϡ Delphi 8 for .NET ೩ֻ۞ቑּ WebMethod ֽ‫ޙ‬ϲ‫׶‬х‫פ‬ ASP.NET Web Services ᑕϡ඀ёĄ ώ̈༼੅ኢ˞˭ࢬ۞͹ᗟĈ y

ASP.NET Web Services ϡ͗ბ͚೯Ą

y

ASP.NET Web Services Ҩ‫ڇ‬ბ͚೯Ą

y

ASP.NET Web Services ‫׻‬Щ۩มĄ

ASP.NET Web Services ϡ͗ბ͚೯ ଋΞͽ‫ޙ‬ϲ˘࣎೩ֻ۰ᑕϡ඀ёٕߏҨ‫ڇ‬ბᑕϡ඀ёઇࠎ Web Service ᑕϡ ඀ёĄ఺࣎ Web Service ᑕϡ඀ёߏҜ‫ ٺ‬Web Ҩ‫ڇ‬ጡ֭̚ͷ̯ధЇңᒢྋι ۞ᑕϡ඀ёߛၹ۞ϡ͗ბх‫פ‬Ąт‫ڍ‬ଋຐֹϡ Web Service ᑕϡ඀ёĂଋ‫ܮ‬ ᅮࢋ‫ޙ‬ϲ˘࣎ϡ͗ბᑕϡ඀ёĄDelphi 8 for .NET ೩ֻ˞Ч჌̙Т۞̍‫׍‬ᑒ ӄଋฟ൴ϡ͗ბᑕϡ඀ёĄ y

Windows ܑಏ

y

Web ܑಏ

y

Web ણ҂

Windows ܑಏ vs. ASP.NET Web ܑಏ ࢋՙ‫ؠ‬ଋ۞ϡ͗ბᑕϡ඀ёֹϡ۞౵р۞ܑಏ‫ݭ‬ၗĂଋΞͽ҂ᇋଋຐх‫۞פ‬ ‫ڇ‬ચ‫ݭ‬ၗĄд̂кᇴ۞ଐԛ˭ĂଋᏴፄֹϡ۞‫ڇ‬ચົՙ‫ؠ‬ଋ۞ᑕϡ඀ёᑕྍ ֹϡ۞‫ݭ‬ၗĄ т‫ڍ‬ଋຐдϡ͗ბ̍ү৭̚೩ֻΞͽ఍நኑᗔ̰ट۞ᑕϡ඀ёĂٕߏᅮࢋֹ ϡ Web Service ᑕϡ඀ёдщБ۞შྮాඕ͚̚೯ᖳಱ۞ϡ͗ბᑕϡ඀ёĂ

4-10

ᑕϡ඀ёฟ൴͘Ί

֤ᆃଋᑕྍ҂ᇋֹϡ Windows ܑಏᑕϡ඀ёĄт‫ڍ‬ଋᅮࢋ೩ֻᅅᓠ۞ϡ͗ ბᑕϡ඀ёֽ఍நᖎಏ۞ྤफ़‫ݭ‬ၗĂٕߏΞͽ႕֖‫ٺ‬ಏ˘ϫ۞۞ኛՐ̍үĂ ֤ᆃΞͽ҂ᇋֹϡ ASP.NET Web ܑಏĄWeb ܑಏߏ‫׶‬πέ൑ᙯ۞̬ࢬĂι Ξͽពϯд Web ᕱᜓጡ֭̚ͷᖣϤᖎಏ۞఼ੈ‫ؠם‬Ăּт HTTPĂֽ‫ײ‬Ψ Web Service ᑕϡ඀ёĄ ଋ˵Ξͽ‫ޙ‬ϲ console ‫ݭ‬ၗ۞ ASP.NET Web Services ᑕϡ඀ёĂ఺࣎ Web Service ᑕϡ඀ёΞͽᖣϤ console ෛ඄ֽх‫פ‬Ăٕߏజ‫ ۞΁׎‬Web Service ᑕϡ඀ёх‫פ‬Ą

Add Web Reference ଋΞͽдଋ۞ϡ͗ბᑕϡ඀ё̚ΐˢ Web Reference ֽх‫ פ‬Web Service ᑕ ϡ඀ёĄWeb Reference Ξͽણ҂ WSDL ͛Іٕߏ XML ჩࢋྤੈĂ֭ͷ๗ ˢྤੈ‫ז‬ଋ۞ϡ͗ბᑕϡ඀ё̚ĄWSDL ͛Іٕߏ XML ჩࢋྤੈୃࢗ˞ Web Service ᑕϡ඀ё۞ྤੈĄ༊ଋᏮˢ఺ֱ͛ІॡĂDelphi 8 for .NET ‫ܮ‬ ົҋજࠎଋயϠ‫ײ‬Ψ֤࣎ Web Service υࢋ۞̬ࢬ‫ᙷ׶‬Ҿ‫ؠ‬ཌྷĄଋΞͽд૞ ९გநࣶ̚Πᑝ Web Service ༼ᕇ֭ͷᏴፄ Add Web Reference ᏴีĄ˘࣎ UDDI ᕱᜓጡ‫ົܮ‬΍னĄଋυืдᕱᜓጡ̚Ա‫ז‬ଋ۞ Web Service ۞ WSDL ͛Іͽ‫ܮ‬дଋ۞ϡ͗ბᑕϡ඀ё̚ΐˢ Web ‫ڇ‬ચྤੈĄ

ASP.NET Web Services Ҩ‫ڇ‬ბ͚೯ ༊ଋฟ൴ ASP.NET Web Services ᑕϡ඀ёॡĂૄώ˯ଋߏͽ඀ё̼۞͞‫ڱ‬ х‫ פ‬Web Service ۞ᑕϡ඀ёទᏭĄଋ‫ؠ‬ཌྷଋຐᏮ΍۞‫ڇ‬ચĂтңֹϡ‫ڇ‬ચĂ ͽ̈́ତ‫׶צ‬఍நኛՐ/аᑕ۞ߛၹĄ Delphi 8 for .NET ೩ֻ˞၆ྖ஼̯ధଋ޽‫ ؠ‬ASP.NET Web Service ᑕϡ඀ ё۞ЩჍ‫׶‬ҜཉĂ֭ͷົҋજயϠ̶൴ Web Service ٙѣυࢋ۞ᑫ९Ą༊ଋ ޽‫ؠ‬ᑕϡ඀ёన‫ੈྤؠ‬ॡĂDelphi 8 for .NET ‫ົܮ‬யϠ.asmx ᑫ९Ă఺࣎ᑫ ९Ξͽઇࠎϡ͗ბ‫ײ‬Ψ ASP.NET Web Service ᑕϡ඀ё۞ૄᖂ URLĄ

ֹϡ ASP.NET ฟ൴ Web Service

4-11

ASP.NET Web Services ‫׻‬Щ۩ม ࢋ ‫ ଀ פ‬Հ к ѣ ᙯ System.Web.Services ‫ ׻‬Щ ۩ ม ۞ ྤ ੈ Ă ኛ ણ ҂ Microsoft .NET Framework SDKĄ

ฟ൴ ASP.NET Web Service ᑕϡ඀ё ώ̈༼૟ᄲ‫ځ‬тңֹϡ Delphi 8 for .NET ฟ൴ Web Service ᑕϡ඀ёĂ‫̚׎‬ Βӣ˞‫׌‬჌̙Т۞ᑕϡ඀ёĈ y

ֹϡ ASP.NET ฟ൴ Web Service Ҩ‫ڇ‬ბᑕϡ඀ё

y

ֹϡ ASP.NET ฟ൴ֹϡ Web Service ۞ϡ͗ბᑕϡ඀ё

ੵѩ̝γώ̈༼૟ᄲ‫ځ‬тңฟ൴Ч჌̙Т۞ϡ͗ბᑕϡ඀ёֹֽϡ Web ServiceĄ

ֹϡ ASP.NET ฟ൴ Web Service Ҩ‫ڇ‬ბᑕϡ඀ё ώ̈༼૟ᄲ‫ݭࢬ˭ځ‬ၗ۞ቑּᑕϡ඀ёĈ y

ASP.NET Ҩ‫ڇ‬ბ Web Service ᑕϡ඀ё

y

ֹϡ ASP.NET Web Service ۞ Windows ܑಏϡ͗ბᑕϡ඀ё

y

ֹϡ ASP.NET Web Service ۞ Web ܑಏϡ͗ბᑕϡ඀ё

ASP.NET Ҩ‫ڇ‬ბ Web Service ᑕϡ඀ё ࢵАд Delphi 8 for .NET ፋЪ൴णᒖဩ̚ᕇᏴ File|New|Other…Ᏼีୁજ New Items ၆ྖ஼֭ͷд Delphi ASP Projects ༼ᕇ̚Ᏼፄ‫ޙ‬ϲ ASP.NET Web Service ApplicationĂт˭ဦٙϯĈ

4-12

ᑕϡ඀ёฟ൴͘Ί

ᕇᏴ˞ ASP.NET Web Service Application ဦည̝‫ޢ‬ĂDelphi 8 for .NET ົ ྙય ASP.NET Web Service ᑕϡ඀ёֹϡ۞૞९ЩჍͽ̈́ᐼх۞ϫᐂĂд఺ ࣎ቑּ̚ߏͽ PWSADemo1 ઇࠎ૞९ЩჍĂт˭ဦٙϯĈ

ᕇᏴ˯ဦ̚۞ OK ̝‫ޢ‬ĂDelphi 8 for .NET ‫ޙົܮ‬ϲ ASP.NET Web Service ᑕϡ඀ёĄд Delphi 8 ۞૞९გநࣶ̚ ‫ޙົܮ‬ϲٙѣυࢋ۞ᑫ९Ăּт݈ ࢬ੅ኢ۞.asmx ߏѩ Web Service ۞ୁજ URL ૄᖂᑫ९Ąд˭ࢬពϯ۞૞९ გ ந ࣶ ̚ MyWebService.asmx ֹ ϡ ˞ Code-Behind Α ਕ Ă ᖣ Ϥ

ֹϡ ASP.NET ฟ൴ Web Service

4-13

MyWebService.pas ֽ၁үѩ Web Service ೩ֻ۞‫ڇ‬ચ(Delphi 8 for .NET ົ ҋજд૞९გநࣶ̚‫ޙ‬ϲ̰‫ ۞ؠ‬WebService1.asmx ͽ̈́ WebService1.pas ఺ ‫ ࣎ ׌‬ᑫ ९ ᑫ ९ Ă ώ ቑ ּ ֹ ϡ ˞ ૞ ९ გ ந ࣶ ۞ Rename Ᏼ ี ԯ Webservice1.asmx Լࠎ MyWebService1.asmxâόՀԼࠎ.asmx ᑫ९۞Щ ჍĂ࠹၆۞.pas ᑫ९˵ົྫྷ඾ҋજࢦາ‫׻‬Щ)Ą

дፋЪ൴णᒖဩ̚ฟୁ MyWebService.pas ᑫ९Ă֭ͷд TWebService1 ᙷҾ ̚ΐˢ GetNETVersion ͽ̈́ DoBase64Encoding ఺‫ڱ࣎͞׌‬Ă֭ͷд఺‫࣎׌‬ ͞ ‫ ݈ ̝ ڱ‬ΐ ˢ [WebMethod] ᛳ ّ Ă т ѩ ˘ ֽ ఺ ‫ ڱ ͞ ࣎ ׌‬ಶ ົ ҋ જ ј ࠎ WebService ͞‫֭ڱ‬ͷΞϤϡ͗ბ‫ײ‬ΨֹϡĂՀԼ‫ ۞ޢ‬TWebService1 ᙷҾ‫ؠ‬ ཌྷт˭Ĉ TWebService1 = class(System.Web.Services.WebService) {$REGION 'Designer Managed Code'} strict private /// <summary> /// Required designer variable. /// components: IContainer; /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// procedure InitializeComponent; {$ENDREGION} strict protected /// <summary> /// Clean up any resources being used. /// procedure Dispose(disposing: boolean); override; private { Private Declarations } public constructor Create;

4-14

ᑕϡ඀ёฟ൴͘Ί

(* // Sample Web Service Method [WebMethod] function HelloWorld: string; *) [WebMethod] function GetNETVersion : string; [WebMethod] procedure DoBase64Encoding(const sData : string; var s64Data : string); end;

GetNETVersion ͞‫ڱ‬ᖣϤ.NET ߛ॰Ξͽа็ϫ݈.NET ેҖᒖဩ۞‫ۍ‬ώበ ཱིĂ҃ DoBase64Encoding ͞‫݋ڱ‬Ξͽ၆фҚซҖ Base64 ۞ΐቅ̍үĄ˭ ࢬߏ GetNETVersion ‫ ׶‬DoBase64Encoding ۞၁ү඀ёቅĈ procedure TWebService1.DoBase64Encoding(const sData: string; var s64Data: string); var sBytes : array of Byte; iCount : Integer; begin SetLength(sBytes, sData.Length); for iCount := 1 to sData.Length do begin sBytes[iCount - 1] := Convert.ToByte(sData[iCount]); end; s64Data := Convert.ToBase64String(sBytes); end; function TWebService1.GetNETVersion: string; begin Result := Environment.Version.ToString; end;

д Delphi 8 for .NET ፋЪ൴णᒖဩ̚ેҖ఺࣎ ASP.NET Web Service ᑕϡ ඀ёĂDelphi 8 for .NET ‫ୁົܮ‬જ IE ពϯ఺࣎ Web! Service ۞ྤੈ֭ͷਕ ૉд IE ̚ซҖᖎಏ۞ീྏĄּт˭ဦಶߏ IE ពϯ۞ቑּ ASP.NET Web! Service ۞൪ࢬĈ

ֹϡ ASP.NET ฟ൴ Web Service

4-15

ኛ‫ڦ‬ຍ Delphi 8 for .NET тңֹϡ URL ֽх‫ פ‬ASP.NET Web ServiceĂд ఺࣎ቑּ̚ Delphi 8 for .NET ֹϡ˞Ĉ http://localhost/PWSADemo1/MyWebservice.asmx

ֽх‫פ‬ቑּ ASP.NET Web Service ᑕϡ඀ёĄ ˘ਠֽᄲ Delphi 8 for .NET ฟ൴۞ ASP.NET Web Service Ξͽֹϡ˭ࢬ۞ URL ॾёֽх‫פ‬Ĉ http://Web Site/ + /Web Serviceᑕϡ඀ё૞९ЩჍ + /Web Serviceᑕϡ඀ё૞९̚۞*.asmx ᑫ९ЩჍ

҃˭ࢬ۞ URL ‫݋‬Ξͽх‫ פ‬Delphi 8 for .NET ฟ൴۞ ASP.NET Web Service ۞ WSDL ͛І̰टĈ http://Web Site/ + /Web Serviceᑕϡ඀ё૞९ЩჍ + /Web Serviceᑕϡ඀ё૞९̚۞*.asmx ᑫ९ЩჍ?wsdl

༊ ฟ ൴ˠ ࣶд Delphi 8 for .NET ፋ Ъ ൴ण ᒖ ဩ̚ ેҖ ASP.NET Web Service ᑕϡ඀ёॡĂDelphi 8 for .NET ົҋજдώ፟۞ IIS Ҩ‫ڇ‬ጡ̚ͽ

4-16

ᑕϡ඀ёฟ൴͘Ί

ASP.NET Web Service ۞૞९ЩჍ‫ޙ‬ϲ˘࣎෍ᑢშ৭ͽ‫ેܮ‬Җ Web Service ᑕϡ඀ёĄּт˭ဦಶߏેҖ݈ࢬ۞ ASP.NET Web Service ᑕϡ඀ёॡд፟ ጡ̚ҋજ‫ޙ‬ϲ۞ PWSADemo1 ෍ᑢშ৭Ą

д IE ̚ົЕ΍ቑּ Web Service ೩ֻ۞‫ڇ‬ચ͞‫ڱ‬Ăฟ൴ˠࣶΞͽд IE ̚ྏ ඾‫ײ‬Ψ Web ServiceĂּт˭ဦߏᕇᏴ˯ဦ IE ̚ GetNETVersion ۞෹ాඕ ̝‫ ޢ‬IE ពϯ۞൪ࢬĂ

ֹϡ ASP.NET ฟ൴ Web Service

4-17

т ‫ ڍ‬ᚶ ᜈ ᕇ Ᏼ ˯ ဦ ̚ ۞ Invoke ޷ ต IE ‫ ײ ົ ܮ‬Ψ ቑ ּ ASP.NET Web! Service ᑕϡ඀ё۞ GetNETVersion ͞‫֭ڱ‬ͷа็‫ײ‬Ψ̝‫۞ޢ‬ඕ‫ڍ‬т˭Ĉ

னдឰԧࣇฟ൴ֹϡ఺࣎ Web Service ۞ϡ͗ბᑕϡ඀ёĄௐ˘჌ϡ͗ბᑕ ϡ඀ёߏ Windows ܑಏᑕϡ඀ёĄ ኛд૞९გநࣶ̚ᕇᏴ˯͞۞ New ޷ตдТ˘࣎૞९ཏ௡̚າ‫ޙ‬ϲ˘࣎ Windows ܑಏᑕϡ඀ёĄд Delphi 8 for .NET யϠ۞ Windows ܑಏ̚ΐ ˢˬ࣎ TextBox ଠ‫ ࣎˘̈́ͽט‬Button ଠ‫ีט‬Ăт˭ဦٙϯĈ

4-18

ᑕϡ඀ёฟ൴͘Ί

ତ඾д૞९გநࣶ̚ᕇᏴ PWSADemo1.dll ૞९ĂᕇᏴ໣ဂΠᔣĂᏴፄ Add Web reference…ĂDelphi 8 for .NET ‫ୁົܮ‬જ˭ဦ۞ Add Web Reference ၆ྖ஼Ă఺࣎၆ྖ஼ߏ UDDI ຩವ Web Service ۞ΑਕĂฟ൴ˠࣶΞͽд఺ ࣎၆ྖ஼̚Ꮾˢ୬‫ײ‬Ψ۞ Web Service URL ٕߏ Web Service ۞ WSDL ͛ І۞ URLĂDelphi 8 for .NET ‫ॲົܮ‬ፂ Web Service ۞ୃࢗྤੈயϠ‫ދ‬྅ Web Service ۞ᙷҾĄд˭ࢬ۞൪ࢬ̚ԧࣇᏮˢቑּ ASP.NET Web! Service ۞ URLĈ

ֹϡ ASP.NET ฟ൴ Web Service

4-19

Borland ۞ UDDI ຩವ‫ڇ‬ચ‫ົܮ‬ຩವᏮˢ۞ Web Service ٕߏ Web Service WSDL ͛ІĄ˭ဦߏ Borland ۞ UDDI ຩವ‫ڇ‬ચԱ‫˞ז‬ቑּ ASP.NET Web Service ᑕϡ඀ё̝‫ޢ‬ពϯ۞ Web Service ྤੈĄ ౵‫ޢ‬ᕇᏴ˭ဦ̚ΐ˭͞۞ Add Reference ޷ตͽ‫ܮ‬дቑּ૞९̚ҋજயϠ‫ދ‬ ྅ Web Service ۞ᙷҾĄ

4-20

ᑕϡ඀ёฟ൴͘Ί

ᕇᏴ˯ဦ۞ Add Reference ޷ต̝‫ ޢ‬Delphi 8 for .NET ‫ົܮ‬д૞९̚ΐˢણ ҂‫ ז‬Web Service ۞ Web References ༼ᕇĂ‫̚׎‬Βӣ˞ࠎ Web Service யϠ ۞ WSDL ͛ І ͽ ̈́ ‫ ދ‬྅ Web Service ۞ ᙷ Ҿ Ą ּ т ˭ ဦ ព ϯ ˞ MyWebService.wsdl ͽ̈́ localhost. MyWebService.pasĄኛ‫ڦ‬ຍ Delphi 8 for .NET ົͽ˭ࢬ۞‫׻‬Щ۩มॾёֽ‫׻‬Щ‫ދ‬྅۞ Web! Service ۞඀ёಏ̮Ĉ Web Site URL.Web Service ЩჍ.pas

Яѩд˭ࢬ۞൪ࢬ̚ԧࣇΞͽ࠻‫ ז‬Delphi 8 for .NET ࠎቑּ ASP.NET Web Service யϠ۞‫ދ‬྅ᙷҾ඀ёಏ̮ߏĈ localhost.MyWebService.pas

ֹϡ ASP.NET ฟ൴ Web Service

4-21

ฟୁ localhost.MyWebService.pas ඀ёಏ̮ԧࣇΞͽ࠻‫ ࢬ˭ז‬Delphi 8 for .NET ҋજயϠ۞‫ދ‬྅ᙷҾ‫׶‬၁ү඀ёቅĈ TWebService1 = class(System.Web.Services.Protocols.SoapHttpClientProtocol) /// public constructor Create; /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute('http://tempuri.or g/GetNETVersion', RequestNamespace='http://tempuri.org/', ResponseNamespace='http://tempuri.org/', Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] function GetNETVersion: string; /// function BeginGetNETVersion(callback: System.AsyncCallback; asyncState: System.Object): System.IAsyncResult; /// function EndGetNETVersion(asyncResult: System.IAsyncResult): string; /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute('http://tempuri.or g/DoBase64Encoding', RequestNamespace='http://tempuri.org/', ResponseNamespace='http://tempuri.org/', Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] procedure DoBase64Encoding(sData: string; var s64Data: string); ///

4-22

ᑕϡ඀ёฟ൴͘Ί

function BeginDoBase64Encoding(sData: string; s64Data: string; callback: System.AsyncCallback; asyncState: System.Object): System.IAsyncResult; /// procedure EndDoBase64Encoding(asyncResult: System.IAsyncResult; out s64Data: string); end;

ଂ˯ࢬ۞඀ёቅ̚ԧࣇΞͽ࠻‫ ז‬Delphi 8 for .NET ҋજயϠ۞‫ދ‬྅ᙷҾΒ ӣ˞ቑּ ASP.NET Web Service ᑕϡ඀ё೩ֻ۞‫ڇ‬ચ͞‫ڱ‬ĂଂயϠ۞඀ёቅ Ξͽ࠻‫ז‬ϡ͗ბਕૉֹϡТՎٕߏ‫ܧ‬ТՎ۞͞ё‫ײ‬Ψ Web ServiceĄ ѣ˞ҋજயϠ۞ Web Service ‫ދ‬྅ᙷҾ̝‫ޢ‬ĂனдಶΞͽฟؕ၁ү‫ײ‬Ψ Web Service ۞ϡ͗ბ Windows ܑಏᑕϡ඀ё˞ĄࢵАኛд Windows ܑಏ۞඀ ёಏ̮̚ΐˢણ҂ҋજயϠ۞ Web Service ‫ދ‬྅඀ёಏ̮Ă uses System.Drawing, System.Collections, System.ComponentModel, System.Windows.Forms, System.Data, localhost.MyWebservice;

ତ඾д Windows ܑಏ̚ Button ଠ‫ ۞ีט‬Click ְІ఍ந‫ב‬ё̚ᇤᆷт˭۞ ඀ёቅĈ procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs); var aWS : TWebService1; s64Data : String; begin aWS := TWebService1.Create; TextBox1.Text := aWS.GetNETVersion; aWS.DoBase64Encoding(TextBox2.Text, s64Data); TextBox3.Text := s64Data; end;

˯ࢬ۞඀ёቅࢵА‫ޙ‬ϲ˘࣎‫ދ‬྅ Web Service ۞‫ۏ‬ІĂTWebService1 ᙷҾ ߏҋજயϠд localhost.MyWebService.pas ඀ёಏ̮̚΃ܑ Web Service ۞‫ދ‬྅ᙷҾĄ ତ඾˯ࢬ۞඀ёቅ‫ֹܮ‬ϡ‫ޙ‬ϲ۞ Web Service ‫ۏ‬Іֽ‫ײ‬Ψ Web Service ೩ֻ ۞‫ڇ‬ચ͞‫֭ڱ‬ͷពϯд Windows ܑಏ̚۞ TextBox ଠ‫̝̚ีט‬Ą னдેҖϡ͗ბ Windows ܑಏቑּᑕϡ඀ёֽ‫ײ‬Ψቑּ ASP.NET Web Service ᑕ ϡ ඀ ё Ă ˭ ဦ ߏ ߏ ቑ ּ ϡ ͗ ბ ᑕ ϡ ඀ ё ј Α ۞ ‫ ײ‬Ψ ˞ ቑ ּ ASP.NET Web Service ᑕϡ඀ё۞ેҖඕ‫ڍ‬൪ࢬĈ

ֹϡ ASP.NET ฟ൴ Web Service

4-23

ତ ඾ ԧ ࣇ Ξ ͽ ฟ ൴ ASP.NET Web ܑ ಏ ᑕ ϡ ඀ ё ֽ ‫ ײ‬Ψ ࠹ Т ۞ ቑ ּ ASP.NET Web Service ᑕϡ඀ёĄ Тᇹ۞д૞९ཏ௡̚ᕇᏴ૞९გநࣶ˯͞۞ New ޷ตֽ‫ޙ‬ϲ ASP.NET ᑕϡ ඀ёĂତ඾д Web ܑಏ̚ΐˢт˭۞ଠ‫ีט‬Ă˵ߏˬ࣎ TextBox ଠ‫ͽีט‬ ̈́˘࣎ Button ଠ‫ีט‬Ą

д Web ܑಏ۞ Button ۞ Click ְІ఍ந‫ב‬ё˵ᇤᆷ݈ࢬ Windows ܑಏ̚ Button ଠ‫۞ีט‬၁ү඀ёቅĂ౵‫ޢ‬д Delphi 8 for .NET ፋЪ൴णᒖဩ̚ે Җቑּϡ͗ბ ASP.NET ᑕϡ඀ё֭ͷ‫ײ‬Ψ Web ServiceĂ˭ဦពϯ˞ቑּϡ ͗ბ ASP.NET ᑕϡ඀ёેҖ۞ඕ‫ڍ‬Ĉ

4-24

ᑕϡ඀ёฟ൴͘Ί

ֹϡ ASP.NET Web Service ۞ Web ܑಏϡ͗ბᑕϡ඀ё ੵ˞ฟ൴ ASP.NET Web Service Ҩ‫ڇ‬ბᑕϡ඀ё̝γĂDelphi 8 for .NET ˵Ξͽฟ൴‫ײ‬Ψ‫ ΁׎‬Web Service ۞ϡ͗ბ ASP.NET ᑕϡ඀ёĄώ̈༼ᄲ ‫˞ځ‬тңֹϡ Delphi 8 for .NET ฟ൴ WWW.Xmethods.net ˯ࢬ۞ Web Service ۞ቑּĄ ࢵАд Delphi 8 for .NET ̚‫ޙ‬ϲ˘࣎ ASP.NET ᑕϡ඀ё૞९Ăд Web ܑ ಏ̚ΐˢт˭۞ Web ଠ‫ีט‬Ĉ

ֹϡ ASP.NET ฟ൴ Web Service

4-25

д૞९გநࣶ̚ᕇᏴASP.NETᑕϡ඀ё૞९ĂᕇᏴ໣ဂΠᔣĂᏴፄAdd Web Reference…ᏴีୁજAdd Web Reference၆ྖ஼ֹϡUDDIຩವ‫ڇ‬ચֽವԱ ୬‫ײ‬Ψ۞Web ServiceĄଂ˭ဦ̚Ξͽ࠻‫ז‬ώቑּ‫ײ‬ΨXMethods˯۞ߤྙٙ ѣWeb Service۞Web Service‫ڇ‬ચĈwww.xmethods.net/wsdl/query.wsdlĄ

4-26

ᑕϡ඀ёฟ൴͘Ί

д UDDI ‫ڇ‬ચຩವ̝‫ܮޢ‬Ξͽ‫ ࣎఺଀פ‬Web Service ۞ WSDL ͛І͛ІĂᕇ Ᏼ၆ྖ஼̚۞ Add Reference ޷ตд ASP.NET ቑּ૞९̚யϠѩ Web Service ۞ WSDL ͛Іͽ̈́‫ދ‬྅ᙷҾĄ

ֹϡ ASP.NET ฟ൴ Web Service

4-27

Delphi 8 for .NET ‫ົܮ‬ҋજॲፂ WSDL ͛ІயϠт˭۞‫ދ‬྅ᙷҾĈ IDNamePair = class; ServiceSummary = class; ServiceDetail = class; TArrayOfServiceSummary = array of ServiceSummary; TArrayOfIDNamePair = array of IDNamePair; /// [System.Diagnostics.DebuggerStepThroughAttribute] [System.ComponentModel.DesignerCategoryAttribute('code')] [System.Web.Services.WebServiceBindingAttribute(Name='XMethodsQuerySoap', Namespace='http://www.xmethods.net/interfaces/query.wsdl')] [System.Xml.Serialization.SoapIncludeAttribute(TypeOf(IDNamePair))] [System.Xml.Serialization.SoapIncludeAttribute(TypeOf(ServiceSummary))] XMethodsQuery = class(System.Web.Services.Protocols.SoapHttpClientProtocol) /// public constructor Create; /// [System.Web.Services.Protocols.SoapRpcMethodAttribute('', RequestNamespace='http://www.xmethods.net/interfaces/query', ResponseNamespace='http://www.xmethods.net/interfaces/query')] [result: System.Xml.Serialization.SoapElementAttribute('Result')]

4-28

ᑕϡ඀ёฟ൴͘Ί

function getServiceSummariesByPublisher(publisherID: string): TArrayOfServiceSummary; /// function BegingetServiceSummariesByPublisher(publisherID: string; callback: System.AsyncCallback; asyncState: System.Object): System.IAsyncResult; /// function EndgetServiceSummariesByPublisher(asyncResult: System.IAsyncResult): TArrayOfServiceSummary; /// [System.Web.Services.Protocols.SoapRpcMethodAttribute('', RequestNamespace='http://www.xmethods.net/interfaces/query', ResponseNamespace='http://www.xmethods.net/interfaces/query')] [result: System.Xml.Serialization.SoapElementAttribute('Result')] function getAllServiceSummaries: TArrayOfServiceSummary; /// function BegingetAllServiceSummaries(callback: System.AsyncCallback; asyncState: System.Object): System.IAsyncResult; /// function EndgetAllServiceSummaries(asyncResult: System.IAsyncResult): TArrayOfServiceSummary; /// [System.Web.Services.Protocols.SoapRpcMethodAttribute('', RequestNamespace='http://www.xmethods.net/interfaces/query', ResponseNamespace='http://www.xmethods.net/interfaces/query')] [result: System.Xml.Serialization.SoapElementAttribute('Result')] function getAllServiceNames: TArrayOfIDNamePair; /// function BegingetAllServiceNames(callback: System.AsyncCallback; asyncState: System.Object): System.IAsyncResult; /// function EndgetAllServiceNames(asyncResult: System.IAsyncResult): TArrayOfIDNamePair; /// [System.Web.Services.Protocols.SoapRpcMethodAttribute('', RequestNamespace='http://www.xmethods.net/interfaces/query', ResponseNamespace='http://www.xmethods.net/interfaces/query')] [result: System.Xml.Serialization.SoapElementAttribute('Result')] function getServiceNamesByPublisher(publisherID: string): ArrayOfIDNamePair; /// function BegingetServiceNamesByPublisher(publisherID: string; callback: System.AsyncCallback; asyncState: System.Object): System.IAsyncResult; /// function EndgetServiceNamesByPublisher(asyncResult: System.IAsyncResult): TArrayOfIDNamePair; /// [System.Web.Services.Protocols.SoapRpcMethodAttribute('', RequestNamespace='http://www.xmethods.net/interfaces/query', ResponseNamespace='http://www.xmethods.net/interfaces/query')] [result: System.Xml.Serialization.SoapElementAttribute('Result')] function getServiceDetail(id: string): ServiceDetail;

ֹϡ ASP.NET ฟ൴ Web Service

4-29

/// function BegingetServiceDetail(id: string; callback: System.AsyncCallback; asyncState: System.Object): System.IAsyncResult; /// function EndgetServiceDetail(asyncResult: System.IAsyncResult): ServiceDetail; end;

ତ඾д Web ܑಏ̚۞‫ ࣎׌‬Button ଠ‫ ۞ีט‬Click ְІ఍ந‫ב‬ё̚ᇤᆷт˭ ۞඀ёቅĈ procedure TWebForm1.Button2_Click(sender: System.Object; e: System.EventArgs); var aWS : XMethodsQuery; sID : String; srSummaries : TArrayOfServiceSummary; iCount : Integer; srSummary : ServiceSummary; begin aWS := XMethodsQuery.Create; srSummaries := aWS.getAllServiceSummaries; for iCount := Low(srSummaries) to High(srSummaries) do begin srSummary := srSummaries[iCount]; Self.ListBox2.Items.Add(srSummary.shortDescription); end; end; procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs); var aWS : XMethodsQuery; wsServices : TArrayOfIDNamePair; idPr : IDNamePair; iCount : Integer; begin aWS := XMethodsQuery.Create; wsServices := aWS.getAllServiceNames; for iCount := Low(wsServices) to High(wsServices) do begin idPr := wsServices[iCount]; Self.ListBox1.Items.Add(idPr.id + ':' + idPr.name); end; end;

˯ࢬ۞඀ёቅА‫ޙ‬ϲ‫ދ‬྅ Web Service ᙷҾ۞‫ۏ‬ІĂତ඾Гֹϡ Web Service ‫ۏ‬Іֽ‫ײ‬Ψ Web Service ೩ֻ۞‫ڇ‬ચ֭ͷԯඕ‫ڍ‬ពϯд Web ܑಏ̝̚Ą ౵ ‫ ે ޢ‬Җ ఺ ࣎ ቑ ּ ASP.NET ᑕ ϡ ඀ ё ‫ ײ‬Ψ XMethods ˯ ۞ ቑ ּ Web ServiceĂಶΞͽ࠻‫ᙷז‬Ҭ˭ࢬ۞ેҖඕ‫ڍ‬Ĉ

4-30

ᑕϡ඀ёฟ൴͘Ί

Delphi 8 for .NET ೩ֻ˞ᖳಱ۞ Web Service ฟ൴ΑਕĂฟ൴ˠࣶਕૉฟ൴ Ч჌̙Т۞ Web Service ᑕϡ඀ёĄ

ֹϡ ASP.NET ฟ൴ Web Service

4-31

4-32

ᑕϡ඀ёฟ൴͘Ί

ֹϡ Windows ܑಏฟ൴ ෛ඄ᑕϡ඀ё Windows ܑಏ೩ֻ˞ฟ൴ֹϡ۰̬ࢬ۞፟‫ט‬ĂClient/Server ᑕϡ඀ёĂܑ ಏĂଠ‫ีט‬Ăͽ̈́ᑕϡ඀ёទᏭ۞็௚͞ёĄWindows ܑಏԆБ۞Ӏϡ ˞.NET Framework ೩ֻ۞ΑਕĄώౢ೩ֻ˞тңֹϡ Delphi 8 for .NET ฟ ൴ Windows ܑಏ۞ᖎ̬Ăͽ̈́ฟ൴ᖎಏ۞ Windows ૞९۞В఼ՎូĄ ώౢ੅ኢ˞˭ࢬ۞͹ᗟĈ y

Windows ܑಏ۞ໄ៍Ą ̬௜ֹϡ Delphi 8 for .NET ฟ൴ Windows ᑕϡ඀ё۞ Windows ܑಏ ߛၹĄ

y

ฟ൴ Windows ܑಏᑕϡ඀ё ୃࢗ˞ֹϡ Delphi 8 for .NET ฟ൴ Windows ܑಏᑕϡ඀ё۞υࢋ̍ үĄ

ֹϡ Windows ܑಏฟ൴ෛ඄ᑕϡ඀ё

5-1

Windows ܑಏ۞ໄ៍ Windows ܑಏߏ.NET ેҖᒖဩ೩ֻֽฟ൴ࣧϠ Window ᑕϡ඀ё۞඀ё̼ ፟‫ט‬Ąֹϡ.NET ฟ൴ Window ϡ͗ბᑕϡ඀ё̯ధଋֹϡᕱᜓጡϡ͗ბ൑ ‫ֹڱ‬ϡ۞Αਕ֭ͷਕૉԆБӀϡ.NET ߛ॰۞‫ڇ‬ચĄWindows ܑಏඕЪ˞็ ௚‫ ͽ׶‬Internet ࠎ͕̚۞ฟ൴Ăι೩ֻ˞˘࡭۞.NET ߛ॰඀ё̼ሀ‫ּ(ݭ‬т щБ‫ڇ‬ચ‫׶‬જၗᑕϡ඀ёՀາ)ͽ̈́ᖳಱ۞ Window ϡ͗ბ GUIĄ ˭ࢬ۞̈༼੅ኢ˞ͽ˭۞͹ᗟĈ y

Windows ܑಏߛၹĄ

y

Windows ܑಏ̮ІĄ

y

Windows ܑಏྤफ़х‫פ‬Ą

y

Windows ܑಏ‫׻‬Щ۩มĄ

Windows ܑಏߛၹ

Windows ܑಏ‫۞΁׎׶‬඀ёሀ‫ݭ‬Ăּт ASP.NET ‫ ׶‬ADO.NETĂ̶ֳ˞ ఼ϡ۞.NET ߛ॰ΑਕĄ

5-2

ᑕϡ඀ёฟ൴͘Ί

Windows ܑಏ Delphi 8 for .NET ೩ֻ˞д RAD ᒖဩ̚‫ޙ‬ϲ GUI ۞ፋЪ൴णᒖဩĄฟ൴ˠ ࣶᖣϤ‫ٳ‬Ѣଠ‫ีט‬Ă၆ྖ஼Ăͽ̮̈́І‫ܑז‬ಏనࢍछ̚Ăన‫ۏؠ‬Іᑭෛጡ̚ ۞পّࣃĂ֭ͷдְІ̚ᇤᆷទᏭֽаᑕְІĄ д Delphi 8 for .NET ̚ Windows ܑ ಏ Ⴭ ࠎ TWinForm Ă ι ߏ System.Windows.Forms.Form ᙷҾ۞ࢉϠᙷҾĄι‫׶‬ଋֹϡ VCL.NET నࢍ छ‫ޙ‬ϲ۞ VCL.NET ܑಏߏ̙˘ᇹ۞Ąְ၁˯ TWinForm ‫ۏ‬Іӈߏ.NET Windows ܑಏĂιΪߏֹϡ˞ Object Pascal ֽ೩ֻ၁үĄ

Windows ܑಏ̮І Delphi 8 for .NET ۞ Windows ܑಏ̍‫׍‬ሹ೩ֻ˞‫ٳ‬Ѣ̮ІĂଠ‫ีט‬Ăͽ̈́ ၆ྖ஼ឰଋనࢍ GUIĄ̮Іߏд RAD IDE ̚೩ֻ‫ٳ‬Ѣਕ˧۞Ξࢦᖬֹϡ‫ۏ‬ І۞ᙷҾĄଠ‫ߏ݋ีט‬೩ֹֻϡ۰̬ࢬΑਕ۞̮І‫ݭ‬ၗĄ(ٙѣ۞ଠ‫ߏౌีט‬ ̮ІĂҭ̙ߏٙѣ̮Іౌߏଠ‫ีט‬Ą)ଋΞͽдనࢍछ̚ΐˢ̮ІĄ˘ਠֽᄲ ଋߏᖣϤ‫ٳ‬Ѣܑಏ̚۞̮Іٕߏଠ‫ีט‬Ăన‫ؠ‬ιࣇ۞Ҝཉ‫ֽ̈̂׶‬నࢍֹϡ ۰̬ࢬĄ఼ϡ۞ଠ‫̮׶ีט‬І۞ቑּΒ߁˞޷ต‫׶‬ΑਕܑĄࠎ˞ᖎ̼Αਕܑ ۞ న ࢍ Ă Delphi 8 for .NET ೩ ֻ ˞ Α ਕ ܑ న ࢍ छ ឰ MainMemu ‫׶‬ ContextMenu ଠ‫ֹีט‬ϡĄ၆ྖ஼ߏܑಏ‫ݭ‬ၗ۞˘჌Ăι˵ΞͽΒӣଠ‫ט‬ ีĄ၆ྖ஼೩ֻ˞Ч჌̙Т۞ֹϡ۰̢જΑਕĄ

Windows ܑಏྤफ़х‫פ‬ д.NET ߛ॰̚ĂWindows ܑಏߏᖣϤ ADO.NET ֽх‫ྤפ‬फ़۞ĄଋΞͽֹ ϡΒӣд.NET ߛ॰‫ ׶‬BDP.NET ̝̚۞ྤफ़̮Іֽాඕ Windows ܑಏ‫ז‬ ADO.NET ྤफ़ֽ໚ĄBDP.NET ̮Іਕૉాඕ‫ז‬ధкຽࠧᇾ໤۞ྤफ़ऱĄࢋ ଀‫ז‬Հк۞ྤੈĂኛણ҂ ADO.NET ࠹ᙯ۞͛ІĄ

Windows ܑಏ‫׻‬Щ۩ม ఼ ϡ Windows ܑ ಏ ᙷ Ҿ Ă ּ т Form ‫ ׶‬Menu Ă ߏ Β ӣ д System.Windows.Forms ‫׻‬Щ۩ม̝̚Ą఺࣎‫׻‬Щ۩ม˵Βӣ˞ ButtonĂ

ֹϡ Windows ܑಏฟ൴ෛ඄ᑕϡ඀ё

5-3

CheckBoxĂand Label ‫ᙷ΁׎׶‬ҾĄֹϡ Delphi 8 for .NET ۞‫ۏ‬ІᑭෛጡĂ ଋΞͽన‫ ؠ‬Windows ܑಏᙷҾ۞পّࣃĂ͞‫ְ̈́ͽڱ‬ІĄ

5-4

ᑕϡ඀ёฟ൴͘Ί

ֹϡ ADO.NET ฟ൴ྤफ़ ऱᑕϡ඀ё ADO.NET ೩ֻ˞д.NET ߛ॰̚˘࡭҃ͷღ૜۞ྤफ़х‫פ‬඀ёሀ‫ݭ‬Ąੵ˞ д.NET ߛ॰̚೩ֻ͚೯ MS SQLĂOracleĂͽ̈́ OLE DB ాඕ۞̮І̝γĂ Delphi 8 for .NET ˵Βӣ˞ Borland Data Providers for .NET (BDP.NET)Ą BDP.NET ͚೯˞ MS SQLĂ OracleĂ DB2Ăͽ̈́ InterbaseĄBDP.NET ۞ ̮Іనࢍछᖎ̼˞ BDP.NET ̮І۞யϠ‫׶‬௡ၗ۞̍үĄώ̈༼̬௜˞тң д Delphi 8 for .NET ֹ̚ϡ ADO.NET ߛၹĂͽ̈́тң‫ޙ‬ϲ˘࣎ᖎಏ۞ ADO.NET ૞९Ą ώౢ੅ኢ˞Ĉ y

ADO.NET ᖎ̬ ̬௜˞ֹϡ ADO.NET ߛၹֽฟ൴ Delphi 8 for .NET ྤफ़ऱᑕϡ඀ёĄ

y

Borland Data Providers for .NET ୃࢗ˞ Delphi 8 for .NET Βӣ۞೩ֻ۰ᜭજ඀ё(Provider)Ą

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-1

y

BDP.NET ྤफ़‫ݭ‬ၗ ୃࢗ˞ Borland Data Provider for .NET Βӣ۞ྤफ़‫ݭ‬ၗĄ

y

BDP.NET ̮Іనࢍछ ̬௜˞̙Т۞ྤफ़ऱ̮І೩ֻ۞̮Іనࢍछ‫ా׶‬ඕనࢍछĄ

y

‫ޙ‬ϲ Windows ܑಏྤफ़ऱᑕϡ඀ё ̬௜˞ֹϡ Windows ܑಏ‫ ׶‬BDP.NET ‫ޙ‬ϲ ADO.NET ᑕϡ඀ё۞ૄ ώՎូĄ

y

‫ޙ‬ϲ ASP.NET ྤफ़ऱᑕϡ඀ё ̬௜˞ֹϡ Web ܑಏ‫ ׶‬BDP.NET ‫ޙ‬ϲ ADO.NET ᑕϡ඀ё۞ૄώՎ ូĄ

ADO.NET ໄ៍ ADO.NET ߏ.NET ඀ёᒖဩ̚ૄ‫ࣧٺ‬Ϡྤफ़ऱॾёٕߏ XML ྤफ़ֽ‫ޙ‬ϲྤ फ़ऱᑕϡ඀ё۞८͕ԫఙĄADO.NET ೩ֻ˞ Web ܑಏĂWeb ServiceĂ‫׶‬ Window ܑ ಏ ඈ ඀ ё ሀ ‫ ޢ ۞ ݭ‬ბ ྤ फ़ ᐼ х ፟ ‫ ט‬Ą д .NET ߛ ॰ ˞ ֹ ϡ ˞ ADO.NET ֽგநྤफ़Ą Borland ֹϡ˞ Borland Data Providers for .NET (BDP.NET)ֽᖎ̼ԣి ADO.NET ฟ൴۞̍үĄт‫ڍ‬ଋሢଉԣిᑕϡ඀ёฟ൴(RAD)ሀ‫ݭ‬Ăͽֹ̈́ ϡপّĂ͞‫ڱ‬Ă‫ְ׶‬Іሀ‫ۏ۞ݭ‬ІጱШ඀ёᄬ֏Ă֤ᆃଋಶົ൴னֹϡ ADO.NET ሀ‫ݭ‬ฟ൴ᑕϡ඀ёߏ‫ܧ‬૱ሢଉ۞Ąт‫ڍ‬ଋߏ็௚۞ྤफ़ऱ඀ё रĂADO.NET ೩ֻ˞ሢଉ۞៍‫ه‬Ăּтྤफ़ܑĂྤफ़ЕĂͽ̈́᛼Ҝ‫׶‬ᙯాĄ XML ฟ൴ˠࣶ˵ົ‫ܧ‬૱ሢଉֹϡ༼ᕇĂͭ΃༼ᕇĂΈԙ༼ᕇĂ‫༼̄׶‬ᕇֽ఍ ந࠹Т۞ྤफ़Ą ˭ࢬ۞͹ᗟ೩ֻ˞ᒢྋĈ1)ADO.NET ߛၹ۞͹ࢋ̮ІĂ2)ADO.NET тң ᄃ.NET ߛ॰̚‫΁׎‬඀ёሀёፋЪĂ3)Delphi 8 for .NET ۞ᙯᔣΑਕĂ۞៍‫ه‬ ࡦഀۢᙊĄ

6-2

ᑕϡ඀ёฟ൴͘Ί

ώ̈༼̬௜˞Ĉ y

ADO.NET ߛၹĄ

y

ADO.NET ֹϡ۰̬ࢬĄ

y

BDP.NET ‫׻‬Щ۩มĄ

y

ADO.NET ᑕϡ඀ёฟ൴Ą

ADO.NET ߛၹ

ADO.NET ߛ ၹ ۞ ‫ ࣎ ׌‬͹ ࢋ ̮ І ‫ ߏ ܮ‬೩ ֻ ۰ Ğ Provider ğ ͽ ̈́ ྤ फ़ ะ (DataSet)Ąྤफ़ֽ໚΃ܑ˞၁ᅫ۞ྤफ़ऱٕߏ XML ᑫ९Ăྤफ़೩ֻ۰ົ೩ ֻాඕ֭ͷ็ᅍ‫΄׻‬Ă҃ྤफ़ะ‫ܑ΃݋‬д੃ጸវ̚۞˘ٕ࣎ߏк࣎ྤफ़ֽ ໚Ąࢋᒢྋ˘ਠ ADO.NET ሀ‫ݭ‬Հк۞ྤੈĂኛણ҂.NET ߛ॰۞ฟ൴ˠࣶ ͘ΊĄ

ྤफ़ֽ໚(Data Source) ྤफ़ֽ໚ߏ၁ᅫ۞ྤफ़ऱĂྤफ़ऱΞͽߏώгྤफ़ऱٕߏᅈბྤफ़ऱĂྤफ़ ֽ໚˵Ξͽߏ XML ᑫ९Ąд็௚۞ྤफ़ऱ඀ёనࢍ̚Ăฟ൴ˠࣶ˘ਠֽᄲ ߏۡତֹϡྤफ़ֽ໚Ă఺఼૱ᅮࢋֹϡኑᗔĂ૞ᛳ۞̬ࢬĄᖣϤ ADO.NETĂ ྤफ़ऱฟ൴ˠֹࣶϡ˘௡̮Іֽх‫ྤפ‬फ़ֽ໚ĂᏮ΍ྤफ़Ăͽ̈́็ᅍ‫΄׻‬Ą

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-3

ྤफ़೩ֻ۰ĞData Providersğ ྤफ़೩ֻ۰̮ІΞͽాඕ‫ז‬၁ᅫ۞ྤफ़ऱٕߏ XML ᑫ९Ă֭ͷΞͽᔳᖟ၁ ү۞௟༼Ąྤफ़೩ֻ۰Ξͽాඕ˘ٕ࣎ߏк࣎ྤफ़ֽ໚Ă็ᅍ‫΄׻‬Ă֭ͷ၆ ྤफ़ะᏮ΍ྤफ़Ą .NET ߛ॰Β߁˞ MS SQLĂOLE DBĂ ͽ̈́ Oracle ۞ྤफ़೩ֻ۰Ąੵ˞͚ ೯.NET ೩ֻ۰ĂDelphi 8 for .NET ˵Βӣ˞ Borland Data Providers for .NET. BDP.NET ֽాඕՀк۞ຽࠧᇾ໤ྤफ़ऱĂ೩ֻ˞˘࡭۞඀ё̼ᒖ ဩĄኛણ҂ Borland Data Providers for .NET. BDP.NET ͹ᗟͽᒢྋՀк۞ ྤੈĄ Delphi 8 for .NET ᖣϤ‫ۏ‬Іֽ೩ֻ.NET ྤफ़೩ֻ۰Ą఺࣎‫ۏ‬І೩ֻ˞ۡତ х‫פ‬.NET ྤफ़ะ۞ਕ˧ĂٕߏᖣϤ Borland Data Providers for .NET. BDP.NET ֽాඕՀк۞ຽࠧᇾ໤ྤफ़ऱĂ೩ֻ˞˘࡭۞඀ё̼ᒖဩĄኛણ҂ Borland Data Providers for .NET. BDP.NET ͹ᗟͽᒢྋՀк۞ྤੈĄ

ྤफ़ะ(DataSet) ྤफ़ะ‫ۏ‬І΃ܑ˞˘ٕ࣎ߏк࣎ྤफ़ֽ໚д੃ጸវ̚۞ྤफ़ܑͽ̝̈́ม۞ᙯ ܼĄྤफ़ะ೩ֻ˞ᇶॡ۞̍үડાٕߏ෍ᑢ۞ྤफ़ࢬ‫ֽۍ‬఍நྤफ़Ą ADO.NET ᑕϡ඀ёд੃ጸវ̚఍நྤफ़ܑĂ̙҃ߏд၁ᅫ۞ྤफ़ऱ̚఍ந ྤफ़Ąྤफ़ะ೩ֻ˞ͧۡତాඕ၁ᅫྤफ़ऱՀ̂۞ᇅֽّ఍நྤफ़Ąಶညధ кྤफ़ऱր௚͚೯۞ cursor ‫ۏ‬ІᙷҬĂྤफ़ะΞͽΒӣк࣎ DataTablesĂ ఺ֱ DataTables ΃ܑ̙Тྤफ़ֽ໚̚۞ྤफ़ܑٕߏ ViewsĄྤफ़ะֹϡ˞‫ܧ‬ ТՎĂᗓቢ۞ሀёֽ఍நྤफ़Ă֭ͷᖣϤྤफ़೩ֻ۰็ᅍՀາ‫΄׻‬ගྤफ़ֽ ໚Ą Delphi 8 for .NET ೩ ֻ ˞ ‫ ׌‬჌ ྤ फ़ ะ ឰ ଋ ֹ ϡ Ĉ ᇾ ໤ ྤ फ़ ะ (standard Datasets)ͽ̈́‫ݭ‬ၗྤफ़ะ(Typed DataSets)Ą༊ଋ‫ؠ‬ཌྷ˘࣎ྤफ़ะ‫ۏ‬ІॡĂ ᇾ໤ྤफ़ะߏ̰‫ྤ۞ؠ‬फ़ะĄ఺჌ྤफ़ะߏૄ‫ٺ‬ଋֹϡ۞ྤफ़ֽ໚۞᛼Ҝॾ ёֽ‫ؠ‬ཌྷ۞Ăι۞‫ؠ‬ཌྷߏдેҖॡഇॲፂଋ۞ Select ୃࢗଂྤफ़ֽ໚‫۞଀פ‬Ą

6-4

ᑕϡ඀ёฟ൴͘Ί

‫ݭ‬ၗྤफ़ะ೩ֻ˞ឰଋଂྤफ़ֽ໚̚х‫ྤפ‬फ़ॡՀ̂۞ॾёଠ‫ט‬ᝋĄ‫ݭ‬ၗྤ फ़ะߏଂྤफ़ะᙷҾࢉϠ΍ֽ۞Ą‫ݭ‬ၗྤफ़ะ̯ధଋֹϡЩჍֽх‫ྤפ‬फ़ܑ ‫׶‬᛼ҜĂ҃൑ᅮֹϡ collection ͞‫ڱ‬Ą‫ݭ‬ၗྤफ़ะ೩ֻ˞Հр඀ёቅዦ᝝ّĂ Լච۞ Code Completion ਕ˧Ă֭ͷ೩ֻ˞ᇾ໤ྤफ़ะ൑‫ڱ‬೩ֻ۞ૻ̼ྤफ़ ‫ݭ‬ၗਕ˧Ąበᛌጡົдበᛌॡഇᑭߤ‫ݭ‬ၗྤफ़ะߏӎѣЇң‫ݭ‬ၗ̙௑۞᏾ ᄱĂ̙ᅮࢋඈ‫ેז‬ҖॡഇĄ༊ଋ‫ޙ‬ϲ‫ݭ‬ၗྤफ़ะĂଋ‫ז࠻ົܮ‬඀ёቅ‫ޙ‬ϲ˞ ˘ֱາ۞‫ۏ‬І֭ͷΞͽд૞९გநࣶ̚х‫פ‬Ąଋ૟ົ‫ڦ‬ຍ‫ז‬ѣ‫࣎׌‬ᑫ९ົͽ ྤफ़ะֽ‫׻‬ЩĄ‫࣎˘̚׎‬ᑫ९ߏ XML ۞.xsd ᑫ९ĂΩγ˘࣎‫ॲߏ݋‬ፂଋֹ ϡ۞඀ёᄬ֏۞඀ёቅᑫ९Ąѣᙯྤफ़ะ۞ٙѣྤफ़ĂΒӣ˞ଂྤफ़ऱాඕ ֽ۞ྤफ़ܑͽ̈́᛼Ҝྤफ़ඈౌߏᐼхд.xsd ᑫ९̚Ą҃඀ёቅᑫ९۞̰ट‫݋‬ ߏॲፂ.xsd ᑫ९̚۞ XML ֽயϠ۞Ąт‫ڍ‬ଋຐԼត‫ݭ‬ၗྤफ़ะ۞ߛၹĂଋ ΞͽԼត.xsd ᑫ९̚۞ีϫĄ༊ଋࢦາበᛌॡĂ඀ёቅᑫ९‫ॲົܮ‬ፂ࣒Լ‫ޢ‬ ۞ XML ֽࢦາயϠĄ ኛણ҂ Microsoft .NET ߛ॰ SDK ͽᒢྋՀкྤफ़ะ۞ྤੈĄ

ADO.NET ֹϡ۰̬ࢬ ADO.NET ೩ֻ˞.NET ̚Ч჌̙Т۞඀ё̼ሀёх‫ྤפ‬फ़۞ਕ˧Ą

Web ܑಏ д ASP.NET ̚۞ Web ܑಏ೩ֻ˞д Web ̚х‫ྤפ‬फ़ऱ۞͞‫ࢬ̬ܮ‬Ą ASP.NET ֹϡ˞ ADO.NET ֽ఍நྤफ़х‫۞פ‬ΑਕĄ .NET ‫ ׶‬BDP.NET ాඕ̮І೩ֻ˞ Web ܑಏ‫ ׶‬ADO.NET ᖎ̼۞ፋЪਕ ˧ĄDB Web ଠ‫ีט‬Тॡ͚೯ ADO.NET ‫ ׶‬BDP.NET ̮ІĂΞͽ಼̂ΐి Web ᑕϡ඀ё۞ฟ൴Ą

Windows ܑಏ ੵ˞ Web ܑಏ̝γĂWindows ܑಏΞͽઇࠎ็௚ĂࣧϠүຽր௚ϡ͗ბх ‫ פ‬ADO.NET ྤफ़ऱ۞̬ࢬĄ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-5

д Delphi 8 for .NET ̚ĂଋΞͽ೩ֻ‫׌‬჌ Windows ܑಏĈௐ 1 ߏ TWinForm ‫ۏ‬ІĂιߏଂ TForm ᚶٚ˭ֽĂ֭ͷઇࠎࣧϠ.NET Windows ܑಏ۞ૄᖂ ᙷҾĂௐ 2 ჌‫ ߏ݋‬VCL.NET ܑಏĄ

BDP.NET ‫׻‬Щ۩ม BDP.NET ᙷҾΞͽд Borland.Data ‫׻‬Щ۩ม̚Ա‫ז‬Ą BDP.NET‫׻‬Щ۩ม Borland.Data.Common

‫׻‬Щ۩มᄲ‫ځ‬ Βӣ˞ٙѣBorlandྤफ़೩ֻ۰ٙѣ఼ϡ۞‫ۏ‬ІĂ‫̚׎‬ Βӣ˞᏾ᄱ‫ּ׶‬γᙷҾĂྤफ़Еᓝ‫ݭ‬ၗĂ೩ֻ۰ᏴีĂ ͽ̈́‫ޙ‬ϲଋҋ̎۞‫΄׻‬ĂాඕĂ‫׶‬cursorᙷҾ۞̬ࢬ‫ؠ‬ ཌྷĄ

Borland.Data.Provider

Βӣ˞ᙯᔣ۞BDP.NET ᙷҾĂּтBdpCommand , BdpConnection , BdpDataAdapter , ͽ̈́೩ֻ‫΁׎׶‬ γొྤफ़ֽ໚̢જ۞ΑਕĂּт‫׶‬Oracle, DB2, Interbase, ͽ̈́ MS SQL Server ྤफ़ऱ̢જ۞ਕ˧Ą

Borland.Data.Schema

Βӣ˞‫ޙ‬ϲଋҋ̎۞ྤफ़ऱჩࢋ۞఍நᙷҾ̬ࢬĂͽ̈́ ˘ֱ‫ؠ‬ཌྷmetadata۞‫ݭ‬ၗ‫׶‬ЕᓝĄ

Borland Data Providers for Microsoft .NET ੵ˞͚೯.NET ߛ॰̚۞ྤफ़೩ֻ۰̝γĂDelphi 8 for .NET ˵Βӣ˞ Borland Data Providers for Microsoft .NET (BDP.NET)ĄBDP.NET ၁ү ˞.NET Provider ࢋՐ̬ࢬĂ֭ͷਕૉాඕՀк߹Җ۞ྤफ़ऱĄώ̈༼੅ኢ ˞˭ࢬ۞͹ᗟĈ

6-6

y

Data Provider ߛၹĄ

y

BDP.NET ᐹᕇĄ

y

BDP.NET ‫ ׶‬ADO.NET ̮ІĄ

y

BDP.NET ྤफ़‫ݭ‬ၗĄ

y

BDP.NET ̬ࢬĄ

ᑕϡ඀ёฟ൴͘Ί

Data Provider ߛၹ Delphi 8 for .NET ͚೯˞.NET ߛ॰۞ྤफ़೩ֻ۰Ăͽ̈́ BDP.NET ྤफ़೩ֻ ۰Ą

BDP.NET ೩ֻ˞੼ड़தх‫ྤפ‬फ़ֽ໚۞ߛၹĂЯࠎ BDP.NET ֹ̙ϡ COM Interop ᆸĄ

BDP.NET ᐹᕇ BDP.NET ೩ֻ˞ధк۞ᐹᕇĈ y

೩ֻ˞၆к࣎ྤफ़ऱπέ˘࡭۞඀ё̼ሀ‫ݭ‬Ą

y

੼ड़த۞ྤफ़х‫ߛפ‬ၹĄ

y

೩ֻᅅ‫͚ٽ‬೯‫ྤ΁׎‬फ़ऱ۞ฟ‫ߛٸ‬ၹĄ

y

೩ֻᇤᆷ˘Ѩ֭ͷాඕ‫ז‬Їң͚೯۞ྤफ़ऱ۞Ξொങّ඀ёቅĄ

y

дк࣎ྤफ़ऱ̚ጐΞਕ۞೩ֻ˘࡭۞ྤफ़‫ݭ‬ၗ၆ߍਕ˧Ą

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-7

y

Ξ၆ߍ‫ז‬.NET ࣧϠ‫ݭ‬ၗ۞ទᏭྤफ़‫ݭ‬ၗĄ

y

‫ ׶‬OLE DB ̙˘ᇹĂ ̙ᅮࢋֹϡ COM Interop ᆸĄ

y

Delphi 8 for .NET ೩ֻ˞‫ؼ‬ҩ.NET ͚೯‫΁׎ז‬πέ۞ਕ˧Ă೩ֻ˞˘࡭ ۞ాඕߛၹ‫ྤ׶‬फ़‫ݭ‬ၗ۞၆ߍĄ

BDP.NET ‫ ׶‬ADO.NET ̮І ٙѣ۞ྤफ़ऱ‫ా׶‬ඕ̮Іౌ၆ ADO.NET ۞ྤफ़ะ̮ІᏮ΍ྤफ़Ąྤफ़ะߏ ˘ ࣎ ٕ ߏ к ࣎ DataTables д ੃ ጸ វ ̚ ۞ ྤ फ़ ΃ ܑ Ą Տ ˘ ࣎ ྤ फ़ ะ ̚ ۞ DataTable ౌߏϤ DataColumns ‫ ׶‬DataRows ௡јĄྤफ़ะߏϤଋШྤफ़ ೩ֻ۰൴΍۞ SQL ߤྙ҃யϠ۞Ą̰‫˯ؠ‬ĂдՏ˘࣎೩ֻ۰̚ౌѣ˘࣎ᖎಏ ۞ SQL Select ୃࢗâਠߏ SELECT * FROM <ྤफ़ܑЩჍ>۞ॾёĄଋΞͽ ညፆүЇңᇾ໤۞ᙯాྤफ़ܑ˘ᇹֹֽϡྤफ़ะĄBDP.NET ྤफ़೩ֻ۰‫ދ‬྅ ˞Տ˘࣎ྤफ़ऱ‫ݭ‬ၗ۞၁ү௟༼Ă֭ͷ̯ధଋ‫މ‬ᄦ̼ଋ۞ SQL ୃ֭ࢗͷ೩ֻ Ԇፋ۞ᇅֽّგநඕ‫ྤڍ‬फ़ะĄ Տ˘࣎ྤफ़೩ֻ۰ౌΒӣ˞నࢍॡഇ̮Іͽ೩ֻଋд Windows ܑಏٕߏ Web ܑಏ̚ͽ‫ٳ‬Ѣ۞͞ёֹϡĄ఺ֱ̮ІົҋજயϠ‫ކ‬Ә‫ؠ׶‬ཌྷྤफ़х‫ᙷפ‬ Ҿ‫۞ڱ͞׶‬඀ёቅĂͽ̈́‫ދ‬྅х‫׶פ‬გநྤफ़ะ̚ྤफ़۞ SQL ୃࢗĄ˵೩ֻ ˞˘௡ဦԛበᏭጡֽᑒӄଋ‫ޙ‬ϲଋ۞ྤफ़ాඕĂྤफ़ะĂྤफ़ᙯܼĂͽ̈́‫׎‬ ΁۞̮৵Ą

͚೯۞ྤफ़ऱ BDP.NET Βӣ˞˭Еྤफ़ऱ۞ྤफ़೩ֻ۰Ĉ

6-8

y

InterBase

y

Oracle

y

IBM DB2

y

Microsoft SQL Server

ᑕϡ඀ёฟ൴͘Ί

y

Microsoft Access

BDP.NET ྤफ़‫ݭ‬ၗ .NET ߛ॰೩ֻ˞‫ܧ‬૱ᇃ‫۞ھ‬ទᏭྤफ़‫ݭ‬ၗĄBDP.NET ᚶٚទᏭྤफ़‫ݭ‬ၗĂ ֭ͷ೩ֻ˞̰‫۞ޙ‬ԯទᏭྤफ़‫ݭ‬ၗ၆ߍ‫ז‬ι͚೯۞ྤफ़ऱࣧϠྤफ़‫ݭ‬ၗ۞ਕ ˧Ąኛણ҂ BDP.NET ྤफ़‫ݭ‬ၗ͹ᗟͽ‫ܮ‬ᒢྋՀк۞ྤੈĄ

BDP.NET ̬ࢬ ଋΞͽᖣϤ၁ү˘௡.NET Provider ̬ࢬֽ‫ؼ‬ҩ BDP.NET ͽ͚೯‫۞΁׎‬ᙯ ాྤफ़ऱĄBDP.NET ᖎ̼˞ధкᅮࢋ၁үྤफ़೩ֻ۰̬ࢬ۞ΑਕĄ ᔵ ൒.NET ߛ॰ග̟ଋࠎՏ˘࣎ྤफ़ֽ໚‫ޙ‬ϲ࣎Ҿྤफ़೩ֻ۰۞ਕ˧ĂBorland ᖣϤ˘௡఼ϡ۞̮Іᖎ̼˞఺࣎̍үĄଋ̙ᅮࢋ‫ޙ‬ϲΒӣ DataAdaptersĂ DataReadersĂ Connection ‫ۏ‬ІĂͽ̈́‫΁׎‬υࢋ‫ۏ‬І۞፾ϲ೩ֻ۰ĂଋΪᅮ ࢋ၁ү˘௡ BDP.NET ۞̬ࢬ೧І֭ͷΐˢ‫ ז‬Borland ྤफ़೩ֻ۰̝̚ಶΞ ͽ˞Ą ‫ޙ‬ϲ೧І(plug-ins)ͧ‫ޙ‬ϲБາ۞ྤफ़೩ֻ۰ᖎಏк˞ĄଋΪᅮࢋ‫ޙ‬ϲΒӣଋ ۞೩ֻ۰۞‫׻‬Щ۩มͽ̈́‫ދ‬྅প‫ؠ‬೩ֻ۰Αਕ۞ᙷҾ۞ Assembly ӈΞĄҌ ‫ٺ‬ଋᅮࢋֹϡ۞ྤफ़ాඕĂેҖ‫΄׻‬Ăͽ̈́ଂྤफ़ֽ໚̚х‫ྤפ‬फ़۞Αਕ̏ གྷϤ Borland ྤफ़೩ֻ۰̬ࢬ೩ֻ˞Ăଋ൑ᅮГҋ̎၁үĄ

BDP.NET ྤफ़‫ݭ‬ၗ BDP.NET ۞ྤफ़‫ݭ‬ၗΞͽ၆ߍ‫ז‬.NET ۞ទᏭྤफ़‫ݭ‬ၗĄॲፂ̙Т۞ྤफ़ ऱĂBDP.NET ۞ྤफ़‫ݭ‬ၗົ၆ߍ‫ࣧז‬Ϡ۞ྤफ़‫ݭ‬ၗĄдጐΞਕ۞ቑಛ̰Ă BDP.NET ೩ֻ˞Ĉ y

д̙Тྤफ़ऱ̝ม˘࡭۞ྤफ़‫ݭ‬ၗ၆ߍĄ

y

ទᏭྤफ़‫ݭ‬ၗ၆ߍ‫ז‬.NET ࣧϠ‫ݭ‬ၗĄ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-9

BDP.NET ‫ ׶‬.NET ߛ॰ д ADO.NET ̚۞ྤफ़ะᙷҾֹϡ˞.NET ߛ॰۞ྤफ़‫ݭ‬ၗĄBDP.NET ၆‫ٺ‬ ͚೯۞ྤफ़ऱົԯទᏭྤफ़‫ݭ‬ၗ၆ߍ‫ז‬.NET ྤफ़‫ݭ‬ၗĄдనࢍॡഇĂଋΞ ͽֹϡ BDP.NET ទᏭྤफ़‫ݭ‬ၗĂ఺ֱទᏭྤफ़‫ݭ‬ၗົዋ༊۞၆ߍ‫ࣧז‬Ϡ۞ ྤफ़‫ݭ‬ၗĄ

ྤफ़‫ݭ‬ၗ .NET ߛ॰೩ֻ˞ᇃ‫۞ھ‬ទᏭྤफ़‫ݭ‬ၗĄBDP.NET ᚶٚ˞ទᏭྤफ़‫ݭ‬ၗĂ֭ ͷ೩ֻ˞̰‫۞ޙ‬၆ߍਕ˧ͽ၆ߍ‫͚ז‬೯۞ྤफ़ऱֹϡ۞ྤफ़‫ݭ‬ၗĄBDP.NET ͚೯˞၆ߍ‫ ז‬DB2Ă InterbaseĂ MS SQLĂ MSDEĂ ͽ̈́ Oracle ۞ទᏭ ྤफ़‫ݭ‬ၗĄ

DB2 BDP.NET ͚೯˞˭ࢬ۞ DB2 ‫ݭ‬ၗ၆ߍĈ BDP.NET ၆‫ ٺ‬DB2 ۞ទᏭྤफ़‫ݭ‬ၗĄ DB2 ‫ݭ‬ၗ CHAR

Bdp ‫ݭ‬ၗ String

BdpSub‫ݭ‬ၗ stFixed

System.Type String

VARCHAR

String

NA

String

SMALLINT

Int16

NA

Int16

BIGINT

Int64

NA

Int64

INTEGER

Int32

NA

Int32

DOUBLE

Double

NA

Double

FLOAT

Float

NA

Single

REAL

Float

NA

Single

DATE

Date

NA

DateTime

TIME

Time

NA

DateTime

NA

DateTime

TIMESTAMP

6-10

ᑕϡ඀ёฟ൴͘Ί

Datetime

DB2 ‫ݭ‬ၗ NUMERIC

Bdp ‫ݭ‬ၗ Decimal

BdpSub‫ݭ‬ၗ NA

System.Type Decimal

DECIMAL

Decimal

NA

Decimal

BLOB

Blob

stBinary

Byte[]

CLOB

Blob

stMemo

Char[]

Interbase BDP.NET ͚೯˞˭ࢬ۞ Interbase ‫ݭ‬ၗ၆ߍĄ BDP.NET ၆‫ ٺ‬Interbase ۞ទᏭྤफ़‫ݭ‬ၗ Interbase ‫ݭ‬ၗ CHAR

.Bdp ‫ݭ‬ၗ String

BdpSub‫ݭ‬ၗ stFixed

System.Type String

VARCHAR

String

NA

String

SMALLINT

Int16

NA

Int16

INTEGER

Int32

NA

Int32

FLOAT

Float

NA

Single

DOUBLE

Double

NA

Double

BLOB Sub_Type 0

Blob

stBinary

Byte[]

BLOB Sub_Type 1

lob

stMemo

Char[]

TIMESTAMP

Datetime

NA

DateTime

MS SQL ‫ ׶‬MSDE BDP.NET ͚೯˞˭ࢬ۞ MS SQL ‫ ׶‬MSDE ‫ݭ‬ၗ၆ߍĄ BDP.NET ၆‫ ٺ‬MS SQL ‫ ׶‬MSDE ۞ទᏭྤफ़‫ݭ‬ၗ MSSQL ‫ݭ‬ၗ BIGINT

Bdp ‫ݭ‬ၗ Int64

BdpSub‫ݭ‬ၗ NA

System.Type Int64

INT

Int32

NA

Int32

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-11

MSSQL ‫ݭ‬ၗ SMALLINT

Bdp ‫ݭ‬ၗ Int16

BdpSub‫ݭ‬ၗ NA

System.Type Int16

TINYINT

Int16

NA

Int16

BIT

Boolean

NA

Boolean

DECIMAL

Decimal

NA

Decimal

NUMERIC

Decimal

NA

Decimal

MONEY

Decimal

NA

Decimal

SMALLMONEY

Decimal

NA

Decimal

FLOAT

Double

NA

Double

REAL

Float

NA

Single

DATETIME

DateTime

NA

DateTime

SMALLDATETIME

DateTime

NA

DateTime

CHAR

String

stFixed

String

VARCHAR

String

NA

String

TEXT

Blob

stMemo

Char[]

BINARY

VarBytes

NA

Byte[]

VARBINARY

VarBytes

NA

Byte[]

IMAGE

Blob

stBinary

Byte[]

TIMESTAMP

VarBytes

NA

Byte[]

UNIQUEIDENTIFIER

Guid

NA

Guid

Oracle BDP.NET ͚೯˞˭ࢬ۞ Oracle ‫ݭ‬ၗ၆ߍĄ BDP.NET ၆‫ ٺ‬Oracle ۞ទᏭྤफ़‫ݭ‬ၗ Oracle ‫ݭ‬ၗ CHAR NCHAR

6-12

ᑕϡ඀ёฟ൴͘Ί

Bdp ‫ݭ‬ၗ String

BdpSub‫ݭ‬ၗ stFixed

System.Type String

String

stFixed

String

Oracle ‫ݭ‬ၗ VARCHAR

Bdp ‫ݭ‬ၗ String

BdpSub‫ݭ‬ၗ NA

System.Type String

NVARCHAR

String

NA

String

VARCHAR2

String

NA

String

NVARCHAR2

String

NA

String

NUMBER

Decimal

NA

Decimal

DATE

Date

NA

DateTime

BLOB

Blob

stHBinary

Byte[]

CLOB

Blob

stHMemo

Char[]

LONG

Blob

stMemo

Char[]

LONG RAW

Blob

stBinary

Byte[]

BFILE

Blob

stBFile

Char[]

ROWID

String

NA

String

BDP.NET ̮Іనࢍछ ೀͼٙѣ۞̶೸ёᑕϡ඀ёౌߏॲፂ᝝‫׶פ‬Հາྤफ़ऱ̚۞ྤੈႊซ۞Ąଋ ֹϡ ADO.NET ฟ൴۞̙Т۞ᑕϡ඀ёᅮࢋ̙Т۞͞‫ֹֽڱ‬ϡྤफ़ĄּтĂ ଋΞਕΪᅮࢋฟ൴дܑಏ̚ពϯྤफ़۞ᑕϡ඀ёĄٕ඾ଋΪᅮࢋฟ൴‫΁׎׶‬ ̳Φ̶ֳྤफ़۞ᑕϡ඀ёĄ̙გଋຐฟ൴̦ᆃᇹ۞ᑕϡ඀ёĂଋౌᅮࢋᒢྋ ADO.NET ۞ૄώ៍‫ه‬Ą Delphi 8 for .NET ೩ֻ˞ BDP.NET ̮Іనࢍछ̯ధଋд̶೸ёĂ੼‫ؼ‬णّ ۞ᑕϡ඀ё̚ፋЪྤफ़ĄᖣϤ೩ֻ˘ֱనࢍछĂଋΞͽѣड़த۞х‫פ‬ĂᏮ΍Ă ͽ̈́በᏭྤफ़Ą఺ֱనࢍछ̯ధଋᕱᜓ‫׶‬በᏭ‫׶‬প‫ྤؠ‬फ़ऱҨ‫ڇ‬ጡ࠹ᙯ۞ჩ ࢋ‫ۏ‬ІĂּтྤफ़ܑĂ᛼ҜĂᛈ൴ጡ(trigger)Ăͽ̈́৶͔Ą֭ͷ̯ధଋֹϡ ࠹Т۞̍‫׍‬၆Ч჌̙Т۞ຽࠧᇾ໤ྤफ़ऱ఍ந࠹Т۞̍үĄ ώ̈༼̬௜˞Ĉ y

̮Іనࢍछ̝ม۞ᙯܼĞComponent Designer Relationships ğ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-13

y

ాඕበᏭጡ(Connection Editor )

y

‫͛΄׻‬ф(Command Text )

y

யϠྤफ़ะ(Generate Datasets )

y

௡ၗ Data Adapter(Configure Data Adapter )

y

ྤफ़ᕱᜓछ(Data Explorer )

̮Іనࢍछ̝ม۞ᙯܼ(Component Designer Relationships)

ྤफ़ऱ̮ІనࢍछΒӣ˞ᇴ࣎͹ࢋ۞̮ІĂௐ 1 ߏ೩ֻాඕྤफ़ֽ໚۞ాඕ በᏭጡ(Connection Editor)Ăௐ 2 ‫̮΄׻ࠎߏ݋‬І‫ޙ‬ϲ‫͛΄׻۞΄׻‬фበᏭ ጡ(Command Text Editor)Ąௐ 3 ߏ௡ၗ Data Adapter በᏭጡͽ‫ྤࠎܮ‬फ़ adapter న‫΄׻ؠ‬Ăௐ 4 ߏயϠྤफ़ะ̮Іͽ‫ޙܮ‬ϲ‫މ‬ᄦ̼ྤफ़ะĄੵѩ̝ γĂଋΞͽֹϡྤफ़ᕱᜓछֽᕱᜓ‫׶‬প‫ྤؠ‬फ़ऱҨ‫ڇ‬ጡ࠹ᙯ۞ჩࢋ‫ۏ‬ІĂ֭ ͷֹϡ‫ٳ‬Ѣԫఙࠎଋ۞ Delphi for .NET ૞९ଂྤफ़ֽ໚̚х‫ྤפ‬फ़Ą

6-14

ᑕϡ඀ёฟ൴͘Ί

ాඕበᏭጡ(Connection Editor) Delphi 8 for .NET ೩ֻ˞ాඕበᏭጡనࢍछ̯ధଋଂ˘࣎ XML ௡ၗᑫ९̚ Ᏼፄాඕ௡ၗٕߏበᏭ˘࣎‫׻‬Щ۞ాඕྤੈĄ఺࣎በᏭጡ̯ధଋΐˢĂӁੵĂ ‫׶‬ീྏଋ۞ాඕĄଋΞͽᖣϤଂ̍‫׍‬ሹ̚‫ٳ‬Ѣ BdpConnection ̮І‫ܑז‬ಏ̚ ֽពϯ఺࣎በᏭጡ၆ྖ஼ĄଋΞͽᖣϤᕇᏴ‫ۏ‬Іᑭෛጡ˭͞۞ Connection Editor…‫ୁֽ΄׻‬જ఺࣎በᏭጡ၆ྖ஼Ą

‫͛΄׻‬фበᏭጡ(Command Text Editor) Delphi 8 for .NET೩ֻ˞‫͛΄׻‬фበᏭጡឰଋࠎጾѣCommandTextপّ۞ ‫̮΄׻‬І‫ޙ‬ϲ‫͛΄׻‬фĄд఺࣎በᏭጡ̚೩ֻ˞кҖበᏭଠ‫ีט‬ឰଋͽˠ̍ ۞͞ёᏮˢ‫͛΄׻‬фĂٕߏᖣϤᏴፄྤफ़ܑ‫׶‬᛼Ҝֽ‫ޙ‬ϲ‫͛΄׻‬фĄଋΞͽ ᖣ Ϥ ଂ ̍‫׍‬ሹ ̚ ‫ ٳ‬Ѣ BdpCommand̮ І ‫ܑ ז‬ಏ ̚ ֽ ពϯ఺ ࣎ በ Ꮽጡ၆ ྖ ஼ĄଋΞͽᖣϤᕇᏴ‫ۏ‬Іᑭෛጡ˭͞۞CommandText Editor…‫ୁֽ΄׻‬જ ఺࣎በᏭጡ၆ྖ஼Ą ࢋдҚЕ஼̚ពϯྤफ़ܑ‫׶‬᛼Ҝͽ‫ޙܮ‬ϲ SQL ୃࢗĂଋυืְА̏གྷ‫ؠ‬ཌྷ˞ ˘࣎Ξϡ۞ BdpConnectionĄӎ‫݋‬дበᏭጡ̚૟̙ົѣྤफ़జх‫פ‬Ą

யϠྤफ़ะ(Generate DataSets) Delphi 8 for .NET೩ֻ˞யϠྤफ़ะበᏭጡឰଋ‫ޙ‬ϲྤफ़ะĄֹϡ఺࣎̍‫׍‬ ۞р఍Βӣ˞ૻ‫ݭ‬ၗĂᖎሒ۞඀ёቅĂͽ̈́Ξͽֹϡcode completionĄྤफ़ ะົАଂૄᖂྤफ़ะᙷҾᚶٚ˭ֽĂГॲፂXMLჩࢋᑫ९(˘࣎.xsdᑫ९)̚ ۞ྤੈֽயϠາ۞ᙷҾĄଂჩࢋֽ۞ྤੈ(ྤफ़ܑĂ᛼Ҝඈ)ົజҋજயϠд າயϠ۞ྤफ़ะᙷҾ̚Ă֭ͷԛјາྤफ़ะ۞first-class‫ۏ‬І‫׶‬পّĄଋΞͽ ᖣϤଂ̍‫׍‬ሹ̚‫ٳ‬ѢBdpDataAdapter̮І‫ܑז‬ಏֽ̚ពϯ఺࣎በᏭጡ၆ྖ ஼ĄଋΞͽᖣϤᕇᏴ‫ۏ‬Іᑭෛጡ˭͞۞Config Data Adapter…‫ୁֽ΄׻‬જ఺ ࣎ በ Ꮽ ጡ ၆ ྖ ஼ Ą т ‫ ̮ ࣎ ఺ ڍ‬І ՟ ѣ ព ϯ Ă ֤ ᆃ ኛ Ᏼ ፄ ComponentInstalled .NET Componentsԯ఺̮࣎Іΐˢ‫׍̍ז‬ሹ̚Ą

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-15

௡ၗ Data Adapter(Configure Data Adapter) Delphi 8 for .NET ೩ֻ˞௡ၗ Data Adapter నࢍछឰଋ௡ၗ᝝/ᆷྤफ़ऱ۞ SQL ୃٕࢗߏ࿰ᐼ඀ԔĄData Adapters ߏ ADO.NET ћგ۞ྤफ़೩ֻ۰۞ ८͕̝˘ĂData Adapters ߏઇࠎྤफ़ֽ໚‫ྤ׶‬फ़ะ̝ม˘௡ֹϡֽ໛఼۞ ‫ۏ‬ІĄ఺ຍᏜ඾ଂྤफ़ऱ᝝‫ྤפ‬फ़֭ͷᆷˢྤफ़ะ̚Ă൒‫ޢ‬ଂྤफ़ะ̚ԯள જ۞ྤफ़ᆷаྤफ़ऱ̚ĄData Adapters ΞͽдЇң۞ྤफ़ֽ໚‫ྤ׶‬फ़ะ̚ ொજྤफ़ĄଋΞͽᖣϤଂ̍‫׍‬ሹ̚‫ٳ‬Ѣ BdpDataAdapter ̮І‫ܑז‬ಏֽ̚ព ϯ ఺ ࣎ በ Ꮽ ጡ ၆ ྖ ஼ Ą ଋ Ξ ͽ ᖣ Ϥ ᕇ Ᏼ ‫ ۏ‬І ᑭ ෛ ጡ ˭ ͞ ۞ Config Data Adapter…/Generate Types Dataset ‫ୁֽ΄׻‬જ఺࣎በᏭጡ၆ྖ஼Ą ࢋдҚЕ஼̚ពϯྤफ़ܑ‫׶‬᛼Ҝͽ‫ޙܮ‬ϲ SQL ୃࢗĂଋυืְА̏གྷ‫ؠ‬ཌྷ˞ ˘࣎Ξϡ۞ BdpConnectionĄӎ‫݋‬дበᏭጡ̚૟̙ົѣྤफ़జх‫פ‬Ą

ྤफ़ᕱᜓछ(Data Explorer) Delphi 8 for .NET ೩ֻ˞˘࣎ᆸѨඕၹ۞ྤफ़ऱᕱᜓጡͽ̈́በᏭ̍‫׍‬Ăឰଋ ਕૉᕱᜓপ‫ྤؠ‬फ़ऱ۞ჩࢋ‫ۏ‬ІĂ఺Βӣ˞ྤफ़ܑĂ᛼ҜĂ࿰ᐼ඀ԔĂᛈ൴ ጡĂͽ̈́৶͔Ąྤफ़ᕱᜓछ˵Ξͽ‫ؼ‬ҩాඕ‫߹΁׎ז‬Җ۞ຽࠧᇾ໤ྤफ़ऱĄ ˘όాඕ̝‫ޢ‬Ăଋ‫ܮ‬Ξͽᑭෛ‫ྤ΁׎‬फ़ऱ۞ჩࢋ‫ۏ‬І֭ͷ࣒ԼాඕĄଋΞͽ ᖣϤᏴፄ ViewData Explorer ֽពϯ఺࣎̍‫׍‬ĄѩγĂྤफ़ᕱᜓछ˵Ξͽֹ ϡ‫ٳ‬Ѣ۞͞ёԯྤफ़ֽ໚‫ٳ‬Ѣ‫ז‬Їң۞ Delphi 8 for .NET ૞९̚Ą఺࣎Αਕ д༊ଋాඕ˘࣎ጾѣ‫ܧ‬૱‫ా۞ܜ‬ඕфҚ۞ྤफ़ֽ໚ॡপҾ۞ѣϡĂЯࠎ఺Ξ ͽҋજயϠాඕфҚ֭ͷᔖҺ̙ϒቁ۞ᏮˢాඕфҚĄ

Delphi 8 for .NET ۞ྤफ़ऱԫఙ Delphi 7 ೩ֻ˞ᇴ჌ྤफ़ऱԫఙ̯ధଋฟ൴Ч჌̙Т‫ݭ‬ၗ۞ྤफ़ऱᑕϡ඀ ёĄߙֱԫఙĂּт BDEĂΪߏࠎ˞‫׶‬ᖞྤफ़ऱր௚ܲ޺࠹टّĄ‫۞΁׎‬ԫ ఙĂּт dbExpressĂߏֹϡֽฟ൴ྭπέ۞ྤफ़ऱᑕϡ඀ёĄொങ‫ז‬.NET ߛ॰ឰྤफ़ऱฟ൴ˠࣶࢬ၆˞າ۞፟ົ‫߄׶‬ጼĄ൒҃༊னѣ۞ᑕϡ඀ё̏གྷ ਕૉ႕֖ଋ۞ᅮՐĂ֤ᆃ‫ޙ‬ϲБາ۞ᑕϡ඀ё‫ܮ‬՟ѣ͉̂۞ຍཌྷĄ఺ߏࠎ̦

6-16

ᑕϡ඀ёฟ൴͘Ί

ᆃ Borland д͚೯າ۞ BDP.NET ‫ ׶‬ADO.NET ԫఙॡĂ̪൒೩ֻ Delphi னѣྤफ़ऱԫఙ۞޺ᜈ͚೯۞ࣧЯĄ Delphi 8 for .NET ೩ֻ˞ଂ Win3232 ϡ͗ბ‫ז‬.NET ߛ॰۞ྤफ़ऱԫఙொങ ྋՙ͞९Ąੵ˞೩ֹֻϡ ADO.NET ‫ ׶‬BDP.NET ‫ޙ‬ϲາ۞ྤफ़ऱᑕϡ඀ё ̝γĂଋΞͽொങனѣ۞ྤफ़ऱᑕϡ඀ё֭ͷТॡֹϡ.NET ۞ᐹᕇĄDelphi 8 for .NET ͚೯۞ Delphi ྤफ़ऱԫఙΒ߁˞Ĉ y

dbExpress.NET

y

DataSnap .NET Client (DCOM)

y

IBX.NET (InterBase for .NET)

y

BDE.NET

ֹϡ dbExpress.NET ฟ൴.NET ᑕϡ඀ё Delphi 8 for .NET Β߁˞.NET ‫ۍ‬ώ۞ dbExpressĂჍࠎ dbExpress.NETĄ ఺௡̮І೩ֻ˞‫ ׶‬Delphi 7dbExpress ࠹ट۞ΑਕĂҭߏགྷ࿅ՀາΞͽેҖ д.NET ߛ॰۞ VCL ܑಏ̚ĄdbExpress.NET ೩ֻ˞‫ ׶‬Delphi

7 ۞

dbExpress ˘ᇹ۞ᅅณ৺ϡ͗ბͽ̈́ಏШྤफ़ะ۞ਕ˧Ą

ֹϡ IBX.NET ฟ൴.NET ᑕϡ඀ё ੵ ˞ ᇾ ໤ ۞ BDP.NET data adapter ٕ ߏ .NET ߛ ॰ ۞ ADO.NET providers ̝γĂDelphi 8 for .NET ᔘ೩ֻ˞ᖣϤ InterBase Express ଠ‫ีט‬ ాඕ‫ ז‬InterBase ྤफ़ऱĄIBX.NET ଠ‫̯ีט‬ధଋాඕ‫ ז‬InterBase ྤफ़ऱĂ х‫ྤ۞̚׎פ‬फ़ܑ‫ྤ׶‬फ़ะĄ

ֹϡ DataSnap .NET Client (DCOM) ฟ൴.NET ᑕϡ඀ё Delphi 8 for .NET ೩ֻ˞Ξֹϡ Midas (DCOM)ϡ͗ბాඕ‫ ז‬3 ᆸᑕϡ඀ё ̚۞ྤफ़ऱ۞፟‫ט‬Ą

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-17

ֹϡ BDE.NET ฟ൴.NET ᑕϡ඀ё ଋΞͽాඕଋ۞ Delphi 8 for .NET ྤफ़ऱᑕϡ඀ё‫ ז‬BDE ͚೯۞ྤफ़ऱĂ ּт Paradox ‫ ׶‬dBaseĄ

ฟֹؕϡ InterBase Express InterBase Express (IBX)ߏ˘௡ਕૉଂ InterBase ྤफ़ऱх‫ྤפ‬फ़۞ྤफ़х‫פ‬ ̮ІĄᅮࢋລ੨ InterBase 6 ۞ InterBase Administration ̮ІົдୃࢗԆ InterBase ྤफ़х‫̮פ‬І̝‫ޢ‬ᄲ‫ځ‬Ą

IBX ̮І ˭ࢬ۞̮ІߏҜ‫̮ٺ‬Іሹ۞ InterBase ࢱѨ̚Ĉ TIBTable TIBQuery TIBStoredProc TIBDatabase TIBTransaction TIBUpdateSQL TIBDataSet TIBSQL TIBDatabaseInfo IBSQLMonitor TIBEvents TIBExtract

6-18

ᑕϡ඀ёฟ൴͘Ί

TIBClientDataSet

ᔵ൒఺ֱ̮І‫ ׶‬BDE ̮ІጾѣᙷҬ۞ЩჍĂIBX ̮І‫ ׶ݒ‬BDE ̮Іѣֱ̙ ТĄ၆‫ ٺ‬IBX ‫ ׶‬BDE ̚ᙷҬ۞̮ІĂ˭ࢬ۞̈༼ౌົᄲ‫׌఺ځ‬۰̝ม۞म ளĄ ଂ BDE ‫ ז‬IBX ՟ѣᖎಏ۞ொങྮशĄ˘ਠֽᄲĂଋυืֹϡ IBX ֽ‫ ΃פ‬BDE ̚ᙷҬ۞̮ІĂ൒‫ࢦޢ‬າበᛌଋ۞ᑕϡ඀ёĄ̙࿅Ă఺ᇹઇ̝‫ޢ‬ଋ۞ᑕϡ඀ ё଀‫ે۞ז‬Җड़தĂͽ̈́ਕૉх‫ פ‬InterBase Հૻ̂۞Αਕ‫ݒ‬ឰ఺࣎ொങត ଀‫ޝ‬ѣᆊࣃĄ

IBDatabase ଋΞͽֹϡ IBDatabase ̮І‫ޙ‬ϲ‫ྤ׶‬फ़ऱ۞ాඕĂ఺ΞͽΒӣ˘ٕ࣎ߏк࣎ ТՎ۞Ϲ‫ٽ‬Ą‫ ׶‬BDE ̙Т۞ߏĂIBX ጾѣ፾ϲ۞Ϲ‫̮ٽ‬ІĂ఺Ξͽឰଋԯྤ फ़ऱాඕ‫׶‬Ϲ‫ٽ‬఍ந̶ฟĄ ࢋన‫ྤؠ‬फ़ऱాඕĈ 1

дܑಏٕߏྤफ़ሀ௡̚ΐˢ˘࣎ IBDatabase ̮ІĄ

2

๱ˢ DatabaseName পّࣃĄ၆‫ٺ‬ώгాඕĂ఺ߏ޽ർჄĂྮशĂͽ̈́ ྤफ़ऱᑫ९۞ЩჍĄన‫ ؠ‬Connected পّࣃࠎ TrueĄ

3 ೩ϯ

Ꮾˢѣड़۞ֹϡ۰ЩჍ‫׶‬૜ቅĂ֭ͷᕇᏴ OK ֽ‫ޙ‬ϲྤफ़ऱాඕĄ

ଋΞͽд൳ᐂ̝‫ޢ‬ᖣϤన‫ ؠ‬LoginPrompt পّࣃࠎ false ֽԯֹϡ۰ЩჍ‫׶‬ ૜ቅᐼхд IBDatabase ̮І۞ Params পّࣃ̚Ąּт༊ଋͽր௚გநࣶ ൳ᐂ̝‫֭ޢ‬ͷన‫ ؠ‬LoginPrompt পّࣃࠎ falseĂ֤ᆃ༊ଋበᏭ Params প ّࣃॡ‫ܮ‬Ξͽ࠻‫ז‬т˭۞ྤੈĈ user_name=sysdba password=masterkey

IBTransaction ‫ ׶‬Borland Database Engine ̙Т۞ߏĂIBX ֹϡ˞፾ϲ۞ TIBTransaction ̮Іֽଠ‫ט‬Ϲ‫ٽ‬Ą఺࣎ૻ̂۞Αਕ̯ధଋԯྤफ़ऱాඕ‫׶‬Ϲ‫ٽ‬఍ந̶ฟĂ఺

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-19

ᇹ˘ֽଋ‫ܮ‬ΞͽӀϡ InterBase ۞ two-phase commit Αਕ(дᖬᄏк࣎ాඕ ֹ̚ϡϹ‫ֹ̈́ͽ)ٽ‬ϡ࠹Т۞ాඕଠ‫ט‬к࣎Ϲ‫ٽ‬Ą ଋΞͽֹϡ IBTransaction ̮Іֽ఍நϹ‫ٽ‬Ă఺࣎Ϲ‫ٽ‬Ξਕົ஝ঘ‫ٕ࣎˘ז‬ ߏк࣎ྤफ़ऱాඕĄд̂кᇴ۞ଐԛ˭â࣎ಏ˘۞ྤफ़ऱ/Ϲ‫̮ٽ‬І۞ລ ੨ሀ‫ݭ‬ಶ֖ૉ˞Ą ࢋన‫ؠ‬Ϲ‫ٽ‬Ĉ 1

т˯ٙࢗన‫ ࣎˘ؠ‬IBDatabase ాඕĄ

2

дܑಏٕߏྤफ़ሀ‫ٸ̚ݭ‬ˢ˘࣎ IBTransaction ̮ІĄ

3

న‫ ؠ‬DefaultDatabase পّࣃࠎଋ۞ IBDatabase ̮І۞ЩჍĄ

4

న‫ ؠ‬Active পّࣃࠎ True ͽୁજϹ‫ٽ‬Ą

IBX ྤफ़ะ̮І д IBX ѣᇴ࣎ྤफ़ะ̮ІΞͽᏴፄֹϡĂՏ˘࣎ྤफ़ะ̮Іౌѣι۞পّ‫׶‬ ዋϡّĈ

IBTable ଋΞͽֹϡ IBTable ̮Ідྤफ़ܑٕߏ view ̝˯‫ޙ‬ϲ˘࣎߿ϠϠ۞ྤफ़ะ ҃൑ᅮֹϡЇң۞ SQL ୃࢗĄ IBTable ̮Ід‫ܧ‬૱ट‫ٽ‬௡ၗĈ

6-20

1

дଋ۞ܑಏٕߏྤफ़ሀ௡̚ΐˢ˘࣎ IBTable ̮ІĄ

2

޽‫࠹ؠ‬ᙯ۞ྤफ़ऱ‫׶‬Ϲ‫̮ٽ‬ІĄ

3

ଂ TableName পّ۞˭ٛҚЕ̚޽‫ځ‬ᙯܼЩჍĄ

4

న‫ ؠ‬Active পّࣃࠎ TrueĄ

ᑕϡ඀ёฟ൴͘Ί

IBQuery ଋΞͽֹϡ IBQuery ̮ІֽેҖЇң۞ InterBaseDSQL ୃࢗĂࢨ‫ט‬ଋ۞ඕ ‫ྤڍ‬फ़ะΪΒӣপ‫۞ؠ‬᛼Ҝ‫ྤ׶‬फ़ЕĂֹϡ aggregate ‫ב‬ёĂͽ̈́ join к࣎ ྤफ़ܑĄ IBQuery ೩ֻ˞઱᝝۞ྤफ़ะĂ֭ͷዋЪֹϡд InterBase C/S ᒖဩ̚Ąࢋ న‫ ؠ‬IBQuery ̮ІĈ 1

т݈ٙࢗన‫ ࣎˘ؠ‬IBDatabase ాඕĄ

2

т݈ٙࢗన‫ ࣎˘ؠ‬IBTransaction ాඕĄ

3

дଋ۞ܑಏٕߏྤफ़ሀ௡̚ΐˢ˘࣎ IBQuery ̮ІĄ

4

޽‫࠹ؠ‬ᙯ۞ྤफ़ऱ‫׶‬Ϲ‫̮ٽ‬ІĄ

5

д IBQuery ۞ SQL পّࣃ̚Ꮾˢ˘࣎ѣड़۞ SQL ୃࢗĄ

6

న‫ ؠ‬Active পّࣃࠎ TrueĄ

IBDataSet ଋΞͽֹϡ IBQuery ̮ІֽેҖЇң۞ InterBaseDSQL ୃࢗĂࢨ‫ט‬ଋ۞ඕ ‫ྤڍ‬फ़ะΪΒӣপ‫۞ؠ‬᛼Ҝ‫ྤ׶‬फ़ЕĂֹϡ aggregate ‫ב‬ёĂͽ̈́ join к࣎ ྤफ़ܑĄIBDataSet ̮І‫ ׶‬IBQuery ̮І‫ᙷޝ‬ҬĂ઱˘۞̙Тߏ IBDataSet ͚೯᝝/ᆷ۞ྤफ़ะ҃൑ᅮֹϡ IBUpdateSQL ̮ІĄ ˭ࢬߏ˘࣎೩ֻ employee.gdb ྤफ़ऱ̚ COUNTRY ྤफ़ܑ۞ቑּĈ 1

т݈ٙࢗన‫ ࣎˘ؠ‬IBDatabase ాඕĄ

2

޽‫࠹ؠ‬ᙯ۞ྤफ़ऱ‫׶‬Ϲ‫̮ٽ‬ІĄ

3

дଋ۞ܑಏٕߏྤफ़ሀ௡̚ΐˢ˘࣎ IBDataSet ̮ІĄ

4

ࠎ˭ࢬ۞পّᏮˢ SQL ୃࢗĈ x

SelectSQL

x

RefreshSQL

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-21

5

x

ModifySQL

x

DeleteSQL

x

InsertSQL

న‫ ؠ‬Active পّࣃࠎ TrueĄ ኛ‫ڦ‬ຍĂд dialect 3 ̚็ᅍග‫ב‬ё۞ણᇴ‫׶‬᛼Ҝ۞ЩჍߏ‫̈̂׶‬ᆷ࠹ᙯ۞Ą

‫ڦ‬ຍ

ּтĈ FieldByName(EmpNo)

д dialect 3 ̚т‫ڍ‬᛼ҜЩჍߏ'EMPNO'’’Ă֤ᆃ˯ࢬ۞඀ёቅ૟̙ົа็Ї ң۞ඕ‫ڍ‬Ą

IBStoredProc ֹϡ IBStoredProc ֽેҖ౵кΪа็˘Еྤੈ۞ InterBase ࿰ᐼ඀ԔĄ၆‫ٺ‬ ົа็к‫˘ٺ‬Еྤੈ۞࿰ᐼ඀ԔĂٕߏΒӣ”Select”۞࿰ᐼ඀ԔĂኛֹϡ IBQuery ٕߏ IBDataSet ̮ІĄ

IBSQL ኛֹϡ IBSQL ̮Іֽ఍நԣిĂͷྤफ़ณ͌۞ྤफ़үຽĄ၆‫ٺ‬఍நྤफ़‫ؠ‬ཌྷ ٕߏଂ˘࣎ྤफ़ऱ๱ˢྤफ़‫ז‬Ωγ˘࣎ྤफ़ऱ۞үຽಶ‫ܧ‬૱ዋЪֹϡ IBSQLĄ д˭ࢬ۞ቑּ̚ĂIBSQL ̮ІజֹϡֽଂயϠጡ(generator)̚а็˭˘࣎Ξ ͽֹϡ۞ᇴࣃĈ 1

т݈ٙࢗన‫ ࣎˘ؠ‬IBDatabase ాඕĄ

2

дܑಏٕߏྤफ़ሀ௡̚‫ٸ‬ˢ IBSQL ̮І֭ͷన‫ؠ‬ι۞ Database পّࣃ ࠎྤफ़ऱ۞ЩჍĄ

3

д SQL পّࣃ̚Ꮾˢ SQL ୃࢗĂּтĈ SELECT GEN_ID(MyGenerator, 1) FROM RDB$DATABASE

6-22

ᑕϡ඀ёฟ൴͘Ί

IBUpdateSQL ֹϡ IBUpdateSQL ̮ІֽՀາ઱᝝۞ྤफ़ะĄଋΞͽֹϡ IBUpdateSQL ̮ ІֽՀາ IBQuery ۞Ꮾ΍Ą 1

т݈ٙࢗన‫ ࣎˘ؠ‬IBQuery ̮ІĄ

2

дܑಏٕߏྤफ़ሀ௡̚‫ٸ‬ˢ IBUpdateSQL ̮ІĄ

3

д ˭ ࢬ ۞ প ّ ࣃ ̚ Ꮾ ˢ SQL ୃ ࢗ Ĉ DeleteSQL Ă InsertSQL Ă ModifySQLĂ ͽ̈́ RefreshSQLĄ

4

న‫ ؠ‬IBQuery ̮І۞ UpdateObject পّࣃࠎ IBUpdateSQL ̮І۞Щ ჍĄ

5

న‫ ؠ‬Set the IBQuery ̮І۞ Active পّࣃࠎ TrueĄ

IBSQLMonitor ֹϡ IBSQLMonitor ̮Іֽฟ൴෧ᕝ̍‫ܮͽ׍‬Ⴞ༛ଋ۞ᑕϡ඀ё‫ ׶‬InterBase Ҩ‫ڇ‬ጡ̝ม໛఼۞ྤੈĄ༊ IBDatabase ̮І۞ TraceFlags পّࣃజฟୁ‫ޢ‬Ă ୁજ̚۞ IBSQLMonitor ̮ІಶΞͽ੠ᖸాඕ۞߿જ֭ͷԯᏮ΍็ਖ਼‫ז‬ᑫ९ ٕߏଠ‫̚ีט‬Ą ˘࣎рቑּߏ‫ޙ‬ϲ˘࣎፾ϲ۞ᑕϡ඀ёĂ఺࣎ᑕϡ඀ёΒӣ˞ IBSQLMonitor ̮Іͽ̈́ Memo ଠ‫ีט‬ĄેҖѩ඀ёĂ֭ͷдΩγ˘࣎͹඀ ё̚ฟୁ IBDatabase ̮І۞ TraceFlags পّࣃĂ֭ͷд͹඀ё̚‫ྤ׶‬फ़ऱ ̢જĂ൒‫ޢ‬ଋಶΞͽд݈ࢬ֤࣎ᑕϡ඀ё̚۞ Memo ଠ‫ז࠻̚ีט‬ᑕϡ඀ё ‫ ׶‬InterBase Ҩ‫ڇ‬ጡ̢જ۞ྤੈ˞Ą

IBDatabaseInfo ଋΞͽֹϡ IBDatabaseInfo ̮Іଂপ‫ྤ۞ؠ‬फ़ऱ̚х‫פ‬ჩࢋྤੈĂּт sweep ม࿣ĂODS ‫ۍ‬ώĂͽ̈́ϫֹ݈ϡྤफ़ऱ۞ֹϡ۰ЩჍඈĄ ּтĂࢋన‫ ؠ‬IBDatabaseInfo ̮Іֽពϯాඕ‫ྤז‬फ़ऱ۞ֹϡ۰ЩჍĈ 1

т݈ٙࢗన‫ ࣎˘ؠ‬IBDatabase ాඕĄ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-23

2

дܑಏٕߏྤफ़ሀ௡̚‫ٸ‬ˢ IBDatabaseInfo ̮І֭ͷన‫ؠ‬ι۞ Database পّࣃࠎྤफ़ऱ۞ЩჍĄ

3

дܑಏ̚‫ٸ‬ˢ Memo ̮ІĄ

4

дܑಏ̚‫ٸ‬ˢ Timer ̮І֭ͷన‫ؠ‬ι۞ม࿣Ą

5

ᗕᑝ Timer ۞ OnTimer ְІ֭ͷᏮˢт˭۞඀ёቅĈ Memo1.Text := IBDatabaseInfo.UserNames.Text; // Delphi example Memo1->Text = IBDatabaseInfo->UserNames->Text; // C++ example

IBEvents ֹϡ IBEvents ֽොΊ‫ܧ׶‬ТՎ఍நϤ InterBase Ҩ‫ڇ‬ጡ೩ֻ۞ְІĄ ࢋన‫ ؠ‬IBEvents ̮ІĈ 1

т݈ٙࢗన‫ ࣎˘ؠ‬IBDatabase ాඕĄ

2

дܑಏٕߏྤफ़ሀ௡̚‫ٸ‬ˢ IBEvents ̮І֭ͷన‫ؠ‬ι۞ Database পّ ࣃࠎྤफ़ऱ۞ЩჍĄ

3

д Events পّࣃ̚ᏮˢᙷҬ˭ࢬ۞ְІĈ IBEvents.Events.Add('EVENT_NAME'); // Delphi example IBEvents->Events->Add("EVENT_NAME"); // C++ Example

4

న‫ ؠ‬Registered পّࣃࠎ TrueĄ

InterBase გந̮І т‫ڍ‬ଋщ྅˞ InterBase 6Ăଋ‫ܮ‬Ξͽֹϡ InterBase 6 გந̮І௡Ă఺௡̮ І̯ధଋх‫ ۞̂ૻפ‬InterBase ‫ڇ‬ચ APIĄ ఺ֱ̮ІߏҜ‫ٺ‬ፋЪ൴णᒖဩ̚ InterBase Admin ࢱѨ̰Ĉ TIBConfigService TIBBackupService TIBRestoreService

6-24

ᑕϡ඀ёฟ൴͘Ί

TIBValidationService TIBStatisticalService TIBLogService TIBSecurityService TIBLicensingService TIBServerProperties TIBInstall TIBUnInstall

‫ڦ‬ຍ

ଋυืщ྅ InterBase 6 ̖ਕૉֹϡ఺ֱΑਕĄ

IBConfigService ֹϡ TIBConfigService ‫ۏ‬Іֽ௡ၗྤफ़ऱ۞ણᇴĂΒ߁˞ࢱѨቤ኏ડĂ‫ܧ‬Т ՎሀёĂܲ঻۩มĂͽ̈́ sweep ม࿣Ą

IBBackupService ֹϡ TIBBackupService ‫ۏ‬Іֽ౯Њଋ۞ྤफ़ऱĄᖣϤ IBBackupServiceĂଋ Ξͽన‫ؠ‬ડ๴Я̄(blocking factor)Ă౯Њᑫ९ЩჍĂͽ̈́ྤफ़ऱ౯ЊᏴีඈ ણᇴĄ

IBRestoreService ֹϡ TIBRestoreService ‫ۏ‬Іֽахଋ۞ྤफ़ऱĄᖣϤ IBRestoreServiceĂଋ Ξͽన‫ࢱؠ‬Ѩቤ኏ડĂࢱѨ̂̈Ăͽ̈́ྤफ़ऱахᏴีඈણᇴĄ

IBValidationService ֹϡ TIBValidationService ‫ۏ‬Іֽរᙋଋ۞ྤफ़ऱͽ̈́ࢦፋଋ۞ྤफ़ऱϹ ‫ٽ‬ĄᖣϤ IBValidationServiceĂଋΞͽన‫۞ؠ̰ؠ‬Ϲ‫ٽ‬ҖજĂа็̙Ъ‫۞ڱ‬ Ϲ‫ੈྤٽ‬Ă֭ͷన‫ྤ΁׎ؠ‬फ़ऱ۞ѣड़ّᏴีĄ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-25

IBStatisticalService ֹϡ TIBStatisticalService ‫ۏ‬Іֽᑭෛྤफ़ऱ௚ࢍᇴፂĂּтྤफ़ࢱѨĂྤ फ़ऱ൳ᐂĂܑᐝࢱѨĂ৶͔ࢱѨĂͽ̈́ր௚ᙯܼඈĄ

IBLogService ֹϡ TIBLogService ‫ۏ‬Іֽ‫ޙ‬ϲ൳ᐂᑫ९Ą

IBSecurityService ֹϡ TIBSecurityService ‫ۏ‬Іֽგநֹϡ۰х‫ פ‬InterBase Ҩ‫ڇ‬ጡĄᖣϤ IBSecurityServiceĂଋΞͽ‫ޙ‬ϲĂӁੵĂͽ࣒̈́Լֹϡ۰૳ཱིĂពϯٙѣ۞ ֹϡ۰Ăͽ̈́న‫ֹؠ‬ϡ SQL ֎Ғ۞̍үཏ௡Ą

IBLicensingService ֹϡ TIBLicensingService ̮Іֽᆧΐٕߏொੵ InterBase హវୁજᄮᙋĄ

IBServerProperties ֹϡ TIBServerProperties ̮Іֽа็ྤफ़ऱҨ‫ڇ‬ጡྤੈĂΒ߁˞௡ၗણᇴĂ ͽ̈́‫ۍ‬ώ‫׶‬଱ᝋྤੈĄ

IBInstall ֹϡ TIBInstall ̮Іֽన‫ ؠ‬InterBase ۞щ྅̮ІĂ఺Βӣ˞щ྅ֽ໚‫׶‬щ྅ ϫгϫᐂĂͽ̈́ࢋщ྅۞̮ІĄ

IBUnInstall ֹϡ TIBUnInstall ̮Іֽన‫ͅؠ‬щ྅̮ІĄ

ฟ൴ ADO.NET ᑕϡ඀ё ώ̈༼૟ᄲ‫ځ‬тңֹϡ Delphi 8 for .NET ฟ൴ ADO.NET ᑕϡ඀ёĂώቑּ ֹϡ۞ྤफ़ऱߏ InterBase 7.xĂቑּྤफ़ܑߏ tblSpeakersĂ‫׎‬ჩࢋт˭ٙϯĈ

6-26

ᑕϡ඀ёฟ൴͘Ί

tblSpeakers ྤफ़ܑ۞ SKID ᛼Ҝ‫ؠ‬ཌྷ˞˘࣎ᛈ൴ጡĂ఺࣎ᛈ൴ጡົࠎ SKID ᛼ҜࣃдՏາᆧ˘ඊྤफ़ॡҋજᆧΐ 1 ઇࠎҋજᆧΐ᛼Ҝ(Auto-Increment Field)Ą˭ဦӈߏ SKID ᛼Ҝ۞ᛈ൴ጡĈ

SKID ᛼Ҝ۞ᛈ൴ጡ‫ײ‬Ψ˞ቑּྤफ़ऱ̚۞ GenericID_Generator ఺࣎ҋજ யϠጡֽ‫଀פ‬ᇴࣃĈ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-27

ᒢྋ˞ቑּྤफ़ऱ۞ჩࢋྤੈ̝‫ޢ‬Ăனда‫ ז‬Delphi 8 for .NET ฟؕฟ൴ ADO.NET ᑕϡ඀ёĄ ࢵАд Delphi 8 for .NET ̚ᕇᏴ File|New|Items…ୁજ New Items ၆ྖ ஼ĂᕇᏴ Delphi for .NET Projects ༼ᕇ̚۞ Windows Form Application ဦ ည‫ޙ‬ϲ Window ܑಏᑕϡ඀ёĄ

д Delphi 8 for .NET ‫ޙ‬ϲ˞ Windows ܑಏᑕϡ඀ё̝‫ޢ‬Ăฟؕд Windows ܑಏ̚ΐˢ TabControl ଠ‫ีט‬Ĉ

6-28

ᑕϡ඀ёฟ൴͘Ί

ତ඾ଂ̍‫׍‬ሹ۞ Borland Data Provider ࢱѨ̚ΐˢ˘࣎ BdpConnection ̮ І‫ܑז‬ಏ̚ĂᕇᏴ໣ဂΠᔣฟୁ BdpConnection ۞ԣពΑਕܑĂ֭ͷᏴፄ‫׎‬ ̚۞ Connection Editor…ᏴีĈ

ତ඾‫ޙ‬ϲ˘࣎າ۞ InterBase ాඕĂ‫פ‬Щࠎ D8DemoDBĈ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-29

д Connection ၆ྖ஼̚Ꮾˢ D8DemoDB ాඕ۞ InterBase ྤफ़ऱĂֹϡ۰ ЩჍͽ̈́૜ቅඈాඕྤੈĂ౵‫ޢ‬ฟ൴ˠࣶΞͽᕇᏴ၆ྖ஼˭͞۞ĺTestĻ޷ ตീྏߏӎΞͽјΑ۞ాඕ‫ז‬ቑּ InterBase ྤफ़ऱĄ

а ‫ ז‬Windows ܑ ಏ Ă Г ଂ Borland Data Provider ࢱ Ѩ ̚ ΐ ˢ ˘ ࣎ BdpDataAdapter ̮ІĂᕇᏴ໣ဂΠᔣฟୁ BdpDataAdapter ۞ԣពΑਕ ܑĂ֭ͷᏴፄ‫ ۞̚׎‬Configure Data Adapter…ᏴีĈ

6-30

ᑕϡ඀ёฟ൴͘Ί

Delphi 8 for .NET ົពϯ Data adapter Configuration ၆ྖ஼Ăኛд၆ྖ஼ ̚Ᏼፄ TBLSPEAKERS ྤफ़ܑĂତ඾ᕇᏴ၆ྖ஼Πᙝ۞ Optimize ̺Ᏼ஼Ă т˭ٙϯĈ

ତ඾ᕇᏴ BdpDataAdapter ၆ྖ஼۞ DataSet ࢱѨĂᕇᏴ New DataSet Ꮼड ޷ตᏴีĂ֭ͷд͛фበᏭ஼̚ࠎ఺࣎ DataSet ‫פ‬Щࠎ dsSpeakersĂឰ BdpDataAdapter ԯଂ InterBase ྤफ़ֽ໚ֽ۞ྤफ़๱ˢ఺࣎ DataSet ̮І ̚Ĉ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-31

ᕇᏴ BdpDataAdapter ၆ྖ஼̚۞ OK ޷ต̝‫ޢ‬ĂBdpDataAdapter ̮І‫ܮ‬ ົд Windows ܑಏ̚ҋજயϠ dsSpeakers ఺࣎ DataSet ̮ІĂт˭ဦٙϯĈ

౵‫ޢ‬д‫ۏ‬Іᑭෛጡ̚న‫ ؠ‬BdpDataAdapter ۞ Active পّࣃࠎ True ଂ InterBase ̚х‫ פ‬TBLSPEAKERS ྤफ़ܑ̚۞ྤफ़Ą Ԇј˞ Borland Data Provider ඈ̮І۞న‫ޢ̝ؠ‬Ăа‫ ז‬Windows ܑಏĂд Tabcontrol ۞ௐǬ࣎ࢱѨ̚ΐˢт˭۞ GUI ଠ‫ีט‬Ĉ

6-32

ᑕϡ඀ёฟ൴͘Ί

ΐˢ˞ DataGrid ̝‫ޢ‬Ăд‫ۏ‬Іᑭෛጡ̚న‫ؠ‬ι۞ DataSource পّࣃࠎ dsSpeakers ̰̚‫ ۞ؠ‬DataTable1 ఺࣎ DataTableĂ֤ᆃ TBLSPEAKERS ྤ फ़ܑ̚۞ྤफ़ಶົពϯд DataGrid ̚ĄϤ‫ٺ‬னд TBLSPEAKERS ྤफ़ܑ‫إ‬ ϏѣЇң۞ྤफ़ĂЯѩ DataGrid ̚ϫ݈՟ѣЇң۞ྤफ़Ąฟ൴˵Ξͽֹϡ ‫ۏ‬Іᑭෛጡ࣒Լ dsSpeakers ۞ Tables পّࣃֽన‫ ؠ‬dsSpeakers ̚Βӣ۞ DataTable ‫ۏ‬І۞পّĂт˭ဦٙϯĈ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-33

ᗕᑝ Windows ܑಏ̚۞ĺາᆧᓾरĻ޷ตĂдι۞ Click ְІ఍ந‫ב‬ё̚ ᇤᆷт˭۞඀ёቅĈ procedure wfDemoMain.Button1_Click(sender: System.Object; e: System.EventArgs); begin crSpeakerRow := dtSpeakers.NewRow; Self.ActiveControl := tbSpeaker; btnNewSpeaker.Enabled := False; end;

˯ࢬ۞඀ёቅࢵА‫ײ‬Ψ dtSpeakers ۞ NewRow ͞‫ڱ‬д dtSpeakers ఺࣎ DataTable ̚ΐˢ˘ඊາ۞ྤफ़ЕĂ҃ dtSpeakers ߏд Windows ܑಏ۞‫ޙ‬ ၹ‫ב‬ё̚‫ײ‬Ψ InitializeDataTables ͞‫ڱ‬ĂInitializeDataTables ͞‫ڱ‬Гଂ dsSpeakers ఺࣎ DataSet ̮І̚‫פ‬΍۞ DataTable ‫ۏ‬ІĈ constructor wfDemoMain.Create; begin inherited Create; // // Required for Windows Form Designer support

6-34

ᑕϡ඀ёฟ൴͘Ί

// InitializeComponent; // // TODO: Add any constructor code after InitializeComponent call // rn := System.Random.Create; InitializeDataTables; end; procedure wfDemoMain.InitializeDataTables; begin dtSpeakers := dsSpeakers.Tables[0]; end;

dtSpeakers ߏ‫ކ‬Әд Windows ܑಏ۞ᙷҾ̚Ĉ private { Private Declarations } dtSpeakers : DataTable; crSpeakerRow : DataRow; rn : System.Random;

ГᗕᑝĺՀາᓾरྤफ़Ļ޷ตĂдι۞ Click ְІ఍ந‫ב‬ё̚ᇤᆷт˭۞඀ ёቅĈ procedure wfDemoMain.btnSpeakerUpdate_Click(sender: System.Object; e: System.EventArgs); begin try HandleSpeakerData; Self.BdpDataAdapter1.Update(dtSpeakers); btnNewSpeaker.Enabled := True; except on ex : Exception do Self.Text := ex.Message; end; end;

btnSpeakerUpdate_Click ‫ײ‬Ψ HandleSpeakerData ଂֹϡ۰Ꮾˢ۞ྤफ़̚ Հາа TBLSPEAKERS ྤफ़ܑĂ౵‫ײޢ‬Ψ BdpDataAdapter ۞ Update ͞‫ڱ‬ ֭ͷԯࢋՀາ۞ DataTable ‫ۏ‬І dtSpeakers ็ˢઇࠎણᇴĄ HandleSpeakerData ଂ Windows ܑಏ̚۞ GUI ଠ‫ ีט‬TextBox ̚‫ֹ଀פ‬ϡ ۰Ꮾˢ۞ྤफ़֭ͷΐˢ‫ࢬ݈ז‬дĺາᆧᓾरĻ޷ต۞ Click ְІ఍ந‫ב‬ё‫פ‬ ଀ ۞ DataRow ‫ ۏ‬І crSpeakerRow ̝ ̚ Ă ౵ ‫ ޢ‬Г ‫ ײ‬Ψ dtSpeakers ۞.Row.Add ԯ఺ඊາᆧ۞ྤफ़Е‫ۏ‬Іΐˢ‫ ז‬dtSpeakers ̝̚Ą procedure wfDemoMain.HandleSpeakerData;

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-35

begin crSpeakerRow['NAME'] := tbSpeaker.Text; crSpeakerRow['EMAIL'] := tbEMail.Text; crSpeakerRow['PHONE'] := tbPhone.Text; dtSpeakers.Rows.Add(crSpeakerRow); end;

னдበᛌ֭ͷેҖѩቑּᑕϡ඀ёĂྏ඾дቑּᑕϡ඀ё̚Ꮾˢ˘ֱྤफ़֭ ͷᕇᏴĺՀາᓾरྤफ़Ļ޷ตྏ඾ԯྤफ़ΐˢ‫ ז‬TBLSPEAKERS ྤफ़ܑĂҭ ߏ‫ݒ‬൴Ϡ᏾ᄱĂࠎ̦ᆃĉ

ඍ९‫ޝ‬ᖎಏĂЯࠎд˯ࢬ۞඀ёቅ̚՟ѣд SKID ͽ̈́ MDATE ఺‫࣎׌‬᛼Ҝ ̚Ꮾˢྤफ़Ăጱ࡭఺‫࣎׌‬ᅮࢋᇴࣃ۞᛼ҜயϠ᏾ᄱੈिĄTBLSPEAKERS ྤ फ़ ܑ ۞ SKID ᛼ Ҝ ߏ ҋ જ ᆧ ΐ ࣃ ᛼ Ҝ Ă ҃ MDATE ᛼ Ҝ ‫ ੃ ߏ ݋‬ᐂ TBLSPEAKERS ྤफ़ܑ̚Տ˘ඊྤफ़జளજॡ۞ॡมĄ၆‫ ٺ‬SKID ᛼Ҝ҃ ֏Ăᔵ൒дྤफ़ऱ̚ጾѣᛈ൴ጡĂҭߏдϡ͗ბ ADO.NET ̪൒ົᑭߤϡ͗ ბ՟ѣд SKID ఺̙࣎ࠎ NULL ۞᛼ҜᏮˢྤफ़ĂЯѩົயϠ᏾ᄱĄࠎ˞ྋ ՙ఺࣎યᗟĂԧࣇΞͽдϡ͗ბ۞඀ёቅ̚Ад SKID ᛼ҜࣃЇຍᏮˢ˘࣎ ᇴࣃрឰι఼࿅ϡ͗ბ ADO.NET ۞ᑭߤĂඈ‫ྤז‬फ़၁ᅫՀາаྤफ़ऱॡГ Ϥᛈ൴ጡд఺࣎᛼Ҝ̚๱ˢϒቁ۞ᇴࣃĄ

6-36

ᑕϡ඀ёฟ൴͘Ί

҃ MDATE ᛼ҜϤ‫ߏٺ‬ҋજ੃ᐂ੃ᐂజளજ۞ॡมĂЯѩԧࣇΞͽᖣϤᘭඕ DataTable ۞ ְ І ֽ ҋ જ ੃ ᐂ MDATE ᛼ Ҝ ۞ ᇴ ࣃ Ă ˘ ࣎ р г ͞ ಶ ߏ DataTable ۞ Columnchanged ְІĄ֤ᆃࢋтңਕૉᘭඕ DataTable ۞ Columnchanged ְІ‫׸‬ĉ఺ΞͽᖣϤ‫ײ‬Ψ Include ͞‫ڱ‬Ą ࢵА࣒Լ Windows ܑಏ۞‫ޙ‬ၹ‫ב‬ёĂд‫̚׎‬ΐˢ‫ײ‬Ψ InitializeTableEvents ͞‫ڱ‬Ĉ constructor wfDemoMain.Create; begin inherited Create; // // Required for Windows Form Designer support // InitializeComponent; // // TODO: Add any constructor code after InitializeComponent call // rn := System.Random.Create; InitializeDataTables; InitializeTableEvents; end;

д InitializeTableEvents ͞‫ײ̚ڱ‬Ψ IncludeĂInclude ۞ௐ˘࣎ણᇴߏࢋᘭ ඕ۞ְІĂௐ˟࣎ણᇴ‫ߏ݋‬ᑕϡ඀ё̚఍நְІ۞ְІ఍ந‫ב‬ёĄЯѩд˭ ࢬ ۞ ඀ ё ቅ ̚ Include ۞ ௐ ˘ ࣎ ણ ᇴ dtSpeakers.Columnchanged ಶ ߏ DataTable

۞

Columnchanged

ְ

І

Ă



˟







SpeakerColumnchangedHandler ‫ߏ݋‬ൾ‫ޢ‬ᇤᆷ۞ְІ఍ந‫ב‬ёĄ procedure wfDemoMain.InitializeTableEvents; begin Include(dtSpeakers.Columnchanged, SpeakerColumnchangedHandler); end;

а‫ ז‬Windows ۞ᙷҾ‫ކ‬ӘĂд‫ކ̚׎‬Ә SpeakerColumnchangedHandler ͞‫ڱ‬ĂϤ‫ ٺ‬DataTable ۞ Columnchanged ְІ၆‫ְٺ‬І఍ந‫ב‬ё۞ࣧ‫ݭ‬ѣ ᇾ໤۞‫ؠ‬ཌྷĂЯѩ SpeakerColumnchangedHandler ְІ఍ந‫ב‬ёߏᏲ໰ private { Private Declarations } dtSpeakers : DataTable; crSpeakerRow : DataRow; rn : System.Random; procedure HandleSpeakerData;

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-37

procedure InitializeDataTables; procedure InitializeTableEvents; procedure SetSpeakerFakeID; procedure SpeakerColumnchangedHandler(Sender : TObject; e : DataColumnChangeEventArgs);

д procedure wfDemoMain.SpeakerColumnchangedHandler(Sender : TObject; e : DataColumnChangeEventArgs); var dRow : DataRow; begin if (e.Column.ColumnName <> 'MDATE') then begin dRow := e.Row; dRow['MDate'] := DateTime.Now; end; end; procedure wfDemoMain.SetSpeakerFakeID; var IRow : IEnumerator; dRow : DataRow; iCount : Integer; begin iCount := Convert.ToInt16(rn.NextDouble * 10000); IRow := dtSpeakers.Rows.GetEnumerator; While (IRow.MoveNext) do begin dRow := DataRow(IRow.Current); if (dRow.RowState = DataRowState.Added) then begin dRow['SKID'] := iCount; Inc(iCount); end; end; end;

procedure wfDemoMain.btnSpeakerUpdate_Click(sender: System.Object; e: System.EventArgs); begin try HandleSpeakerData; SetSpeakerFakeID; Self.BdpDataAdapter1.Update(dtSpeakers); btnNewSpeaker.Enabled := True; except on ex : Exception do Self.Text := ex.Message; end;

6-38

ᑕϡ඀ёฟ൴͘Ί

end;



т ‫ ֹ ̙ ڍ‬ϡ SetSpeakerFakeID ‫ ב‬ё Ă ֤ ᆃ Ξ ͽ న ‫ ؠ‬AID ᛼ Ҝ ۞ AutoIncrement পّࣃࠎ True ӈΞĄ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-39

procedure wfDemoMain.btnsearch_Click(sender: System.Object; e: System.EventArgs); var sName : String; sSort : String; foundRows : array of DataRow; searchedRow : DataRow; dsSearch : DataTable; iCount : Integer; begin sSort := 'NAME ASCE'; if (tbSName.Text <> '') then begin sName := 'NAME = ' + '''' + tbSName.Text + ''''; foundRows := dtSpeakers.Select(sName, '', DataViewRowState.CurrentRows); if (foundRows <> nil) then begin for iCount := Low(foundRows) to High(foundRows) do begin searchedRow := foundRows[iCount]; Self.TextBox1.Text := searchedRow['EMAIL'].ToString; Self.TextBox2.Text := searchedRow['PHONE'].ToString; Self.TextBox3.Text := Convert.ToString(searchedRow['MDATE']); end; end; end; end;

6-40

ᑕϡ඀ёฟ൴͘Ί



ώቑּΪߏઇࠎᄲ‫̝ځ‬ϡĂд၁ᅫ۞ฟ൴̚ώቑּ۞඀ёቅΞͽѣՀซ˘Վ ۞౵ָ̼۩มĄ

ֹϡ ADO.NET ฟ൴ྤफ़ऱᑕϡ඀ё

6-41

6-42

ᑕϡ඀ёฟ൴͘Ί

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё VCL.NET ኬ̟˞ଋд Microsoft .NET ߛ॰̚೩ֻ Delphi VCL ᑕϡ඀ёග ଋ۞ֹϡ۰ֹϡ۞ਕ˧ĄVCL.NET ߏ VCL ̮І۞‫ؼ‬ҩĂι೩ֻ˞ឰ Delphi ԣిͷट‫۞ٽ‬ฟ൴Аซ۞ᑕϡ඀ёĄனд Delphi 8 for .NET ឰଋТॡֳ ѣ.NET ߛ॰೩ֻ۞ٙѣ‫ֹٺٽ‬ϡ۞̮Іᜭજฟ൴۞р఍ͽ̈́ଋഇ୕ Delphi ೩ֻ۞‫̂ૻ׶‬ฟ൴ਕ˧Ą Delphi 8 for .NET ೩ֻ˞Ч჌̙Т۞ᑕϡ඀ё‫ݭ‬ၗឰଋֹϡĈଋΞͽ‫ޙ‬ϲે Җд.NET ߛ॰̚۞ VCL.NET ܑಏᑕϡ඀ёĂ఺ֱᑕϡ඀ёֹϡ˞ VCL.NET ̮І‫׶‬ଠ‫ีט‬ćଋ˵Ξͽд Delphi 8 for .NET ֹ̚ϡ.NET ߛ॰೩ֻ۞.NET Windows ܑಏᑕϡ඀ёć˵Ξͽֹϡ.NET ߛ॰೩ֻ۞ ASP.NET ଠ‫ֽีט‬ ฟ൴ૻ̂۞ ASP.NET ᑕϡ඀ё˭ࢬ۞͹ᗟ੅ኢ˞тңд Delphi 8 for .NET ̚Ӏϡ VCL.NET ೩ֻ۞ૻ‫ݏ‬ΑਕĄ ώౢ੅ኢ˞˭ࢬ۞͹ᗟĈ

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-1

y

VCL for .NET ໄ៍ ̬௜˞ֹϡ Delphi 8 for .NET ฟ൴ᑕϡ඀ё۞ VCL.NET ߛၹĄ

y

ொങ VCL ᑕϡ඀ё‫ז‬.NET ̚ ೩ֻ˞ொങᑕϡ඀ё۞៍‫ੈྤه‬

y

ொങ Web Service ‫ ז‬Delphi for .NET ੅ኢ˞༊ଋொങ Web Service ϡ͗ბॡଋᑕྍᒢྋ۞યᗟĄ

y

ฟ൴ VCL.NET ᑕϡ඀ё ੅ኢ˞ֹϡ Delphi 8 for .NET ฟ൴ VCL ܑಏᑕϡ඀ё۞υࢋ̍үĄ

VCL.NET ໄ៍ VCL.NET ߏ Delphi 8 for .NET ֹϡֽฟ൴ VCL ̮Іᑕϡ඀ё۞඀ёߛ॰Ą Delphi 8 for .NET ‫ ׶‬VCL.NET ೩ֻ˞ឰֹϡ۰Ӏϡ Delphi ֽฟ൴າ۞ᑕϡ ඀ёͽ̈́ொങனѣ۞ Win32 ᑕϡ඀ё‫ז‬.NET ߛ॰۞ΑਕĄ ఺ֱԫఙ۞ϫ۞̝˘ಶߏ̯ధ Delphi ฟ൴ˠࣶᖣϤ΁ࣇ۞ Delphi ԫਕͽ̈́ ̂ొЊ۞ Delphi ࣧؕ඀ёொങ‫ז‬.NET ̚ĄDelphi 8 for .NET ͚೯˞ֹϡ Delphi ᄬ֏ֽซҖ Microsoft .NET ߛ॰۞ฟ൴̍үĂ֭ͷТॡ͚೯˞ෛᛇ ̼̮І‫ב‬ёऱ(VCL)ͽ̈́ Window ܑಏଠ‫ีט‬ĄDelphi 8 for .NET ˵͚೯ ASP.NETĂWeb ܑಏͽ̈́ SOAP/XML Web Service ᑕϡ඀ё۞ฟ൴̍үĄ VC.NET Βӣ˞ VCL For Win32 ̂ొЊ۞ᙷҾĄϤ‫ٺ‬.NET ߛ॰ਕૉ͚೯Ї ң࠹ट‫ٺ‬.NET ۞඀ёᄬ֏ĂЯѩдధк۞ଐԛ˭ Win32 VCL ᙷҾ۞ࣧؕ඀ ёΪᅮࢋགྷ࿅ᖎಏ۞࣒ԼಶΞͽࢦາበᛌд.NET ̝̚Ąд˘ֱଐԛ̚ࠤҌ Ϊᅮࢋࢦາበᛌ҃൑ᅮЇң۞࣒ԼĄVCL.NET ߏ VCL ۞̂ొЊјࣶ۞̄ะ ЪĂЯѩ VCl.NET ͚೯ధкனѣ۞ VCL ᙷҾĄ൒҃ۡତ‫ײ‬Ψ Win32 API ۞ࣧؕ඀ёᅮࢋ࣒Լ఺ֱ඀ёቅĄѩγт‫ֹڍ‬ϡ˞ௐ 3 ͞ଠ‫ีט‬Ă֤ᆃᅮࢋ ֹϡֹϡ఺ֱௐ 3 ͞ଠ‫۞ีט‬.NET ‫ۍ‬ώĄ

7-2

ᑕϡ඀ёฟ൴͘Ί

ώ̈༼੅ኢ˞˭ࢬ۞͹ᗟĈ y

VCL.NET ߛၹĄ

y

VCL.NET ̮ІĄ

y

Borland.VCL ‫׻‬Щ۩มĄ

y

VCL.NET ᑕϡ඀ё۞̶൴Ą

̦ᆃߏ VCLĉ

VCL ߏෛᛇ̼̮І‫ב‬ёऱ(Visual Component Library)۞ᒺᆷĂιߏ˘௡ෛ ᛇ̼̮ІĂΞͽజ Delphi ᄬ֏ֹϡֽฟ൴ Windows ᑕϡ඀ёĄVCl.NET ߏТ˘௡۞̮І‫ב‬ёऱĂΪߏ VCL.NET ߏેҖд.NET ߛ॰̚۞‫ۍ‬ώĄт݈ ဦٙϯĂVCL.NET ‫׶‬.NET ߛ॰Тॡхд‫ ٺ‬Delphi 8 for .NET ̝̚Ą఺‫࣎׌‬

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-3

ߛ॰ VCL.NET ‫ ׶‬.NET ()Тॡ೩ֻ˞̮І‫׶‬ధк۞Αਕឰଋฟ൴.NET ᑕ ϡ඀ёĄ y

VCL.NET ೩ֻ˞ឰଋฟ൴ VCL ܑಏᑕϡ඀ё۞ΑਕĂVCL ܑಏߏ Delphi ೩ֻ۞ܑಏԫఙĂι‫׶‬.NET ࠹ट֭ͷਕૉд‫ֹ̚׎‬ϡ VCL.NET ̮ІĄ

y

VCL.NET ˵ ೩ ֻ ˞ ‫ ׶‬.NET ࠹ ट ۞ ‫ ܧ‬ෛ ᛇ ̼ ̮ І Ă ఺ ֱ ̮ І ଋ ᖣ Ϥ ADO.NET ‫ ׶‬BDP.NET х‫פ‬Ч჌̙Т۞ྤफ़ऱĄ

y

.NET ೩ֻ˞̮ІΞͽ‫ޙ‬ϲ.NET Windows ܑಏĂWeb ܑಏĂ‫ ׶‬Console ᑕϡ඀ё۞ΑਕĂ఺ֱ̮ІౌΞͽֹϡ Delphi ඀ёቅֽԆјĄ

y

.NET ˵೩ֻ˞̯ధଋᖣϤ ADO.NET ۞ྤफ़х‫̮פ‬Іֽх‫ྤפ‬फ़ऱĄ

ଋΞͽֹϡ VCL.NET ̮Іฟ൴ VCL ܑಏᑕϡ඀ёٕߏֹϡ.NET ̮Іฟ൴ Windows ܑಏᑕϡ඀ёĄଋ˵Ξͽֹϡ VCL.NET ̮Іٕߏ.NET ̮Іֽฟ ൴ ASP.NET Web ܑಏᑕϡ඀ёĄ

VCL.NET ‫ ׶‬.NET ߛ॰̝ม۞ᙯܼ ᒢྋ VCL.NET ‫ ׶‬.NET ߛ॰̝ม۞ᙯܼߏ‫ܧ‬૱ࢦࢋ۞Ą.NET ߛ॰೩ֻ˞ ̮ІĂᙷҾĂ‫غ׶‬ᆸΑਕ۞‫ב‬ёऱ̯ధฟ൴ˠࣶซҖึӀ۞ᑕϡ඀ёฟ൴̍ үĂপҾߏฟ൴ Web ‫ݭ‬ၗ۞ᑕϡ඀ёĄą.NET ߛ॰೩ֻ˞ధк఼ϡ۞ฟ൴ ΑਕĂଂពϯ޷ต‫ז‬ᅈბࢍზΑਕĂ.NET ߛ॰ឰฟ൴ˠࣶ൑ᅮᙯ‫غڦ‬ᆸ۞ ၁ү඀ёᄬ֏ĄVCL.NET ̙֭ߏ.NET ߛ॰۞‫ܢ‬ᛳΑਕĂVCL.NET ೩ֻ˞ ‫׶‬.NET ߛ॰ೀͼ˘ᇹ۞‫ڇ‬ચĄ‫׶‬.NET ߛ॰˘ᇹĂVCL.NET ೩ֻ˞̮ІĂ ᙷҾĂ‫غ׶‬ᆸΑਕ۞‫ב‬ёऱ̯ధฟ൴ˠࣶฟ൴ેҖдϫ݈.NET ߛ॰πέ˯ ۞ Windows ܑಏᑕϡ඀ёĂWeb ܑಏᑕϡ඀ёĂͽ̈́ Console ᑕϡ඀ёĄ VCL.NET Ξͽ‫΃פ‬.NET ߛ॰๜ĉ ඍ ९ Ξ ͽ ᄲ ߏ ߏ Ă ˵ Ξ ͽ ᄲ ̙ ߏ Ą ଋ ̪ ൒ ᅮ ࢋ .NET ે Җ ᒖ ဩ ֽ ֹ ϡ VCL.NETĂҭߏଋΞͽֹϡ VCL,.NET ̮Іֽฟ൴ેҖд.NET πέ˯۞Ԇ ፋᑕϡ඀ёĄ

7-4

ᑕϡ඀ёฟ൴͘Ί

ଋΞͽдԆБֹ̙ϡ VCL.NET ۞ଐԛֹϡ Delphi 8 for .NET ฟ൴ᑕϡ඀ё ๜ĉ ඍ९ߏߏ۞ĂଋΞͽֹϡ Delphi 8 for .NET ඀ёቅֽฟ൴ Windows ܑಏᑕ ϡ඀ёĂWeb ܑಏᑕϡ඀ёĂͽ̈́ Console ᑕϡ඀ёĄ ఺࣎ຍ‫޽ߏޥ‬ଋΞͽֹϡ Delphi 8 for .NET ֹֽϡ.NET ̮Іฟ൴ૻ̂ ۞.NET ᑕϡ඀ёĂٕߏֹϡଂ Delphi VCL ொങֽ۞ VCL.NET ̮Іฟ ൴.NET ᑕϡ඀ёĄт‫ڍ‬ଋѣனѣ۞ Delphi VCL ᑕϡ඀ё҃ଋຐԯ఺ֱᑕϡ ඀ёેҖд Window XP ٕߏ‫͚΁׎‬೯.NET ߛ॰۞πέ˯Ă֤ᆃଋ‫ܮ‬Ξͽᅅ ‫ֹ۞ٽ‬ϡ Delphi 8 for .NET ֽொങ఺ֱᑕϡ඀ёĄ

VCL.NET ̮І ઇࠎ.NET ۞ෛᛇ̼̮І‫ב‬ёऱĂVCL.NET ۞८͕ߏ˘௡̮ІĂΒӣ˞ෛᛇ ̼‫׶‬ෛᛇ̼̮ІĄVCL.NET ̪൒ჯ޺˞ͽෛᛇ̼‫ޙ‬ϲᑕϡ඀ё۞८͕៍‫ه‬Ă ЯѩጐΞਕ۞Νੵ˞ధкᅮࢋֹϡ̍͘ᇤᆷ඀ёቅ۞̍үĄ

ෛᛇ̼̮І Delphi 8 for .NET ೩ֻ˞˘௡ෛᛇ̼̮ІĂٕߏଠ‫ีט‬ĂଋΞͽֹϡ఺ֱ̮ І‫׶‬ଠ‫ֽีט‬ฟ൴̝ଋ۞ᑕϡ඀ёĄੵ˞˘ਠ۞ଠ‫ีט‬Ăּт޷ตĂ͛ф஼Ă Ꮼड޷ตĂ‫̺׶‬Ᏼ஼̝γĂଋ˵ΞͽԱ‫ॾז‬ଠ‫ีט‬ĂଡજЕĂSpinnerĂ͟ፌ ‫ۏ‬ІБΑਕ۞ΑਕܑనࢍछĂͽ̈́Հк۞‫̮΁׎‬ІĄҭߏଋυืۢ྽ VCL.NET ۞Ӕன͞ё‫ߛ۞΁׎׶‬॰̙Т۞Ăּт‫׶‬.NET ߛ॰۞̮І̙ТĄ д Delphi 8 for .NET ۞඀ёቅበᏭጡ̚Ăଋ̙֭ົ࠻‫ז‬ଋֹϡ۞ෛᛇ̼̮І ۞඀ёቅ΃ܑᄬ‫ڱ‬Ąд‫΁׎‬ᄬ֏۞ፋЪ൴णᒖဩ̚Ăּт C#‫ ׶‬JavaĂଋົ ࠻‫̂ז‬ณ΃ܑܑಏͽ̈́‫΁׎‬ෛᛇ̼̮І۞඀ёቅ΃ܑᄬ‫ڱ‬Ą఺ֱ̮І۞඀ё ቅ΃ܑᄬ‫ڱ‬Βӣ˞၁ᅫ۞‫ؠ‬ཌྷྤੈĂּт̂̈Ă੼‫ޘ‬Ă‫۞΁׎׶‬পّࣃĂͽ ̈́఺ֱ̮Іֹϡ۞‫ޙ‬ၹ‫ב‬ё‫׶‬ྋၹ‫ב‬ёĄ Delphi 8 for .NET ߏͽྤ໚ࠎ͕̚۞ր௚‫ݭ‬ၗĂ఺΃ܑ Delphi Ϊົͽଋд ְІ఍ந‫ב‬ё̚ᇤᆷ۞඀ёទᏭઇࠎ̮І۞඀ёቅ΃ܑᄬ‫ڱ‬Ąෛᛇ̼̮Іߏ

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-5

д͛фᑫ९̚‫ކ‬Ә‫ؠ׶‬ཌྷĂ఺ֱ͛фᑫ९ֹϡ˞.dfm ઇࠎ‫ؼ‬ҩᑫЩ(Delphi ۞ܑಏ)Ăٕߏͽ.nfm ઇࠎ‫ؼ‬ҩᑫЩ(Delphi 8 for .NET ۞ܑಏ)Ą༊ଋд၆‫ٺ‬ నࢍछ̚నࢍଋ۞ VCL ܑಏॡĂDelphi 8 for .NET ‫ົܮ‬ҋજࠎଋ‫ޙ‬ϲ.nfm ᑫ९Ă֭ͷົд૞९გநࣶ̚Е‫ྤٺ‬໚ҚЕ̚Ą

‫ܧ‬ෛᛇ̼̮І ଋΞͽֹϡ‫ܧ‬ෛᛇ̼̮Іֽ၁ү̙ᅮࢋͽෛᛇ̼͞ёӔன۞ΑਕĄּтĂଋ Ξͽֹϡෛᛇ̼۞ BDP.NET ̮ІֽซҖྤफ़х‫۞פ‬ΑਕĂ఺ֱ‫ܧ‬ෛᛇ̼̮ І೩ֻ˞ྤफ़ాඕ‫ྤ׶‬फ़х‫۞פ‬ਕ˧Ąᔵ൒఺ֱ̮І՟ѣેҖॡഇ۞ෛᛇ̼ ΑਕĂιࣇдనࢍॡഇ̪൒ߏϤ̍‫׍‬ሹ̚۞̮Іֽ΃ܑĄVCL.NET ೩ֻ˞ Ч჌‫ܧ‬ෛᛇ̼̮І೩ֻྤफ़х‫פ‬ĂҨ‫ڇ‬ბΑਕͽ̈́Հк‫۞΁׎‬ΑਕĄ

ᙷҾ VCL.NET ˵೩ֻ˞̙ߏ̮І۞ᙷҾĄೱήྖᄲĂ఺ֱᙷҾߏଂ TObject ᚶٚ ˭ֽ̙҃ߏଂ TComponent ᚶٚ˭ֽĂ҃ͷ఺ֱ̮І఼૱ߏֹϡֽх‫פ‬ր௚ ‫ۏ‬ІĂּтᑫ९ٕߏϹ‫̍ٽ‬үඈĄ.NET ߛ॰˵೩ֻ˞‫ᙷֱ఺׶‬ҾᙷҬΑਕ ۞ᙷҾĄ ᙷҾĂ̙გߏ̮ІᙷҾٕߏ˘ਠᙷҾĂౌ‫׍‬౯˘ֱᛳّĂ఺ֱᛳّΒӣ˞প ّĂ͞‫ְ̈́ͽڱ‬ІĄੵѩ̝γĂ̂ొЊ۞ᙷҾ̮৵ౌᛳ‫ٺ‬প‫ݭ۞ؠ‬ၗĂּт ᖎಏ۞ྤफ़‫ݭ‬ၗΒӣ˞ፋᇴ‫׶‬фҚĂ҃ኑᗔ۞ྤफ़‫ݭ‬ၗ‫݋‬Βӣ˞প‫ᙷ۞ؠ‬Ҿ ‫ݭ‬ၗĄ఺ֱ̮৵ĂপّĂ͞‫ڱ‬ĂְІĂ‫ݭ׶‬ၗౌ̯ధଋֹϡፋЪ൴णᒖဩ̚ ۞‫ۏ‬Іᑭෛጡͽ‫צ‬ଠ‫͞۞ט‬ё࣒Լଋ۞ᙷҾĄֹϡ఺ֱ̮৵۞͞ёΪߏᖎ̼ ଋซҖᑕϡ඀ёฟ൴̍ү۞͞‫˘̝ڱ‬Ă֭ͷခᐽֹϡෛᛇ̼۞ฟ൴͞ёĄ

VCL ܑಏ Delphi 8 for .NET ඕЪ˞඀ёቅበᏭጡͽ̈́ VCL ܑಏనࢍछĂ఺ᇹ۞ඕЪ ೩ֻ˞ͽ‫ٳ‬Ѣ͞ёనࢍֹϡ۰̬ࢬ۞Αਕ֭ͷ̯ధଋֹϡᖳಱ۞ VCL.NET ଠ‫ܧ̈́ͽีט‬ෛᛇ̼̮ІĂcode-behind ඀ёቅயϠĂፋЪ۞ੵ᏾ጡĂͽ̈́ ૞९ฟ൴ਕ˧ĄVCL.NET ܑಏߏ TObject ۞ࢉϠᙷҾĂ֭ͷΞͽֹϡЇңொ ങ‫ז‬.NET ߛ॰˯۞ VCL.NET ଠ‫ ߏٕีט‬VCL ଠ‫ีט‬Ą

7-6

ᑕϡ඀ёฟ൴͘Ί

Windows ܑಏ Windows ܑ ಏ ͽ ̈́ ι Ξ ֹ ϡ ۞ ̮ І ߏ Ϥ .NET ߛ ॰ ೩ ֻ ۞ Ą Delphi 8 for .NET Β߁˞ፋЪ۞඀ёቅበᏭጡĂWindows ܑಏనࢍछĂឰଋֹϡ.NET ̮Іฟ൴Ԇፋ۞.NET Windows ᑕϡ඀ёĄд Delphi 8 for .NET ̚ Windows ܑಏ‫ۏ‬Іߏ TWinForm ۞ᇹּĂTWinForm ߏଂ TForm ᙷҾᚶٚ˭ֽ֭ͷ ΞͽֹϡЇң.NET ࠹ट۞̮ІĄ

Web ܑಏ Web ܑಏͽ̈́ιΞֹϡ۞̮ІߏϤ.NET ߛ॰೩ֻ۞ĄDelphi 8 for .NET Β ߁˞ፋЪ۞඀ёቅበᏭጡĂWeb ܑಏనࢍछឰଋֹϡ.NET ̮Іฟ൴Ԇፋ ۞.NET ASP.NET ᑕϡ඀ёĄд Delphi 8 for .NET ̚ Web ܑಏ‫ۏ‬Іତ‫צ‬Ї ң.NET ࠹ट۞̮ІĄDelphi 8 for .NET ˵Βӣ˞˘௡Ԇፋ۞ ASP.NET ྤफ़ ຏ̮ۢІ̮ІĄ

ྤफ़ऱ೩ֻ۰ ੵ˞೩ֻ ADO.NET ۞͚೯̝γĂ̂ొЊன̫ VCL ྤफ़ऱх‫פ‬ԫఙ˵ொങ д.NET ̝˯Ă఺˵Βӣ˞ Borland ྤफ़೩ֻ۰ĄଋΞͽֹϡ‫׶‬.NET ࠹ट۞ ྤफ़ԫఙĂּт dbExpress.NET, BDE.NET, DataSnap Client for .NET, ͽ ̈́ IBX.NETĄ఺ֱԫఙౌ೩ֻ˞˘௡‫ܧ‬ෛᛇ̼۞̮ІĂ˵Ξͽۡତֹϡ඀ё ቅֽ‫ޙ‬ϲ‫ֹ׶‬ϡ఺ֱ̮ІĄ

Object Pascal Delphi 8 for .NET ٙ̚ѣᖣϤ code-behind ΑਕயϠ۞඀ёቅౌߏ Object PascalĂனд Object Pascal д.NET ̚ԼЩࠎ DelphiĄ༊ଋֹϡ Delphi 8 for .NET ॡົ࠻‫ז‬඀ёቅᑫ९జயϠĂ఺ֱயϠ۞ᑫ९ົጾѣ.pas ۞‫ؼ‬ҩᑫ ЩĂ.pas ΃ܑ۞ӈߏ Pascal ᑫ९Ą

Borland.VCL ‫׻‬Щ۩ม VCL.NET ᙷҾΞͽд Borland.Vcl ‫׻‬Щ۩ม̚Ա‫ז‬Ą‫ྤ׶‬फ़ऱ࠹ᙯ۞ᙷҾ‫݋‬ х д ‫ ٺ‬Borland.Vcl.DB ‫ ׻‬Щ ۩ ม ̚ Ą Ҍ ‫ ે ٺ‬Җ ॡ ഇ ‫ ב‬ё ऱ ᙷ Ҿ ‫ ߏ ݋‬д Borland.Vcl.Rtl ‫׻‬Щ۩ม̚Ą

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-7

т‫ڍ‬ଋߏА݈ Delphi ‫ۍ‬ώ۞ֹϡ۰ĂଋΞਕົ൴னଋሢଉ۞඀ёಏ̮ᑫ९ன дౌᕩৼд Borland.Vcl ‫׻‬Щ۩ม̚Ąдߙֱଐԛ̚Ă඀ёಏ̮˵Ξਕொજ ҜཉĂҭߏ Delphi ̏གྷጐณԯ඀ёಏ̮ᕩৼдѣຍཌྷ۞‫׻‬Щ۩ม̚Ă఺Ξͽ ᑒӄଋԣిԱ‫ז‬ଋຐֹϡ۞ΑਕĄ ٙ ѣ Delphi 8 for .NET ‫ ۏ‬І ۞ ࣧ ؕ ඀ ё ౌ х д ‫ ٺ‬c:\Program Files\Borland\BDS\2.0\Source ̄ϫᐂ̝˭Ą

ொങ Delphi ᑕϡ඀ё‫ ז‬Delphi 8 for .NET т‫ڍ‬ଋጾѣֹϡА݈ Delphi ‫ۍ‬ώᇤᆷ۞ᑕϡ඀ёĂଋΞਕԓ୕ԯιࣇொങ ‫ז‬.NET ̚Ąд̂ొЊ۞ଐԛ˭Ă఺ͧࢦາд.NET ˭ᇤᆷ఺ֱᑕϡ඀ёֽ଀ ट‫ٽ‬ĄϤ‫ ٺ‬Delphi 8 for .NET ·̶Ӏϡ˞.NET ߛ॰۞ߛၹ̮৵ĂଋΞਕᅮ ࢋซҖ˘ֱˠ̍۞ொങ̍үͽ‫ܮ‬ឰଋ۞ᑕϡ඀ёд.NET ̚ેҖĄּтĂ.NET ߛ॰дщБ඀ёቅ(safe code)̙͚̚೯޽ᇾĄЯѩĂЇң PChar ۞ֹϡٕߏ ޽ᇾតᇴౌᅮࢋซҖዋ༊۞.NET ‫ݭ‬ၗ۞ᖼೱĄధк Delphi ‫ۏ‬Іౌ̏གྷజՀ າ֭ͷᏲ໰఺ֱ‫ݭ‬ၗ۞ࢨ‫ט‬Ăҭߏଋ۞඀ёቅΞਕົΒӣણ҂‫޽ז‬ᇾٕߏϏ ͚೯۞‫ݭ‬ၗĄࢋۢ྽Հк۞ྤੈĂኛણ҂඀ёᄬ֏޽͔ͽ̈́ᅃӄր௚̚ѣᙯ ொങᑕϡ඀ё۞ྤੈĄ

д VCL.NET ᑕϡ඀ё̚๗ˢ.NET ̮І Delphi 8 for .NET ೩ֻ˞.NET ๗ˢჟីĂ఺Ξͽᑒӄଋ๗ˢ.NET ଠ‫זีט‬ VCL.NET ඀ ё ಏ ̮ ‫ ׶‬package ̚ Ą ּ т ଋ Ξ ͽ ‫ ދ‬྅ ٙ ѣ х д ‫ٺ‬ System.Windows.Forms assembly ̚۞.NET ̮Іࠎ ActiveX ‫ދ‬྅‫ۏ‬ІГ̶ ൴‫ ז‬VCL.NET ᑕϡ඀ё̝̚Ą˘όଋ๗ˢ˞ଋᏴፄ۞.NET ̮ІĂଋ‫ܮ‬Ξͽ ̶൴ΒӣՏ˘̮࣎І඀ёಏ̮۞ package ᑫ९‫׍̍ז‬ሹ̚Ąт‫ڍ‬υࢋ۞ྖĂ ଋ˵Ξͽᑭෛ‫࣒׶‬Լ࣎Ҿ۞඀ёಏ̮ᑫ९Ą఺ֱᑫ९дଋᇤᆷ‫މ‬ᄦ̼̮Іॡ Ξͽઇࠎ‫ܧ‬૱ѣϡ۞ણ҂͛ІĄ

7-8

ᑕϡ඀ёฟ൴͘Ί

ᇤᆷ VCL.NET ᑕϡ඀ё ώ̈༼૟णϯтңֹϡ VCL.NET ฟ൴.NET ᑕϡ඀ёĂੵ˞৷ო۞ VCL.NET ᑕϡ඀ё̝γĂώ̈༼˵૟णϯ஄Ъ VCL.NET ͽ̈́.NET ߛ॰۞ቑּĄ

ֹϡ dbExpress ฟ൴ྤफ़ऱᑕϡ඀ё ௐ˘࣎ VCL.NET ቑּᑕϡ඀ёߏֹϡ dbExpress х‫ פ‬MS SQL Server ۞ྤ फ़ऱᑕϡ඀ёĄdbExpress ଂ Delphi 6 ฟؕ̏གྷјࠎ Borland າ˘΃ྤफ़х ‫͔פ‬ᑜĄд Delphi 8 ̚ Borland ̏གྷԯ dbExpress ொങ‫ז‬.NET ̚Ąֹϡ dbExpress ۞р఍ߏ dbExpress Ξͽх‫פ‬Հк۞ྤफ़ֽ໚Ă҃ͷਕૉેҖ д.NETĂWin32 ͽ̈́ Linux πέĄ ࢋ‫ޙ‬ϲ dbExpress ᑕϡ඀ёĂኛд Delphi 8 for .NET ፋЪ൴णᒖဩ̚ᕇᏴ File|New|Other…ΑਕܑĂ֭ͷᕇᏴ Delphi for .NET Projects ༼ᕇ̚۞ VCL Forms Application ဦညͽ‫ޙ‬ϲ VCL.NET ᑕϡ඀ёĂт˭ဦٙϯĈ

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-9

ᕇᏴ˞ OK ޷ต̝‫ޢ‬ፋЪ൴णᒖဩົҋજ‫ޙ‬ϲ VCL.NET ૞९â࣎۩Ϩ۞ VCL.NET ܑಏĂͽ̈́ૄᖂ۞८͕඀ёቅĄ˭ဦពϯ˞ፋЪ൴णᒖဩ‫ޙ‬ϲ۞ ۩Ϩ VCL.NET ܑಏĂଂγ៍˯ֽ࠻ VCL.NET ܑಏ‫׶‬.NET ߛ॰۞ Windows ܑಏೀͼߏ˘ሀ˘ᇹ۞ĂΪߏ‫׌‬჌ܑಏֹϡ̙Т۞ߛ॰Ą

ࢵ А ԧ ࣇ υ ื ‫ ޙ‬ϲ VCL.NET ቑ ּ ᑕ ϡ ඀ ё ‫ ྤ ׶‬फ़ ֽ ໚ ۞ ా ඕ Ą ࢵ А д VCL.NET ܑಏ̚ΐˢҜ‫׍̍ٺ‬ሹ̚ dbExpress ࢱѨ̚۞ TSQLConnection ̮ІĂTSQLQuery ̮ІĄᕇᏴ TSQLConnection ̮ІĂᕇᏴ໣ဂΠᔣĂᏴ ፄ Edit Connection Properties Ᏼีͽୁજ dbExpress Connections ၆ྖ஼Ą ତ඾д dbExpress Connections ၆ྖ஼̚ᕇᏴ˯͞۞ĺ+Ļ޷ตࠎቑּᑕϡ඀ ё ΐ ˢ ˘ ࣎ າ ۞ MS SQL Server ా ඕ Ă ֭ ͷ ࠎ ఺ ࣎ ా ඕ ‫ פ‬Щ ࠎ DemoMSDBĂт˭ဦٙϯĈ

7-10

ᑕϡ඀ёฟ൴͘Ί

న‫ ؠ‬MSDemoDB ۞ HostnameĂDatabaseĂUser_NameĂͽ̈́ Password ඈপّࣃͽϒቁాඕ‫ ז‬MS SQL Server(᝝۰т‫ֹڍ‬ϡ‫۞΁׎‬ᙯాྤफ़ऱ۞ ྖĂኛన‫ؠ‬ϒቁ۞ྤफ़ऱాඕপّࣃ)Ĉ

а‫ ז‬VCL.NET ܑಏన‫ؠ‬т˭۞̮ІপّࣃĈ ConnectionNameপّࣃ

TSQLConnection̮І DemoMSDB

Nameপّࣃ

SQLConnection1

SQLপّࣃ

TSQLQuery̮І select * from tblD8Chapters

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-11

Nameপّࣃ

TSQLQuery̮І SQLQuery1

ତ඾ΐˢ Data Access ࢱѨ̚۞ TClientDataSetĂTDataSetProviderĂͽ̈́ TDataSource ̮І֭ͷన‫ؠ‬ιࣇ۞পّࣃт˭Ĉ DataSetপّࣃ

TDataSetProvider̮І SQLQuery1

Nameপّࣃ

DataSetProvider1

ProviderNameপّࣃ

TClientDataSet̮І DataSetProvider1

Nameপّࣃ

ClientDataSet1

Activeপّࣃ

True

DataSetপّࣃ

TDataSource̮І ClientDataSet1

Nameপّࣃ

DataSource1

న‫ ˞ؠ‬TClientDataSet ۞ Active পّࣃࠎ True ̝‫ޢ‬ĂdbExpress ̏གྷాඕ ‫ ז‬MS SQL Server ֭ͷх‫ ˞פ‬tblD8Chapters ྤफ़ܑ̚۞ྤफ़˞Ą ౵‫ޢ‬ΐˢ˘ֱ VCL.NET ྤफ़ຏ̮ۢІֽాඕ dbExpress ྤफ़х‫̮פ‬ІĂ఺ Βӣ˞ TDBNavigatorĂTDBGridĂTButtonĂͽ̈́ TStatusBar ̮ІĄГన ‫ ؠ‬TDBNavigatorĂTDBGrid ۞ DataSource পّࣃࠎ DataSource1Ąѩॡ VCL.NET ܑಏт˭ٙϯĈ

7-12

ᑕϡ඀ёฟ൴͘Ί

౵‫ࠎޢ‬ĺApplyupdatesĻ޷ตᇤᆷ Button1Click ְІ఍ந‫ב‬ёĈ procedure TForm1.Button1Click(Sender: TObject); begin ClientDataSet1.ApplyUpdates(0); ShowRecordStatus; end; procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet); begin ShowRecordStatus; end; procedure TForm1.ShowRecordStatus; begin StatusBar1.Panels[0].Text := '̏ளજ۞ྤफ़ඊᇴ : ' + IntToStr(ClientDataSet1.ChangeCount); end;

Button1Click ְІ఍ந‫ב‬ё‫ײ‬Ψ˞ TClientDataSet ۞ ApplyUpdates1 ͞‫ڱ‬ ԯϡ͗ბֹϡ۰၆‫ྤٺ‬फ़۞ளજՀາаྤफ़ֽ໚̚Ą

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-13

னдበᛌ֭ͷેҖѩቑּ dbExpress ᑕϡ඀ёĂ֭ͷд TDBGrid ̚Ꮾˢ˘ ֱྤफ़Ă౵‫ޢ‬ᕇᏴĺApplyupdatesĻ޷ตԯྤफ़Հາа MS SQL Server ̝ ̚Ą

ฟ൴ˠࣶΞͽдፋЪ൴णᒖဩ̚ᖣϤ Modules ෛ඄ֽᑭߤ dbExpress ᑕϡ඀ ёֹϡ۞ AssembliesĂฟ൴ˠࣶΞͽдፋЪ൴णᒖဩેҖቑּ dbExpress ᑕϡ඀ё‫ޢ‬ĂᕇᏴ View|Debug Windows|Modules ୁજ Modules ෛ඄Ă д Modules ෛ඄̚ಶົពϯѩᑕϡ඀ёֹϡ۞ٙѣ AssembliesĄ఺ֱྤੈ дੵ᏾‫̶׶‬൴ᑕϡ඀ёॡপҾѣϡĄ

7-14

ᑕϡ඀ёฟ൴͘Ί

Delphi 8 for .NET ۞ VCL.NET ߛ॰ͽ̈́ dbExpress ඈԫఙౌߏ.NET ۞ԫ ఙĂ఺ΞͽᖣϤ.NET ߛ॰೩ֻ۞̍‫ֽ׍‬ᑭߤĄ ˭ဦߏֹϡ.NET ߛ॰̚۞ ILDASM.EXE ̳ϡ඀ёྶˢቑּ dbExpress ᑕϡ ඀ё۞ඕ‫ڍ‬Ăଂ˭ဦ̚Ξͽ࠻‫ ז‬Delphi 8 for .NET யϠ۞ dbExpress ᑕϡ඀ ё۞ቁߏᇾ໤۞.NET ᑕϡ඀ёĄ(᝝۰Ξͽд.NET ߛ॰۞ SDK ϫᐂ˭Ա‫ז‬ ILDASM.EXEĂ఼૱ιߏд\Program files\Microsoft.NET\SDK\v1.1\bin ϫ ᐂ˭)Ą

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-15

ֹϡ.NET ߛ॰‫ ׶‬VCL.NET ௐ 2 ࣎ VCL.NET ᑕϡ඀ёቑּߏ஄Ъ˞ VCL.NET ߛ॰ͽ̈́.NET ߛ॰۞ᑕ ϡĂ఺࣎ቑּ˵णϯ˞ VCL.NET ߛ॰‫׶‬.NET ߛ॰ߏΞͽϹֹ̢ϡ۞ĄϤ‫ٺ‬ VCL.NET ߛ॰˵ߏֹϡᇾ໤۞ Delphi ඀ёᄬ֏ࢦາฟ൴۞ĂЯѩ VCL.NET ߛ॰௑Ъ.NET CLR ෍ᑢેҖᒖဩ۞ࢋՐĄ ώቑּ૟ֹϡ VCL.NET ೩ֻ۞ેҖᒖဩ‫ב‬ёऱֽຩವᑫ९ྤੈĂ֭ͷពϯ д VCL.NET ܑಏ̚۞ VCL.NET ଠ‫̚ีט‬Ą౵‫ޢ‬ώቑּᑕϡ඀ёົֹϡ.NET ߛ॰̚۞ XML ᙷҾԯຩವ۞ᑫ९ྤੈᏮ΍ࠎ XML ̰टĂ౵‫ޢ‬ГϤ VCL.NET ଠ‫ีט‬ពϯ౵‫ ۞ޢ‬XML ඕ‫̰ڍ‬टĄ Тᇹ۞дፋЪ൴णᒖဩ̚‫ޙ‬ϲ˘࣎ VCL ܑಏᑕϡ඀ёĂ֭ͷд VCL.NET ܑ ಏ̚ΐˢ TPageControlĂTStringGridĂTMemoĂTEditĂͽ̈́ TButton ̮ ІĂ఺ֱౌߏᇾ໤۞ VCL.NET ̮ІĂѩॡቑּ VCL.NET ܑಏт˭ٙϯĈ

7-16

ᑕϡ඀ёฟ൴͘Ί

ତ඾д VCL.NET ܑಏ̚ĺShow DirectoryĻ޷ต۞ OnClick ְІ఍ந‫ב‬ё ̚ᇤᆷт˭۞඀ёቅĈ procedure TForm1.Button1Click(Sender: TObject); begin if (CheckforPath) then begin DoShowDirectory; end; end;

Button1Click А‫ײ‬Ψ CheckforPath ᑭߤֹϡ۰ߏӎѣд TEdit ̚ᏮˢЇң ۞ྮशфҚĂт‫ڍ‬ѣ۞ྖಶ‫ײ‬Ψ DoShowDirectory ͞‫ڱ‬ពϯֹϡ۰Ꮾˢ۞ྮ श̝˭ٙѣᑫ९۞ྤੈĄ function TForm1.CheckforPath: boolean; begin Result := True; if (Length(Trim(Edit1.Text)) = 0) then Result := False; end;

DoShowDirectory ͞‫ֹڱ‬ϡ˞ VCL.NET ೩ֻ۞ેҖॡഇ‫ב‬ёᐡĂ఺ֱ‫ב‬ё ᐡ۞͞‫ౌ˵ڱ‬Ξͽд Win32 ˭ેҖĄ procedure TForm1.DoShowDirectory; var sr: TSearchRec;

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-17

FileAttrs: Integer; begin FileAttrs := faArchive + faDirectory + faAnyFile; with StringGrid1 do begin RowCount := 0; if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then begin repeat if (sr.Attr and FileAttrs) = sr.Attr then begin RowCount := RowCount + 1; Cells[1,RowCount-1] := sr.Name; Cells[2,RowCount-1] := IntToStr(sr.Size); Cells[3,RowCount-1] := DateTimeToStr(FileDateToDateTime(sr.Time)); end; until FindNext(sr) <> 0; FindClose(sr); end; end; end; procedure TForm1.DoShowTitle; begin StringGrid1.Cells[1, 0] := 'ᑫЩ'; StringGrid1.Cells[2, 0] := '̂̈'; StringGrid1.Cells[3, 0] := '͟ഇ'; end; procedure TForm1.FormActivate(Sender: TObject); begin DoShowTitle; end;

በᛌቑּ VCL.NET ᑕϡ඀ё֭ͷેҖιĂᏮˢЇңЪ‫ྮ۞ڱ‬श֭ͷᕇᏴ ĺShow DirectoryĻ޷ตಶΞͽ࠻‫ᙷז‬Ҭт˭۞൪ࢬĄᇾ໤۞ VCL.NET ̮І ͽ̈́ Delphi ۞ેҖॡഇ‫ב‬ёᐡౌΞͽ.NET ̚ેҖĄ

7-18

ᑕϡ඀ёฟ൴͘Ί

னда‫ז‬ፋЪ൴णᒖဩ̚ĂᕇᏴ TPageControl ۞ௐ 2 ࣎ࢱѨĂд‫̚׎‬ΐˢ TMemo ̮ІĈ

VCL.NET ۞ TMemo ̮І

ତ඾д VCL.NET ܑಏ̚Гΐˢ˘࣎ TButton ̮ІĂдι۞ OnClick ְІ఍ ந‫ב‬ё̚ᇤᆷт˭۞඀ёቅĈ procedure TForm1.Button2Click(Sender: TObject); var xmlwr : XmlTextWriter; iCount : Integer; fn : String; begin

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-19

fn := 'Text.XML'; xmlwr := XmlTextWriter.Create(fn, Encoding.UTF8); xmlwr.Formatting := formatting.Indented; xmlwr.WriteStartDocument; xmlwr.WriteStartElement('Chapters'); for iCount := 1 to StringGrid1.RowCount - 1 do begin xmlwr.WriteStartElement('Chapter'); xmlwr.WriteAttributeString('Name', StringGrid1.Cells[1, iCount]); xmlwr.WriteAttributeString('Size', StringGrid1.Cells[2, iCount]); xmlwr.WriteAttributeString('Time', StringGrid1.Cells[3, iCount]); xmlwr.WriteEndElement; end; xmlwr.WriteEndDocument; xmlwr.Close; Memo1.Lines.LoadFromFile(fn); end;

Button2Click ͞‫ֹڱ‬ϡ˞.NET ߛ॰̚ System.XML ‫׻‬Щ۩ม̚۞ᙷҾĂ֭ ͷۡତԯ݈ࢬពϯд TDBGrid ̮І̚۞ྤफ़ᖣϤ XmlTextWriter ‫ۏ‬Іᆷˢ ‫ ࣎ ˘ ז‬ᑫ ९ ̝ ̚ Ă ౵ ‫ ޢ‬Г ᖣ Ϥ VCl.NET ۞ TMemo ̮ І ྶ ˢ Ϥ XmlTextWriter ‫ۏ‬ІயϠ۞ XML ᑫ९̰ट֭ͷពϯд TMemo ̝̚Ą በᛌ֭ͷેҖ࣒Լ࿅۞ VCL.NET ᑕϡ඀ёĂಶΞͽ࠻‫ᙷז‬Ҭ˭ࢬ۞ેҖඕ ‫ڍ‬Ĉ

7-20

ᑕϡ඀ёฟ൴͘Ί

఺࣎ VCL.NET ቑּᑕϡ඀ёणϯ˞ VCL.NET ߛ॰‫׶‬.NET ߛ॰ౌߏ.NET ેҖᒖဩ˭۞ First-Class ߛ॰Ăኛણ҂ώౢ݈ࢬ۞ᄲ‫ځ‬ౢ༼ͽ‫ܮ‬ᒢྋтңᏴ ፄֹϡ VCL.NET ߛ॰ٕߏ.NET ߛ॰Ą

ֹϡ VCL.NET ฟ൴ VCL ᑕϡ඀ё

7-21

7-22

ᑕϡ඀ёฟ൴͘Ί

ֹϡ Unmanaged ඀ёቅ ฟ൴ᑕϡ඀ё Borland ۞ Delphi 8 for .NET ೩ֻ˞ֹϡ.NET Αਕֽ͚೯ unmanaged ඀ё ቅ۞ਕ˧Ąт‫ڍ‬ଋԓ୕д.NET ߛ॰ֹ̚ϡ COM ٕߏ ActiveX ̮ІĂଋΞͽ д Delphi 8 for .NET ֹ̚ϡ.NET COM Interop ਕ˧ֽฟ൴ଋ۞ᑕϡ඀ёĄ дώౢ̚૟੅ኢ˭ࢬ۞͹ᗟĈ y

д Managed ᑕϡ඀ёֹ̚ϡ COM Interop ੅ኢ COM Interop ԫఙ‫ه៍۞׍̍׶‬ᖎ̬

y

ᖣϤ Delphi for .NET ֹϡ Platform Invoke ‫ڇ‬ચ ੅ኢтңд Delphi 8 for .NET ֹ̚ϡ Platform Invoke ‫ڇ‬ચ

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-1

д Managed ᑕϡ඀ёֹ̚ϡ COM Interop COM Interop ߏ.NET ೩ֻ۞‫ڇ‬ચĂι̯ధ managed ‫ ׶‬unmanaged ඀ёቅ ൑ᓀ۞ፋЪд˘੓ĄCOM Interop ߏᗕШ۞፜ሇԫఙĈι̯ధଋд.NET ᑕ ϡ඀ё̚Ӏϡனѣ۞ COM Ҩ‫ڇ‬ጡ‫ ׶‬ActiveX ଠ‫ีט‬Ă˵̯ధଋԯ.NET ̮І Ꮾ΍ග็௚Ăunmanaged ᑕϡ඀ёĄ Delphi 8 for .NET ۞ፋЪ൴णᒖဩΑਕΞͽᑒӄଋд managed ᑕϡ඀ё̚ ፋЪ็௚۞ COM Ҩ‫ڇ‬ጡ‫ ׶‬ActiveX ଠ‫ีט‬ĄдፋЪ൴णᒖဩ̚ĂଋΞͽд ૞९̚ΐˢણ҂‫ ז‬unmanaged DLLs ᑫ९Ă൒‫ޢ‬ଋಶΞͽᕱᜓ‫̚׎‬Βӣ۞‫ݭ‬ ၗྤੈĂಶညଋΞͽдፋЪ൴णᒖဩ̚გந managed assemblies ˘ᇹĄଋ Ξͽд̍‫׍‬ሹ̚ΐˢ ActiveX ଠ‫ีט‬Ă൒‫ޢ‬дܑಏ̚‫ٳ‬ѢĂֹϡ఺ֱ ActiveX ଠ‫ีט‬Ăಶညଋֹϡ.NET ̮І˘ᇹĄ ˭ࢬ۞͹ᗟ૟дώ̈༼̚੅ኢĈ y

ᖎ̬ COM Interop ԫఙĄт‫ڍ‬ଋ̏གྷᒢྋ఺ֱ៍‫ه‬ĂଋΞͽۡତྯ࿅఺ ˘̈༼֭ͷ‫ ז‬Delphi 8 for .NET ፋЪ൴णᒖဩ͚̚೯ COM/Interop ۞ Αਕ‫׍̍׶‬Ą

y

ᖎ̬.NET ߛ॰̚Ξͽֹϡ۞ COM/Interop SDK ̍‫׍‬Ą

y

дፋЪ൴णᒖဩֹ̚ϡ COM Interop AssembliesĄ

COM Interop ໄኢ

8-2

ᑕϡ඀ёฟ൴͘Ί

д managed ‫ ׶‬unmanaged ඀ ё ቅ ̚ ೩ ֻ ൑ ᓀ ፋ Ъ ਕ ˧ ۞ ߏ ˘ ࣎ Ⴭ ࠎ Runtime Callable Wrappers (RCW)۞‫ۏ‬ІĄRCW ߏଋ۞ managed ᑕϡ඀ ёͽ̈́၁ᅫ۞ unmanaged COM Ҩ‫ڇ‬ጡ̝ม۞໛఼ᆸĄ

COM Interop ԫఙ .NET ߛ॰ጾѣᖳಱ۞૞ѣЩෟͽ̈́ 3 ࣎фϓ௡ј۞ᒺᆷфĄώ̈༼૟ᑒӄ ଋᒢྋ༊ଋдዦ᝝ COM Interop ͛Іॡົ࿃‫۞ז‬૞ѣЩෟĄ

Metadata д.NET ‫ ׶‬COM ۞ᅳા̚Ămetadata ߏֹϡֽ΃ܑ‫ݭ‬ၗྤੈ۞૞ѣЩෟĄ д COM ̚Ă‫ݭ‬ၗྤੈΞͽֹϡЧ჌̙Т۞͞ёᐼхĄּтĂC++۞ܑᐝᑫ ९ߏ‫׶‬প‫ؠ‬ᄬ֏࠹ᙯ۞‫ݭ‬ၗྤੈĄ‫ݭ‬ၗ‫ב‬ёऱ(Type Library)˵ߏΒӣ‫ݭ‬ၗྤ ੈ۞टጡ‫ۏ‬ІĂ̙࿅ιߏͽ˟ซҜ۞ॾёᐼх‫ݭ‬ၗྤੈĂ‫ݭ‬ၗ‫ב‬ёऱߏᄬ֏ ̚ϲ۞Ą‫ ׶‬COM ฟ൴ሀ‫˘̙ݭ‬ᇹ۞ߏĂCOM ۞‫ݭ‬ၗ‫ב‬ёऱ̙ߏυࢋ۞Ă ҭߏ၆‫ٺ‬.NET assemblies ֽᄲᄬ֏̚ϲ۞ metadata ‫ߏݒ‬υࢋ۞ĄՏ˘࣎ assembly ౌጾѣ֖ૉ۞‫ݭ‬ၗྤੈֽୃࢗιҋ̎۞পّĂι۞ metadata Βӣ ˞Ԇፋ۞‫ݭ‬ၗྤੈĂ‫̚׎‬Βӣ˞ռѣ‫ݭ‬ၗͽ̈́ռѣᙷҾјࣶĄ

‫މ‬ᄦ̼ᛳّ(Custom Attributes) ฟ൴ˠ఼ࣶ૱ົͽୃّࢗ۞ᇾចֽᇾො඀ё၁វ(ּтᙷҾ‫׶‬ιࣇ۞͞‫)ڱ‬Ă ּт staticĂprivateĂprotectedĂͽ̈́ publicĄд.NET ߛ॰̚ĂଋΞͽֹ ϡଋҋ̎నࢍ۞ᛳֽّᇾොЇң۞၁វĂ఺Β߁˞ᙷҾĂপّĂ͞‫ڱ‬ĂࠤҌ ߏ assemblies ώ֗Ą‫މ‬ᄦ̼ᛳّߏֹϡдࣧؕ඀ёቅ̚Ă֭ͷົϤበᛌጡ఍ ந Ą д በ ᛌ ߹ ඀ ඕ Ձ ॡ Ă ‫ މ‬ᄦ ̼ ᛳ ّ ົ ည ٙ ѣ ۞ metadata ˘ ᇹ ய Ϡ д assembly ̚Ą

Reflection .NET ߛ॰۞পّ̝˘ಶߏ‫ݭ‬ၗྤੈ̙֭ົдበᛌ߹඀̚ঐεĄ࠹ͅ۞Ăٙ ѣ ۞ metadata Ă Β ߁ ˞ ‫ މ‬ᄦ ̼ ᛳ ّ Ă ˵ ົ జ በ ᛌ ጡ ய Ϡ д ౵ ‫ ޢ‬Ꮾ ΍ ۞ assembly ̚ĄMetadata ΞͽᖣϤ.NET ۞ Reflection ‫ڇ‬ચдેҖॡഇх

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-3

‫פ‬Ą.NET ߛ॰ SDK ೩ֻ˞˘࣎Ⴭࠎ ildasm ۞ reflection ̍‫̯׍‬ధฟ൴ˠࣶ ฟୁЇң۞.NET assemblyĂ֭ͷᑭߤ‫ކ‬Әд‫ݭ۞̚׎‬ၗྤੈĄ఺჌ reflection ̍ ‫ ఼ ׍‬૱ ̯ ధ ฟ ൴ ˠ ࣶ ۡ ତ ᑭ ෛ Ϥ በ ᛌ ጡ ய Ϡ ۞ IL ඀ ё ቅ Ą Delphi 8 for .NET ፋЪ൴णᒖဩΒӣ˞ιҋѣ۞ፋЪ reflection ̍‫׍‬Ă༊ଋдፋЪ൴ णᒖဩ̚ฟୁ.NET Assembly ॡĂፋЪ۞ reflection ̍‫ ͽົܮ׍‬meta data explorer ̍‫۞׍‬ԛјдፋЪ൴णᒖဩ̚Ӕன Assembly ۞ MetadataĄ

Global Assembly Cache д COM ԫఙ̚Ă̮ІΞͽ̶൴‫ֹז‬ϡ۰፟ጡ۞Їңг͞Ą఼૱̮І۞щ྅ ቇώົ੃ᐂ COM ̮І۞щ྅Ҝཉྤੈ‫ٺ‬ր௚ොΊጡ(system registry)̚Ą‫׻‬ ΄Е̍‫׍‬Ăּт regsvr32 ‫ ׶‬tregsvrĂ˵Ξͽଂր௚ොΊጡ̚щ྅ٕߏொੵ COM ̮ІĄࠎ COM ̮ІොΊд COM ۞඀ёనࢍԫఙ̚ߏυࢋ۞̍үĂӈ ֹ̮І̙ົజк࣎ᑕϡ඀ёֹϡ˵ᅮࢋොΊĄ .NET ۞඀ёనࢍሀ‫۞಼̂ݭ‬ᖎ̼˞ᑕϡ඀ё‫̮׶‬І۞̶൴̍үĄд.NET π έ̚Ă‫ܧ‬Вֳ۞̮ІΪᅮࢋۡତ̶൴‫ז‬ᑕϡ඀ё۞ώгщ྅ϫᐂ̚ӈΞĂ̙ ᅮࢋොΊ̮ІĄѩγĂ‫ܧ‬Вֳ۞̮І˵Ξͽ̶൴‫ז‬প‫۞ؠ‬ϫᐂ̚ĂΪᅮࢋ఺ ࣎প‫۞ؠ‬ϫᐂ੃ᐂдᑕϡ඀ё۞௡ၗᑫ९̚ӈΞĄТᇹ۞Ăд఺჌̶൴ሀё ̚˵̙ᅮࢋොΊ̮ІĄВֳ۞̮Іυืщ྅д˘࣎Ⴭࠎ Global Assembly Cache (GAC)۞প‫ؠ‬ϫᐂ̚ĄGAC ߏր௚ොΊጡ۞ႊ̼(ᔵ൒ GAC ߏԆБ፾ ϲ۞፟‫֭ט‬ͷ‫׶‬ր௚ොΊጡ՟ѣЇң۞ᙯܼ)ĄGAC ߏҜ‫ٺ‬ᑫ९ր௚̚Ⴭࠎ \Windows\Assembly ۞ϫᐂ˭Ą.NET ߛ॰೩ֻ˞̯ధТॡ̶൴࠹Т̮І ̙Т‫ۍ‬ώ۞ਕ˧Ă༊ଋֹϡ Windows Explorer ᑭෛ Global Assembly Cache ϫᐂॡĂଋְ၁˯ߏᖣϤ˘࣎পҾ۞ shell ‫ؼ‬ҩ඀ёֽᑭෛ GACĄ఺࣎۞ shell ‫ؼ‬ҩ඀ёΞͽពϯٙѣщ྅д GAC ̚۞ assembliesĂͽ̈́ assemblies ۞‫ۍ‬ ώྤੈĂ̼͛ྤੈĂͽ̳̈́៑ྤੈĄ ѣˬ჌͞‫ڱ‬Ξͽщ྅.NET ̮І‫ ז‬GAC ̚Ąௐ˘჌͞‫ֹߏڱ‬ϡߛ॰ SDK ۞ ‫΄׻‬Е̍‫ ׍‬gacutilĂgacutil ૟дᐌ‫੅ޢ‬ኢĄௐ 2 ჌͞‫ֹߏڱ‬ϡ Windows Explorer ᕱᜓ\Windows\Assembly ϫᐂĂ൒‫ޢ‬ԯ assembly ‫ٳ‬Ѣ‫ז‬ϫᐂЕ

8-4

ᑕϡ඀ёฟ൴͘Ί

ܑࢬ‫̚ۍ‬Ą౵‫˘ޢ‬჌͞‫ֹߏڱ‬ϡ.NET ௡ၗგந̍‫׍‬ĂଋΞͽдෛ඄ ଠ‫ט‬έ ̚х‫׍̍࣎఺פ‬Ą

ૻ‫ݭ‬ЩჍ(Strong Names) ૻ‫ݭ‬ЩჍ‫ ׶‬COM ඀ёనࢍ̚ 128 Ҝ̮۞ Globally Unique Identifier (GUID) ‫ܧ‬૱۞ᙷҬĄGUID ߏ፾˘൑˟۞ЩჍĄՏ˘࣎.NET assembly ౌѣ˘࣎ૄ ώ۞ЩჍĂ‫̚׎‬Βӣ˞͛фҚĂ‫ۍ‬ώበཱིĂͽ̈́ΞᏴፄ۞̼͛ྤੈĄ၆‫ٺ‬щ ྅д GAC ̚Вֳ۞ assemblies ҃֏ĂૄώЩჍ̙ਕιܲᙋ΃ܑ۞ assembly ߏ፾˘൑˟۞Ąࠎ˞ܲᙋ assembly ጾѣ፾˘൑˟۞ЩჍĂЯѩ.NET Ξͽࠎ assembly யϠϤ̳ѣ‫׶‬ռѣ̮І௡ј۞ΐ૜ᔣࣃ҃௡ј۞ᇴҜᘪౢĄ఺࣎ᇴ Ҝ ᘪ ౢ ಶ Ξ ͽ ᖣ Ϥ .NET ߛ ॰ ۞ SDK Assembly Linker (al.exe) ̰ ಷ ‫ז‬ assembly ̚Ăٕߏдࣧؕ඀ёቅֹ̚ϡ assembly ᛳّΐˢѩᇴҜᘪౢĄ

Runtime Callable Wrappers ͽ̈́ COM Callable Wrappers ̙გߏх‫פ‬.NET ̮Іٕߏ COM Ҩ‫ڇ‬ጡд.NET ᑕϡ඀ё̚ೀͼౌߏ౅‫ځ‬ ۞Ą˵ಶߏᄲ༊ଋд.NET ᑕϡ඀ёֹ̚ϡ COM Ҩ‫ڇ‬ጡॡĂCOM Ҩ‫ڇ‬ጡಶ ‫˘׶‬ਠ۞.NET ̮Іֹϡ੓ֽߏ˘ᇹ۞ĄТᇹ۞Ă༊ฟ൴ˠࣶᖣϤ COM Interop ԫఙԯ.NET ̮ІᏮ΍ග unmanaged ᑕϡ඀ёॡĂ఺ֱ.NET ̮Ід ֹϡ˯˵‫˘׶‬ਠ۞ COM Ҩ‫ڇ‬ጡೀͼߏ˘ᇹ۞Ą఺఼ֱ౅ّߏϤࡦ‫۞ޢ‬ proxies ٕߏ wrapper ‫ۏ‬І೩ֻ۞Ą ༊ଋд managed ᑕϡ඀ёֹ̚ϡ COM ‫ۏ‬ІĂCommon Language Runtime (CLR)ົ‫ޙ‬ϲ˘࣎ RCW ‫ۏ‬ІĂRCW ߏ managed ‫ ׶‬unmanaged ඀ёቅม۞ ໛఼፜ሇĄኑᗔ۞ྤफ़ marshaling ͽ̈́ણ҂ࢍᇴࣃඈ̍үౌົϤ RCW ఍ நĄְ၁˯ RCW ࠤҌ̙ົᏮ΍ IUnknown ‫ ׶‬IDispatc ̬ࢬĄ ༊ଋд unmanaged ᑕϡ඀ёֹ̚ϡ.NET ̮ІĂր௚‫ޙົܮ‬ϲ˘࣎Ⴭࠎ COM Callable Wrapper (CCW)۞‫ۏ‬ІĄ

͹ࢋ Interop Assembly д COM ඀ёሀ‫̚ݭ‬âό GUID ޽‫ؠ‬ග˞˘࣎‫ݭ‬ၗĂGUID ‫ܮ‬ણ҂‫֤࣎ז‬ প‫ݭ۞ؠ‬ၗ̙҃გ֤࣎‫ݭ‬ၗ΍னд̦ᆃг͞Ąּтâ఼࣎ϡ۞̬ࢬΞਕ‫ؠ‬

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-5

ཌྷдధк̙Т۞‫ݭ‬ၗ‫ב‬ёऱ̚ĂҭߏՏ˘࣎፾ϲ۞‫ב‬ёऱౌΞͽ‫ؠ‬ཌྷጾѣ࠹ Т GUID ۞̬ࢬĂЯѩಶ̙ົѣࢦᖬ‫ؠ‬ཌྷ۞યᗟхдĄ̙࿅Ăт‫ڍ‬ଋࠎ఺ֱ ፾ϲ۞‫ݭ‬ၗ‫ב‬ёऱயϠ COM Interop assembliesĂ֤ᆃՏ˘࣎፾ϲ۞‫ݭ‬ၗ‫ב‬ ёऱౌົயϠ˘࣎າ۞Ă፾প۞ assemblyĄՏ˘࣎఺ֱ፾প۞ assembly ౌ ົΒӣ፾প۞‫ݭ‬ၗ(ಶ CLR ҃֏)Ą.NET assemblies ۞ૻ‫׶ݭ‬ҋԧೡࢗ۞ਕ ˧ְ၁˯ߏ‫ ׶‬COM ඀ёሀ‫ݭ‬ѣ኏ࡎ۞Ąι၁ᅫ˯ߏϤ GAC ̚·ϋ۞ Interop assemblies ̚ЧҋΒӣ۞ RCW ֽ޽ШТ˘࣎‫ݭ‬ၗ‫ב‬ёऱֽྋՙ኏ࡎ ۞ĄՀᒷᎣ۞ߏĂ၆‫ ٺ‬CLR ֽᄲĂՏ˘࣎ assembly ౌΒӣ˞፾প‫࠹̙׶‬ट ۞‫ݭ‬ၗĂЯࠎՏ˘࣎ assembly ౌ‫׍‬౯̙Т۞ૻ‫ݭ‬ЩჍĄ ࠎ˞ᔖҺ̂ณ·ϋ assemblies ͽ̈́‫ݭ‬ၗ̙࠹ट۞યᗟĂ.NET ߛ॰೩ֻ˞ͽ ˘࣎͹ࢋ۞ Interop assembly ઇࠎ΃ܑ˘࣎‫ݭ‬ၗ‫ב‬ёऱ۞፟‫ט‬Ą͹ࢋ Interop assembly ౌጾѣϤࣧؕ೩ֻ‫ݭ‬ၗ‫ב‬ёऱ۞ᇄથ೩ֻ۞ૻ‫ݭ‬ЩჍĄ

д.NET ߛ॰ SDK ̚۞ COM Interop ̍‫׍‬ ˘ֱϤ.NET ߛ॰ SDK ೩ֻ۞̍‫׍‬Ξͽдฟ൴ᒖဩ̚х‫פ‬Ąώ̈༼ୃࢗ۞̙ ߏ఺ֱ̍‫׍‬Ԇፋ۞ᄲ‫ځ‬Ąώ̈༼Ϊߏઇࠎᖎ̬.NET ߛ॰ SDK ۞੓ؕᕇĂԓ ୕ਕૉឰଋ၆‫ٺ‬тңдፋЪ൴णᒖဩֹ̚ϡ COM Interop ԫఙѣ˘࣎ૄώ ۞ᒢྋĄ

Ꮾˢ‫׶‬Ꮾ΍‫ݭ‬ၗ‫ב‬ёऱ(Importing and Exporting Type Libraries) Tlbimp ߏ‫΄׻‬Е̍‫׍‬ĂιΞͽֹϡֽࠎ‫ݭ‬ၗ‫ב‬ёऱயϠ.NET assemblyĄ Tlbimp Ξͽۡତд‫ݭ‬ၗ‫ב‬ёऱ˯ֹϡĂٕߏֹϡдΒӣ̰ಷ‫ݭ‬ၗ‫ב‬ёऱྤ໚ ۞ DLL ˯Ąኛ‫ڦ‬ຍϤ Tlbimp யϠ۞ assembly ΪົΒӣ RCW ۞඀ёቅĂ ̙՟ѣΒӣࣧώ۞ COM ‫ۏ‬ІĄЯѩଋ̪൒ᅮࢋд௣ბֹϡ۰۞፟ጡ̶̚൴ ‫׶‬ොΊ COM ‫ۏ‬ІĄAssembly ̚˵Βӣ˞‫ؠ‬ཌྷд‫ݭ‬ၗ‫ב‬ёऱ̚۞‫ݭ‬ၗྤੈĂ ఺ֱ‫ݭ‬ၗྤੈົͽ metadata ۞ॾёхд‫ ٺ‬assembly ̚ĄTlbimp Ξͽֹϡ ‫΄׻‬ЕᏴีֽயϠ͹ࢋ Interop assemblyĄ .NET ߛ॰ SDK ΒӣΩγ˘࣎‫΄׻‬Е̍‫׍‬Ⴭࠎ tlbexpĂtlbexp ߏֹϡֽ ࠎ.NET Assembly யϠ‫ݭ‬ၗ‫ב‬ёऱ۞ĄᖣϤ tlbexp யϠ۞‫ݭ‬ၗ‫ב‬ёऱΞͽֹ

8-6

ᑕϡ඀ёฟ൴͘Ί

ϡֽᏮ΍.NET ̮Іࠎ COM Ҩ‫ڇ‬ጡĂ൒‫ޢ‬ಶΞͽజ unmanaged ᑕϡ඀ёֹ ϡĄ

Ꮾˢ ActiveX ଠ‫בีט‬ёऱ Aximp ߏ‫΄׻‬Е̍‫׍‬ĂιΞͽֹϡֽயϠ‫ދ‬྅ ActiveX ଠ‫ ۞ีט‬wrapper assemblyĄ༊ฟ൴ˠࣶࢋд Windows ܑಏֹ̚ϡ ActiveX ଠ‫ีט‬ॡಶᅮࢋ ఺ ࣎

wrapper

assembly Ą Ϥ ‫ٺ‬

Windows

ܑ ಏ Ϊ ਕ ֹ ϡ ଂ

System.Windows.Forms.Control ᙷҾᚶٚ˭ֽ۞ଠ‫ีט‬ĂЯѩᅮࢋ˘࣎প Ҿ۞̍‫׍‬ឰ ActiveX ଠ‫ีט‬ਕૉజ Windows ܑಏֹϡĂ҃ tlbimp ̳ϡ඀ё ‫̙ݒ‬ਕଂ System.Windows.Forms.Control ࢉϠ wrapper ᙷҾĄ Aximp ̍‫׍‬ਕૉТॡயϠ interop assemblies(ಶည tlbimp ۞Αਕ˘ᇹĂТ ॡ Aximp ˵ົயϠ࠹ᙯ۞ assemblies)ͽ̈́ ActiveX wrapper assemblyĄ‫׶‬ tlbimp ˘ᇹĂaximp ೩ֻ˞‫΄׻‬ЕᏴีΞͽдயϠ۞ assemblies ̰̚ಷૻ‫ݭ‬ ЩჍĄ‫ ׶‬tlbimp ̙˘ᇹ۞ߏĂaximp ̙ਕૉயϠ͹ࢋ interop assemblyĄ

யϠૻ‫ݭ‬ЩჍ т‫ڍ‬ଋᅮࢋ̶൴.NET ̮І‫ ז‬GAC ̚Ăଋ‫ܮ‬ᅮࢋࠎଋ۞ assembly ̰ಷૻ‫ݭ‬ ЩჍᔣࣃĄଋΞͽֹϡ.NET ߛ॰ SDK ̚۞ sn ‫΄׻‬Е̍‫׍‬ĄAssembly Ξͽ ֹϡ 3 ჌ԛёֽΐˢૻ‫ݭ‬ЩჍĈ y

ᖣϤд assembly linker (al)‫΄׻‬Е̚޽‫ځ‬யϠૻ‫ݭ‬ᔣࣃᑫ९

y

ᖣϤֹϡ AssemblyKeyFile ᛳّᇾො assembly

y

ᖣϤֹϡٙᏜ۞"delay signing"ԫఙ

༊ֹϡ"delay signing"ॡĂassembly дበᛌॡΪົ̰ಷᑫ९̳̚ϡᔣࣃ۞ొ ЊĄд̶൴ assembly ̝݈ĂᅮࢋГѨֹϡ sn ̍‫׍‬д assembly ̰̚ಷռѣ ᔣࣃ۞ొЊĄ

̶൴.NET ̮І‫ ז‬Global Assembly Cache ̚ .NET ߛ॰ SDK ̳ϡ඀ё gacutil ߏ˘࣎‫΄׻‬Е඀ёĂιΞͽֹϡֽщ྅Ă ொੵĂͽ̈́ᑭෛд GAC ̚۞̮ІĄGacutil Ξͽֹϡдщ྅ቇώᄬ֏̚ͽ̈́

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-7

ֹϡдԲѨᑫ९̚ĄGacutil Ξͽ͚೯၆‫ٺ‬Вֳ assemblies ۞щ྅‫׶‬ொੵ۞ ̍үĂ҃൑ᅮ˘‫ֹࢋؠ‬ϡણ҂ࢍᇴࣃ‫΄׻‬ᏴีĄԧࣇ۞‫ޙ‬ᛉߏдฟ൴ॡഇֹ ϡ‫ܧ‬ણ҂ࢍᇴࣃ‫΄׻‬ᏴีĄֹϡ gacutil ۞щ྅ቇώᄬ֏дщ྅Вֳ̮Іॡ ᑕྍֹϡણ҂ࢍᇴࣃ‫΄׻‬ЕᏴีĄ

дፋЪ൴णᒖဩֹ̚ϡ COM Interop Assemblies ٙѣϤ.NET ߛ॰ SDK ‫΄׻‬Е̍‫׍‬೩ֻ۞Αਕְ၁˯ౌΞͽᖣϤ.NET ߛ॰ ᙷҾ‫ב‬ёऱֽ೩ֻĄDelphi 8 for .NET ፋЪ൴णᒖဩ˵ߏᖣϤ.NET ߛ॰ᙷ Ҿֽ೩ֻϹ̢໛఼۞ΑਕĄፋЪ൴णᒖဩ೩ֻ˞ͧ‫΄׻‬Е̍‫׍‬Հк۞ਕ˧Ă ឰፋЪ൴णᒖဩ‫ ׶‬unmanaged ̮І۞ፋЪՀࠎ૜̷Ą

‫ݭ‬ၗ‫ב‬ёऱ‫ ׶‬Interop Assemblies ፋЪ൴णᒖဩΞͽᖣϤ૞९გநࣶ‫ޙ‬ϲ Interop assembliesĄଋ༊д૞९̚ ΐˢ DLL ۞ણ҂ॡĂଋΞͽᏴፄֹϡොΊ۞‫ݭ‬ၗ‫ב‬ёऱͽ̈́ unmanaged DLLĂଋ˵Ξͽᕱᜓֹϡ˘࣎ϏොΊ۞̮ІĄ ፋЪ൴णᒖဩົࠎՏ˘࣎Ꮾˢ۞‫ݭ‬ၗ‫ב‬ёऱٕߏ DLL யϠ˘࣎ Interop assemblyĄ఺ֱ assemblies ົͽ Interop.LibraryName.dll ۞ԛёֽ‫׻‬ЩĂ ҃ LibraryName ‫ݭߏ݋‬ၗ‫ב‬ёऱ۞ЩჍĄ‫ב‬ёऱ۞ЩჍߏд IDL ࣧؕ඀ё ̚ͽ library ୃࢗ޽‫۞ؠ‬ЩჍĂЯѩϤፋЪ൴णᒖဩҋજயϠ۞ assembly Ξ ਕົ‫ ۞ؕࣧ׶‬DLL ٕߏ‫ݭ‬ၗ‫ב‬ёऱ̙˘ᇹĄՏ˘࣎ Interop assembly(ͽ̈́ ٙѣιણ҂۞ assemblies)ౌົͽણ҂‫ ז‬assemblies ΐˢ‫ז‬ଋ۞૞९̚Ąٙ ѣ‫ؠ‬ཌྷд Interop assembly ̚۞‫ݭ‬ၗౌົ‫ؠ‬ཌྷд‫ݭ׶‬ၗ‫ב‬ёऱጾѣ࠹ТЩჍ ۞‫׻‬Щ۩ม̚ĄТᇹ۞Ă఺࣎ЩჍ˵ߏ IDL ࣧؕ඀ё̚ͽ library ୃࢗ޽‫ؠ‬ ۞ЩჍĄ т‫ڍ‬ଋણ҂۞ assembly ጾѣ˘࣎͹ࢋ۞ Interop assemblyĂፋЪ൴णᒖဩົ ߤᛇ఺ְ࣎၁֭ͷᔖҺயϠາ۞ Interop assemblyĄд఺჌ଐԛ̚ĂፋЪ൴ णᒖဩົΐˢ޽‫ ז‬GAC ̚͹ࢋ۞ Interop assembly ۞ણ҂‫ז‬૞९̚Ă҃ͷ ፋЪ൴णᒖဩ˵̙ົ޿֓ GAC ̚۞͹ࢋ Interop assembly ‫ז‬ଋ۞ώгϫᐂ ̚Ą

8-8

ᑕϡ඀ёฟ൴͘Ί

Ꮾˢ ActiveX ଠ‫ีט‬ ࢋд managed ᑕϡ඀ёֹ̚ϡ ActiveX ଠ‫ีט‬ĂଋυืАԯଠ‫ีט‬ΐˢ‫ז‬ ̍ ‫ ׍‬ሹ ̚ Ą ఺ ົ Т ॡ ய Ϡ interop assembly Ă ͽ ̈́ Β ӣ ଂ System.Windows.Forms.AxHost ᚶ ٚ ˭ ֽ ۞ wrapper ᙷ Ҿ ۞ ActiveX assemblyĄActiveX wrapper assembly ົͽ AxInterop.LibraryName.dll ۞ ЩჍԛёֽ‫׻‬ЩĂ҃ LibraryName ߏ‫ݭ‬ၗ‫ב‬ёऱ۞ЩჍĄଂ̍‫׍‬ሹ̚‫ٳ‬Ѣ఺ ࣎ଠ‫ זีט‬Windows ܑಏ̚ಶົឰଋ۞૞९ҋજΐˢણ҂‫࣎׌఺ז‬யϠ۞ assembliesĄ ˘ό‫ ˞ז‬Windows ܑಏ̚ĂActiveX ଠ‫ีט‬ಶΞͽညЇң‫۞΁׎‬.NET ̮І ˘ᇹֹֽϡĄଋΞͽᏴፄ఺࣎ଠ‫ีט‬Ă֭ͷд‫ۏ‬Іᑭෛጡ̚న‫ؠ‬ι۞পّࣃ ͽ ̈́ ְ І ఍ ந ‫ ב‬ё Ą ActiveX

ଠ ‫ี ט‬

wrapper

ົ Ꮾ ΍

Windows.Forms.Control ᙷҾ۞পّĂ҃ͷϤ ActiveX ଠ‫ีט‬Ꮾ΍۞পّົ ᕩᙷд‫ۏ‬Іᑭෛጡ̚۞ Misc ཏ௡̚Ą

Interop Assemblies ‫׶‬૞९გநࣶ Ϥ ፋ Ъ ൴ ण ᒖ ဩ ய Ϡ ۞ Interop Assemblies( Β ӣ ˞ ActiveX ଠ ‫ี ט‬ wrapper assemblies)ߏ፾ϲ۞ᐼхд COMImports ϫᐂ̚ĂCOMImports ϫᐂߏҜ‫ٺ‬ଋ۞૞९ϫᐂ˭ĄՏ˘࣎யϠ۞ assembly ۞'Copy Local' পّ ࣃౌົజన‫ ࠎؠ‬TrueĂ఺ຍᏜ༊૞९జበᛌॡĂassembly ົజ޿֓‫ז‬౵‫ޢ‬ በᛌ۞ඕ‫ڍ‬඀ё۞࠹Тϫᐂ̚Ą઱˘۞ּγಶߏ͹ࢋ interop assembliesĂ఺ ֱ assemblies ົజ̶൴‫ ז‬GAC ̚Ą༊ଋΐˢણ҂‫ז‬͹ࢋ interop assemblies ॡĂፋЪ൴णᒖဩ̙֭ົԯ͹ࢋ interop assemblies ޿֓‫ ז‬COMImports ϫ ᐂ̚Ą఺ֱ assembly ̪൒ົពϯд૞९გநࣶ̚Ă̙࿅т‫ڍ‬ଋΠᑝ఺࣎ assembly ពϯι۞পّࣃĂଋ‫ົܮ‬൴ன'Copy Local'న‫ߏࣃؠ‬జᙯౕ۞Ą ણ҂ assemblies Еܑ(Βӣֱ֤̙ߏ Interop ۞ assemblies)ౌߏଋ۞૞९۞ ᛳّĄт‫ ڍ‬COMImports ϫᐂ(ٕߏΒӣд‫ ۞̚׎‬Interop assemblies)дଋ ฟୁ૞९ॡ̙хдĂፋЪ൴णᒖဩົྏ඾ࢦາ‫ޙ‬ϲιĄт‫ڍ‬ፋЪ൴णᒖဩ൑ ‫ ޙ ڱ‬ϲ Interop assembly Ă ι ̪ ൒ ົ д ૞ ९ გ ந ࣶ ̚ ព ϯ ࠎ ણ ҂ ۞

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-9

assemblyĂ̙࿅ፋЪ൴णᒖဩົͽ੼‫ޘܪ‬ពϯ఺࣎ assembly ឰଋۢ྽ϫ݈ ఺࣎ assembly д፟ጡ̙̚хд(ٕߏ‫إ‬ϏොΊ)Ą

ᖣϤ Delphi 8 for .NET ֹϡ Platform Invoke ώ̈༼੅ኢ˞д Delphi 8 for .NET ֹ̚ϡ APIs ۞ૄώԫఙĄߙֱВϡ۞᏾ ᄱ‫׶‬ౝ֪ົপҾ޽΍ֽĂ֭ͷົ೩ֻᖙᛌ Delphi ۞ྤफ़‫ݭ‬ၗ۞ԣిણ҂̰ टĄώ̈༼̙֭ົဘྏྋᛖ Platform Invoke ‫ ׶‬marshaling ۞ૄώۢᙊĄԧ ࣇ˵‫ޙ‬ᛉଋдዦ᝝̝݈Аᒢྋ̦ᆃߏᛳّͽ̈́тңֹϡᛳّĄ Win32 API జֹϡдᇴ࣎ቑּ̚Ąࢋણ҂ API ΑਕՀк۞௟༼Ăኛણ҂ Windows Platform SDK ͛ІĄ ώ̈༼੅ኢ˞˭ࢬ۞͹ᗟĈ y

‫ײ‬Ψ unmanaged ‫ב‬ё(Calling unmanaged functions )

y

ඕၹ(Structures )

y

аΨ‫ב‬ё(Callback functions )

y

็ᅍ‫ۏ‬Іણ҂(Passing Object References )

y

ֹϡ COM ̬ࢬ(Using COM Interfaces)

‫ײ‬Ψ unmanaged ‫ב‬ё ༊‫ײ‬Ψ‫ײ‬Ψ unmanaged ‫ב‬ёॡĂ΃ܑ unmanaged ‫ݭ‬ၗ۞ managed ‫ב‬ё‫ކ‬ Әυืజ‫ޙ‬ϲĄдధк۞ଐԛ̚Ă‫ב‬ёΞਕତ‫ז޽צ‬Ч჌̙Т‫ݭ‬ၗ۞޽ᇾĄ ‫ ࣎ ˘ ۞ ̚ ׎‬ቑ ּ ಶ ߏ Win32 API ۞ SystemParametersInfo ‫ ב‬ё Ă SystemParametersInfo ጾѣт˭۞‫ކ‬ӘĈ BOOL SystemParametersInfo( UINT uiAction, // system parameter to retrieve or set UINT uiParam, // depends on action to be taken PVOID pvParam, // depends on action to be taken UINT fWinIni // user profile update option );

8-10

ᑕϡ඀ёฟ൴͘Ί

ॲፂ uiAction ۞ᇴࣃĂpvParam Ξͽ΃ܑ෹࿅˘χ۞Ч჌̙Т۞ඕၹٕߏ ᖎಏ۞ྤफ़‫ݭ‬ၗĄϤ‫ٺ‬՟ѣᏱ‫ֹڱ‬ϡಏ˘۞ managed ‫ކ‬Әֽ΃ܑ఺჌ણᇴĂ Я ѩ ఺ ࣎ ‫ ב‬ё ۞ к ࣎ ̙ Т ۞ ࢦ ྶ ‫ ۍ‬ώ υ ื జ ‫ ކ‬Ә (ኛ ણ ҂ Borland.Vcl.Windows.pas)ĂдՏ˘࣎ࢦྶ۞‫ב‬ё΃ܑ˘࣎প‫۞ؠ‬ଐԛĄ PvParam ણ ᇴ ˵ Ξ ͽ ᖣ Ϥ ఼ ϡ ۞ ‫ ݭ‬ၗ IntPtr ֽ ‫ ކ‬Ә Ą ఺ ᇹ ۞ ‫ ކ‬Ә ົ ԯ marshaling యЇ۞ᖼᆊග‫ײ‬Ψ۰Ă̙҃ߏ̰‫ ۞ޙ‬marshalerĄኛ‫ڦ‬ຍĂࠎ unmanaged ‫ב‬ё‫ކ‬Ә۞ managed ‫ۍ‬ώυืֹϡ̰‫ ؠ‬marshaler ਕૉ఍ந۞ ྤ फ़ ‫ ݭ‬ၗ Ą ӎ ‫ ݋‬Ă ‫ ײ‬Ψ ۰ υ ื ‫ ކ‬Ә ણ ᇴ ‫ ݭ‬ၗ ࠎ IntPtr Ă ֭ ͷ Ꮠ ҋ ࢑ య marshaling ྤफ़۞̍үĄ

ྤफ़‫ݭ‬ၗ(Data Types) ੵ˞޽ᇾ‫׶‬фҚ‫ݭ‬ၗ̝γĂ̂ొЊ۞ྤफ़‫ݭ‬ၗ̙֭ᅮࢋԼតĄ˭ࢬ۞ܑॾព ϯ˞఼ϡ۞ྤफ़‫ݭ‬ၗĂͽ̈́тңᖙᛌιࣇј managed ඀ёቅĈ

Unmanaged ྤफ़‫ݭ‬ၗ Pointer to string (PChar)

Managed ྤफ़‫ݭ‬ၗ Ꮾˢણᇴ(Input Parameter) String

Ꮾ΍ણᇴ(Output Parameter) StringBuilder

Untyped parameter/buffer

Tbytes

TBytes

Pointer to structure (PRect)

const Trect

var TRect

Pointer to simple type (PByte)

const Byte

var Byte

Pointer to array (PInteger)

array of Integer

array of Integer

Pointer to pointer type (^PInteger)

IntPtr

IntPtr

IntPtr ˵Ξͽ΃ܑٙѣ۞޽ᇾ‫׶‬фҚ‫ݭ‬ၗĂд఺჌‫ކ‬Ә̚ଋಶᅮࢋҋֹ̎ϡ Marshal ᙷ Ҿ ֽ marshal ྤ फ़ Ą ༊ ֹ ϡ ତ ‫ ͛ צ‬ф ቤ ኏ ડ ۞ ‫ ב‬ё ॡ Ă StringBuilder ᙷҾ೩ֻ˞౵ᖎಏ۞ྋՙ͞९Ą˭ࢬ۞ቑּពϯ˞тңֹϡ StringBuilder ֽତ‫͛צ‬фቤ኏ડĈ function GetText(Window: HWND; BufSize: Integer = 1024): string; var Buffer: StringBuilder; begin Buffer := StringBuilder.Create(BufSize); GetWindowText(Window, Buffer, Buffer.Capacity);

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-11

Result := Buffer.ToString; end;

StringBuilder ᙷҾົҋજд unmanaged ቤ኏ડ̚ซҖᗕШ marshal ۞̍ үĄдߙֱଐԛ̚ĂΞਕ൑‫ֹڱ‬ϡ StringBuilderĄ˭ࢬ۞ቑּពϯ˞тңֹ ϡ SendMessage ֽેҖ marshal ͽ‫็ܮ‬ਖ਼‫׶‬ତ‫ྤצ‬फ़Ĉ procedure SetText(Window: HWND; Text: string); var Buffer: IntPtr; begin Buffer := Marshal.StringToHGlobalAuto(Text); try Result := SendMessage(Window, WM_SETTEXT, 0, Buffer); finally Marshal.FreeHGlobal(Buffer); end; end;

˘࣎ unmanaged ቤ኏ડజ੨ཉĂ֭ͷᖣϤ‫ײ‬Ψ StringToHGlobalAuto ޿֓ фҚ‫̚׎ז‬Ą༊ቤ኏ડ̙Гֹϡॡᅮࢋᛖ‫ٸ‬Ąࢋ marshal ޽‫ז‬ඕၹ۞޽ᇾĂ ଋᅮࢋֹϡ Marshal. StructureToPtr ͞‫֓޿ڱ‬ඕၹ۞̰ट‫ ז‬unmanaged ੃ ጸវቤ኏ડ̚Ą ˭ࢬ۞ቑּពϯ˞тңତ‫͛࣎˘צ‬фቤ኏ડ֭ͷ marshal ྤफ़‫ז‬фҚ̚Ĉ function GetText(Window: HWND; BufSize: Integer = 1024): string; var Buffer: IntPtr; begin Buffer := Marshal.AllocHGlobal(BufSize * Marshal.SystemDefaultCharSize); try SendMessage(Window, WM_GETTEXT, BufSize, Buffer); Result := Marshal.PtrToStringAuto(Buffer); finally Marshal.FreeHGlobal(Buffer); end; end;

ଋυืቁ‫ؠ‬ቤ኏ડ۞̂̈ߏ֖ૉ۞Ă҃ͷᖣϤֹϡ SystemDefaultCharSize ͞‫ڱ‬Ăቤ኏ડΞͽܲᙋιΞͽΒӣЇңր௚۞ BufSize ̂̈۞ф̮ᇴĄ

8-12

ᑕϡ඀ёฟ൴͘Ί

੼ඈԫఙ(Advanced Techniques) ༊ ֹ ϡ unmanaged API ॡ Ă གྷ ૱ ົ ็ ᅍ ޽ ‫ ז‬প ‫ ྤ ؠ‬फ़ ‫ ݭ‬ၗ ۞ ޽ ᇾ ٕ ߏ NULLĄϤ‫ ٺ‬managed API ۞ᖙᛌ‫ؠ‬ཌྷֹ̙ϡ޽ᇾ‫ݭ‬ၗĂଋΞਕᅮࢋ‫ކ‬Әᗝ γ۞ࢦྶ‫ב‬ёĂ఺࣎ࢦྶ‫ב‬ёᅮࢋԯ NULL ણᇴͽ IntPtr ‫ݭ‬ၗֽ‫ކ‬ӘĄ

পҾ۞९ּ(Special Cases) дߙֱଐԛ̚Ăӈֹߏ StringBuilder ‫ ׶‬Marshal ᙷҾ˵൑‫ڱ‬ϒቁ۞఍நᅮ ࢋ็ᅍ‫ ז‬unmanaged ‫ב‬ё̚۞ྤफ़Ą‫࣎˘۞̚׎‬ቑּಶߏ༊ଋᅮࢋ็ᅍ‫׶‬ ତ‫צ‬Ϥ NULL ф̶̮࿣۞кࢦфҚĄϤ‫ ۞ؠ̰ٺ‬marshaler ົԯௐ˘࣎ NULL ༊јߏфҚ۞ඕԍĂЯѩྤफ़ົଂѩ఍జ̷౷ĞStringToHGlobalXXX ‫ ׶‬PtrToStringXXX ͞‫ົ˵ڱ‬ѣТᇹ۞યᗟхдğ Ąд఺჌ଐԛ̚ĂଋΞͽֹ ϡ Tbytes(ଋΞͽֹϡ Borland.Delphi.System ̚۞ PlatformStringOf ‫׶‬ PlatformBytesOf ͞‫ڱ‬дҜ̮௡ੱЕ‫׶‬фҚ̝มᖼೱ)Ąኛ‫ڦ‬ຍĂ఺ֱ‫ב‬ё֭ ̙ົᆧΐٕߏொੵфҚ۞ඕԍ NULL ф̮Ą ༊ ֹ ϡ

COM ̬ ࢬ ॡ Ă UnmanagedType Е ᓝ ‫ ݭ‬ၗ ( ఺ ߏ జ

MarshalAsAttribute ᙷҾֹٙϡ)ጾѣ˘࣎পҾ۞ᇴࣃĂLPStructĄLPStruct Ϊѣд‫ ׶‬System. Guid ᙷҾ˘੓ֹϡॡ̖ѣड़ĂLPStruct ົૻ࢝ marshaler ᖼೱણᇴࣃјࠎ˘࣎ Win32 GUID ඕၹĄд Delphi 7 ̚ CoCreateInstance ߏజ‫ؠ‬ཌྷјт˭۞Ĉ function CoCreateInstance([MarshalAs(UnmanagedType.LPStruct)] clsid: TCLSID; [MarshalAs(UnmanagedType.IUnknown)] unkOuter: TObject; dwClsContext: Longint; [MarshalAs(UnmanagedType.LPStruct)] iid: TIID; [MarshalAs(UnmanagedType.Interface)] out pv ): HResult;

఺ߏϫ݈઱˘ୃࢗтңֹϡ UnmanagedType.LPStruct ۞͛ІĄ

ඕၹĞStructuresğ ‫ײ‬Ψ unmanaged ‫ב‬ёͽ̈́็ᅍඕၹග unmanaged ‫ב‬ё౵̂۞मҾߏ̰‫ؠ‬ ۞ marshaler д఍நඕၹߏѣ˘ֱࢦࢋ۞ࢨ‫ט‬Ą౵ࢦࢋ۞ࢨ‫ߏט‬જၗੱЕĂ ඕၹੱЕͽ̈́ StringBuilder ᙷҾ̙Ξͽֹϡдඕၹ̚Ą၆‫ٺ‬ඕၹ̚۞఺ֱј

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-13

ࣶĂฟ൴ˠࣶυืֹϡ IntPtr(ᔵ൒дߙֱଐԛ̚Ă̪൒ΞͽᖣϤЧ჌̙Т۞ marshaling ᛳّдඕၹֹ̚ϡфҚ)Ą ྤफ़‫ݭ‬ၗ(Data Types) ˭ࢬ۞ܑॾពϯ˞གྷ૱ֹϡ۞ྤफ़‫ݭ‬ၗĂͽ̈́тңᖙᛌ఺ֱྤफ़‫ݭ‬ၗјࠎ managed ඀ёቅĈ Unmanaged ྤफ़‫ݭ‬ၗ Pointer to string (PChar)

Managed ྤफ़‫ݭ‬ၗ Ꮾˢણᇴ String

Ꮾ΍ણᇴ IntPtr

Character array (array[a..b] of Char)

String

String

Array of value type (array[a..b] of Byte)

array[a..b] of Byte

array[a..b] of Byte

Dynamic array (array[0..0] of type)

IntPtr

IntPtr

Array of struct (array[1..2] of TRect)

IntPtr ٕ flatten

IntPtr ٕ flatten

Pointer to structure (PRect)

IntPtr

IntPtr

Pointer to simple type (PByte)

IntPtr

IntPtr

Pointer to array (PInteger)

IntPtr

IntPtr

Pointer to pointer type (^PInteger)

IntPtr

IntPtr

༊ д ඕ ၹ ̚ ֹ ϡ ੱ Е ‫ ׶‬ф Қ ॡ Ă υ ื ֹ ϡ MarshalAs ᛳ ّ ֽ ೩ ֻ ̰ ‫ؠ‬ marshaler ѣᙯྤफ़‫ݭ‬ၗ۞ᗝγྤੈĄּтĂд Delphi 7 ̚‫ކ‬Ә۞੃ᐂĈ type TMyRecord = record IntBuffer: array[0..31] of Integer; CharBuffer: array[0..127] of Char; lpszInput: LPTSTR; lpszOutput: LPTSTR; end;

૟ົͽт˭۞඀ёቅд Delphi 8 for .NET ̚‫ކ‬ӘĈ type [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] TMyRecord = record [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] IntBuffer: array[0..31] of Integer; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] CharBuffer: string;

8-14

ᑕϡ඀ёฟ൴͘Ί

[MarshalAs(UnmanagedType.LPTStr)] lpszInput: string; lpszOutput: IntPtr; end;

˯ࢬ۞‫ކ‬Ә઄నфҚΒӣ˞‫׶‬πέ࠹ֶ۞ TChar(఺ߏ Win32 API གྷ૱ֹϡ ۞)Ąኛ‫ڦ‬ຍĂࠎ˞д lpszOutput ̚ତ‫͛צ‬фĂд็ᅍ఺࣎ඕၹග API ‫ב‬ё ̝݈υืА‫ײ‬Ψ Marshal. AllocHGlobal ͞‫ڱ‬Ą ඕၹ̚ΞͽΒӣඕၹĂҭߏ̙ਕΒӣ޽‫ז‬ඕၹ۞޽ᇾĄд఺჌ଐԛ̚υืֹ ϡ IntPtr ֽ‫ކ‬ӘĂ֭ͷυื‫ײ‬Ψ Marshal. StructureToPtr ͞‫ڱ‬ԯྤफ़ଂ managed ۞ඕၹ̚޿֓‫ ז‬unmanaged ੃ጸវ̚Ąኛ‫ڦ‬ຍĂStructureToPtr ̙֭ົ੨ཉᅮࢋ۞੃ጸវ(఺υืϤ‫ֽڱ͞۞΁׎‬Ԇј)Ąኛቁ‫ֹؠ‬ϡ Marshal. SizeOf ֽՙ‫ؠ‬ᅮࢋֹϡ۞੃ጸវ̂̈ĂϤ‫ ٺ‬Delphi ۞ SizeOf ̙֭ᒢྋ MarshalAs ᛳ ّ (д ˯ ࢬ ۞ ቑ ּ ̚ Ă т ‫ ֹ ڍ‬ϡ Delphi ۞ SizeOf ֽ ҿ ᕝ CharBuffer ۞̂̈Ă֤ᆃ૟ߏ 4 ࣎Ҝ̮௡Ă൒ְ҃၁˯ CharBuffer ᅮࢋ޿ ֓ 128 ࣎Ҝ̮௡)Ą˭ࢬ۞ቑּពϯ˞тң็ਖ਼Βӣ޽‫ז‬ඕၹ޽ᇾ۞ੈिĈ procedure SetRect(Handle: HWND; const Rect: TRect); var Buffer: IntPtr; begin Buffer := Marshal.AllocHGlobal(Marshal.SizeOf(TypeOf(TRect))); try Marshal.StructureToPtr(TObject(Rect), Buffer, False); SendMessage(Handle, EM_SETRECT, 0, Buffer); finally Marshal.DestroyStructure(Buffer, TypeOf(TRect)); end; end; procedure GetRect(Handle: HWND; var Rect: TRect); var Buffer: IntPtr; begin Buffer := Marshal.AllocHGlobal(Marshal.SizeOf(TypeOf(TRect))); try SendMessage(Handle, EM_GETRECT, 0, Buffer); Rect := TRect(Marshal.PtrToStructure(Buffer, TypeOf(TRect))); finally Marshal.DestroyStructure(Buffer, TypeOf(TRect)); end; end;

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-15

т‫ڍ‬ඕၹΒӣ marshaling ᆸᅮࢋᛖ‫ٸ‬ᗝγቤ኏ડ۞᛼ҜॡĂ֤ᆃಶᅮࢋ‫ײ‬Ψ DestroyStructure ̙҃ߏ‫ײ‬Ψ FreeHGlobal(ኛણ҂ DestroyStructure ͛Іͽ ᒢྋՀк۞௟༼)Ą

੼ඈ͹ᗟ(Advanced topics) дֹϡ unmanaged API ॡĂ఼૱ᅮࢋᖼೱҜ̮௡ੱЕјࠎඕၹ(ٕߏдҜ̮ ௡ੱЕ̚х‫ߏٕ࣎˘פ‬к࣎ඕၹ۞᛼Ҝ)ĂٕߏᖼೱඕၹјࠎҜ̮௡ੱЕĄᔵ ൒ Marshal ᙷҾΒӣ˞Ξͽх‫פ‬প‫ؠ‬᛼Ҝ۞Ҝொᇴࣃ͞‫ڱ‬Ăҭߏ Marshal ᙷ Ҿ̚۞఺ֱ͞‫ܧڱ‬૱۞ቤၙĂᑕྍጐณᔖҺֹϡĄॲፂ‫ܧ‬ϒё۞ड़தീྏព ϯĂ၆‫࣎˘ٺ‬ጾѣ 8 ٕ 9 ࣎ᇴࣃ᛼Ҝ۞ඕၹ҃֏Ăֹϡ੨ཉ unmanaged ੃ ጸវĂ޿֓Ҝ̮௡ੱЕ‫ ז‬unmanaged ੃ጸវ̚ĂГ‫ײ‬Ψ PtrToStructure ۞ ఍ ந ͞ ё ᅈ ͧ ֹ ϡ Marshal. OffsetOf ͞ ‫ ֽ ڱ‬Ա ‫ ז‬᛼ Ҝ ۞ Ҝ ཉ Г ֹ ϡ BitConverter ᙷҾֽᖼೱྤफ़۞͞ёԣ˯ధкĄBorland.Vcl.WinUtils Βӣ ˞ᅃӄ‫ב‬ёдҜ̮௡ੱЕ‫׶‬ඕၹ̚ซҖᖼೱ۞̍ү(ኛણዦ StructureToBytes ‫ ׶‬BytesToStructure)Ą

পҾ۞ଐԛ(Special cases) дߙֱଐԛ̚‫މ‬ᄦ̼఍நߏυࢋ۞Ăּт็ᅍΒӣ޽‫ז‬ፋᇴੱЕ޽ᇾ۞ੈ िĄ၆‫఺ٺ‬჌ଐԛĂMarshal ᙷҾ೩ֻ˞ۡତ޿֓ྤफ़‫ ז‬unmanaged ቤ኏ ડ̚প‫ؠ‬Ҝொ۞͞‫(ڱ‬Яѩд੨ཉ˞ቤ኏ડ̝‫ޢ‬ଋΞͽ‫ޙ‬ϲ˘࣎‫މ‬ᄦ̼ྤफ़ ۞ੱЕ)Ą˭ࢬ۞ቑּពϯ˞тң็ਖ਼˘࣎ੈिĂд఺࣎ੈि̚ Lparam ߏ޽ ‫ז‬ፋᇴੱЕ۞޽ᇾĈ function SendArrayMessage(Handle: HWND; Msg: UINT; WParam: WPARAM; LParam: TIntegerDynArray): LRESULT; var Buffer: IntPtr; begin Buffer := Marshal.AllocHGlobal(Length(LParam) * SizeOf(Integer)); try Marshal.Copy(LParam, 0, Buffer, Length(LParam)); Result := SendMessage(Handle, Msg, WParam, Buffer); finally Marshal.FreeHGlobal(Buffer); end; end;

8-16

ᑕϡ඀ёฟ൴͘Ί

аΨ‫ב‬ё(Callback Functions) ༊็ᅍ޽‫ ז‬managed ‫ב‬ё۞޽ᇾග unmanaged API ॡĂ၆‫ ٺ‬delegate ۞ ણ҂υืజჯ޺ҝĂӎ‫݋‬ι૟ົజྤ໚аќĄт‫ڍ‬ଋۡତ็ᅍ޽‫ ז‬managed ‫ב‬ё۞޽ᇾâ࣎ᇶॡ۞ delegate ૟ົజ‫ޙ‬ϲâό༊ιᗓฟ˞ѣड़ቑಛ̝ ‫ޢ‬Ğд˭ࢬ۞ቑּ̚ಶߏ MyFunction ۞ඕԍ఍ğ Ă̝‫ົޢ‬൴Ϡ۞ඕ‫ڍ‬ಶߏϤ ྤ໚аќֽՙ‫˞ؠ‬Ąኛ҂ᇋ˭ࢬ Delphi 7 ۞඀ёቅĈ function MyFunction: Integer; begin ... RegisterCallback(@MyCallback); ... end;

ࠎ˞ឰ˯ࢬ۞඀ёቅਕૉд managed ᒖဩ̚ેҖĂ˯ࢬ۞඀ёቅᅮࢋԼត јт˭۞඀ёቅĈ const MyCallbackDelegate: TFNMyCallback = @MyCallback; function MyFunction: Integer; begin ... RegisterCallback(MyCallbackDelegate); ... end;

఺૟ΞͽቁܲΪࢋ MyCallbackDelegate ߏдѣड़۞ቑಛ̰ĂаΨ‫ב‬ёಶΞ ͽజϒቁ۞‫ײ‬ΨĄ

ྤफ़‫ݭ‬ၗ(Data types) аΨ‫ב‬ёֹϡ۞ఢ‫׶݋‬Їң‫ ۞΁׎‬unmanaged API ‫ב‬ёౌߏ˘ᇹ۞Ą

পҾ۞ଐԛ(Special cases) Їңֹϡ‫ܧ‬ТՎ඀Ԕ̚۞ણᇴౌυื‫ކ‬Әࠎ IntPtrĄ༊‫ב‬ё‫ײ‬ΨඕՁ̝‫ޢޢ‬ Marshaler ૟ົᛖ‫ٸ‬Їңιࠎ unmanaged ‫ݭ‬ၗ੨ཉ۞੃ጸវĄ༊ֹϡ IntPtr ॡĂଋυืҋ̎࢑యᛖ‫ٸ‬Їң੨ཉ۞੃ጸវĄ

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-17

็ᅍ‫ۏ‬Іણ҂(Passing Object References) ༊ֹϡ Windows API ॡĂѣॡ࣏υื็ᅍ‫ۏ‬Іણ҂ග APIĂͽ‫ ܮ‬API ᐼх ‫ۏ‬І֭ͷൾ‫ޢ‬༊প‫ְ۞ؠ‬І൴ϠॡГԯ‫ۏ‬І็ᅍаᑕϡ඀ёĄ఺д.NET ̚ ̪൒ΞͽтѩซҖઇĂҭߏฟ൴ˠࣶυืቁ‫ۏؠ‬І۞ણ҂ࣃѣ‫זצ‬পҾ۞఍ ந(ӎ‫ۏֱ఺݋‬ІΞਕజྤ໚аќ)Ą

ྤफ़‫ݭ‬ၗ(Data types) ˭ࢬ۞ܑॾពϯ˞Ĉ Unmanaged Data Types Pointer (Object reference, user data)

Managed Data Type Supply Data GCHandle

Receive Data GCHandle

GCHandle ߏ็ᅍ‫ۏ‬Іણ҂‫ ז‬unmanaged ඀ёቅ۞ૄώ፟‫ט‬Ă֭ͷົቁܲ ྤ໚аќ̙ົ൴ϠĄGCHandle ᅮࢋజ੨ཉĂ֭ͷдൾ‫̙ޢ‬ᅮࢋֹϡॡᛖ‫ٸ‬ ੨ཉ۞ GCHandleĄGCHandle ѣధк̙Т۞‫ݭ‬ၗĂ༊ unmanaged ϡ͗ბ Ϊᅮхࢋ‫ۏפ‬І۞ྖĂ֤ᆃ‫ ۞̚׎‬GCHandleType.Normal ߏ౵૱ֹϡ۞Ą д GCHandle జ੨ཉ̝‫ޢ‬Ă֤ᆃд็ᅍ GCHandle ග API ‫ב‬ёॡᅮࢋԯ GCHandle ᖼ ត ‫ ݭ‬ၗ ࠎ IntPtr( ˵ Ξ ਕ ᅮ ࢋ Г ᖼ ೱ ࠎ Longint Ă ఺ ࢋ ࠻ unmanaged ϡ͗ბтң‫ކ‬Ә)ĄIntPtr ൾ‫ޢ‬ΞͽГᖼೱа GCHandleĄኛ‫ڦ‬ ຍĂдх‫פ‬ϫᇾপّࣃ̝݈υื‫ײ‬Ψ IsAllocatedĂтТ˭ࢬ۞඀ёቅٙϯĈ procedure MyProcedure; var Ptr: IntPtr; Handle: GCHandle; begin ... if Ptr <> nil then begin Handle := GCHandle(Ptr); if Handle.IsAllocated then DoSomething(Handle.Target); end; ... end;

8-18

ᑕϡ඀ёฟ൴͘Ί

੼ඈԫఙ(Advanced techniques) ֹϡ GCHandle ᔵ൒‫ܧ‬૱۞ᖎಏĂҭߏдેҖड़த˯‫ܧݒ‬૱۞‫ڀ‬ෳĄт‫఺ڍ‬ ֱ Handle ࣃ՟ѣϒቁᛖ‫˵ٸ‬ΞਕົயϠྤ໚႒ε۞યᗟĄт‫ۏڍ‬Іણ҂ߏ ჯ᜕д managed ඀ёቅ̚Ă֤ᆃ˵ధΞͽ็ᅍ˘࣎፾প۞৶͔Ăּт‫ײ‬Ψ GetHashCode ͞‫ڱ‬а็۞ hash ࣃĂග unmanaged API ̙҃ࢋ็ᅍ‫ۏ‬Іણ ҂Ąд managed ඀ёቅ̚Ξͽჯ᜕˘࣎ hash ܑͽ‫ॲܮ‬ፂ hash ࣃх‫ۏפ‬ІĄ ଋ Ξ ͽ д TTreeNodes ᙷ Ҿ ̚ Ա ‫ ֹ ז‬ϡ ఺ ჌ ͞ ё ۞ ቑ ּ ( д Borland.Vcl.ComCtrls ̚)Ą

ֹϡ COM ̬ࢬ(Using COM Interfaces) ༊ֹϡ COM ̬ࢬॡĂΞͽֹϡᙷҬ unmanaged API ۞͞‫ڱ‬Ą̬ࢬᅮࢋజ ‫ ކ‬Ә Ă ֹ ϡ ‫ މ‬ᄦ ̼ ᛳ ّ ֽ ୃ ࢗ ‫ ݭ‬ၗ ̬ ࢬ ͽ ̈́ GUID Ą ତ ඾ ֹ ϡ ည ఍ ந unmanaged API ᙷ Ҭ ۞ ‫ ކ‬Ә ͞ ё ֽ ‫ ކ‬Ә ̬ ࢬ ͞ ‫ ڱ‬Ą ˭ ࢬ ۞ ቑ ּ ֹ ϡ ˞ IAutoComplete ̬ࢬĂ˭ࢬߏ Delphi

7 ۞‫ކ‬ӘĈ

IAutoComplete = interface(IUnknown) ['{00bb2762-6a77-11d0-a535-00c04fd7d062}'] function Init(hwndEdit: HWND; punkACL: IUnknown; pwszRegKeyPath: LPCWSTR; pwszQuickComplete: LPCWSTR): HRESULT; stdcall; function Enable(fEnable: BOOL): HRESULT; stdcall; end;

д Delphi 8 for .NET ̚ιߏт˭‫ކ‬Ә۞Ĉ [ComImport, GuidAttribute('00BB2762-6A77-11D0-A535-00C04FD7D062'), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] IAutoComplete = interface function Init(hwndEdit: HWND; punkACL: IEnumString; pwszRegKeyPath: IntPtr; pwszQuickComplete: IntPtr): HRESULT; function Enable(fEnable: BOOL): HRESULT; end;

ኛֹϡ˞ୃࢗ GUID ‫ݭࢬ̬׶‬ၗ۞‫މ‬ᄦ̼ᛳّĄֹϡ ComImportAttribute ᙷҾ˵ߏυࢋ۞Ą༊Ꮾˢ COM ̬ࢬॡѣ˘ֱࢦࢋ۞‫ڦ‬ຍְีĄଋ̙ᅮࢋ၁ ү IUnknown/IDispatch ͞‫ڱ‬ĂТॡ˵̙͚೯ᚶٚĄ

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-19

ྤफ़‫ݭ‬ၗ(Data types) Unmanaged ‫ב‬ё۞ྤफ़‫ݭ‬ၗ˵ዋϡ‫ ٺ‬COM ۞ྤफ़‫ݭ‬ၗĂГΐ˯˭ࢬ۞ᖼ ೱఢ‫݋‬Ĉ Unmanaged Data Type GUID

Managed Data Type Supply Data System.Guid

Receive Data System.Guid

IUnknown

TObject

TObject

IDispatch

TObject

TObject

Interface

TObject

TObject

Variant

TObject

TObject

SafeArray (of type)

array of

array of

BSTR

String

String

၆ ‫ ֹ ֱ ˘ ࢬ ˯ ٺ‬ϡ TObject Ă ޽ ‫ ځ ؠ‬ቁ ۞ unmanaged ‫ ݭ‬ၗ ( ּ т UnmanagedType.IUnknown Ă

UnmanagedType.IDispatch

ٕ ߏ

UnmanagedType.Interface)۞ଐԛֹ̚ϡ MarshalAsAttribute ‫މ‬ᄦ̼ᛳّ ߏυื۞Ą၆‫ੱֱߙٺ‬Е‫ݭ‬ၗ˵ߏ˘ᇹᅮࢋֹϡ MarshalAsAttribute ‫މ‬ᄦ̼ ᛳّĄIEnumString ̬ࢬ۞ Next ͞‫ځځ޽ߏڱ‬ቁ۞ unmanaged ‫ݭ‬ၗ۞˘࣎ рቑּĄWin32 API ֹϡ˭ࢬ۞඀ёቅֽ‫ކ‬Ә Next ͞‫ڱ‬Ĉ HRESULT Next( ULONG celt, LPOLESTR * rgelt, ULONG * pceltFetched );

д Delphi 8 for .NET ̚ιѣт˭۞‫ކ‬ӘĈ function Next(celt: Longint; [out, MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr, SizeParamIndex = 0)] rgelt: array of string; out pceltFetched: Longint ): Integer;

੼ඈԫఙ(Advanced techniques) д ֹ ϡ safearrays ॡ Ă marshal ᆸ ົ ҋ જ ԯҜ ̮ ௡ ੱ Еᖼ ೱ ࠎ ࠹ ၆ᑕ ۞ safearray ‫ݭ‬ၗĄmarshal ᆸдᖼೱ safearrays ॡ၆‫ݭٺ‬ၗ̙௑Ъ‫ܧ‬૱۞ୂ

8-20

ᑕϡ඀ёฟ൴͘Ί

ຏĄт‫ ڍ‬safearray ۞‫ݭ‬ၗ՟ѣԆБ௑Ъ managed ੱЕ۞‫ݭ‬ၗĂ֤ᆃ‫ົܮ‬ய Ϡּγ᏾ᄱĄߙֱ Win32 ۞ safearray API д‫ޙ‬ϲੱЕॡ՟ѣϒቁ۞న‫ؠ‬ safearray ۞‫ݭ‬ၗĂ֤ᆃд.NET ֹ̚ϡ఺ֱ API ‫ົܮ‬д marshal ᆸயϠ‫ݭ‬ၗ ̙௑Ъ۞ּγ᏾ᄱĄྋՙ͞९ߏĂ1 ቁ‫ ؠ‬safearray జϒቁ۞‫ޙ‬ϲĂ2 ߏֹ̙ ϡ marshal ᆸ۞ҋજᖼೱ፟‫ט‬Ąௐ 2 ჌͞‫ڱ‬Ξਕ‫ޝ‬ПᐍĞҭ఺Ξਕߏଋ઱˘ ۞͞‫ڱ‬Ăт‫ڍ‬ଋ൑‫ڱ‬Լត COM Ҩ‫ڇ‬ጡٙ೩ֻ۞ྤफ़ğĄ҂ᇋ˭ࢬ۞‫ކ‬ӘĈ function AS_GetRecords(const ProviderName: WideString; Count: Integer; out RecsOut: Integer; Options: Integer; const CommandText: WideString; var Params: OleVariant; var OwnerData: OleVariant): OleVariant;

т‫ڍ‬а็ࣃ˘‫ ߏؠ‬safearrayĞ఺՟ѣϒቁ۞ୃࢗι۞‫ݭ‬ၗğ֭ͷ‫ދ‬྅д variant ̚Ă֤ᆃԧࣇΞͽԼត‫ކ‬Әт˭Ĉ type TSafeByteArrayData = packed record VType: Word; Reserved1: Word; Reserved2: Word; Reserved3: Word; VArray: IntPtr; { This is a pointer to the actual SafeArray } end; function AS_GetRecords(const ProviderName: WideString; Count: Integer; out RecsOut: Integer; Options: Integer; const CommandText: WideString; var Params: OleVariant; var OwnerData: OleVariant): TSafeByteArrayData;

Ϥ‫ۢٺ‬྽ OleVariant ߏ੃ᐂ‫ݭ‬ၗĂTsafeByteArrayData ੃ᐂΞͽଂ Delphi 7 ۞ TvarData ᕜ‫פ‬΍ֽ(‫࣎఺׶‬ଐԛᙷҬ۞ྤफ़‫ݭ‬ၗߏ varArray)Ą఺࣎੃ᐂ ‫ݭ‬ၗΞͽ೩ֻх‫ פ‬safearray ۞ࣧϠ޽ᇾĂᖣϤࣧϠ޽ᇾಶΞͽх‫ྤזפ‬फ़Ą ᖣϤֹϡඕၹֹ̙҃ϡ OleVariantĂ֤ᆃ marshal ᆸ૟̙ົဘྏྋᛖੱЕ̚ ۞ྤफ़‫ݭ‬ၗĄҭߏଋ‫ݒ‬ᅮࢋҋ̎࢑యଂৌϒ۞ safearray ̚ᕜ‫פ‬΍ྤफ़Ą

পҾ۞ଐԛ(Special cases) ༊‫ޙ‬ϲ COM ‫ۏ‬Іॡᔵ൒ͧྵዋЪֹϡ Activator.CreateInstanceĂ̙࿅ι‫׶‬ CoCreateInstanceEx ‫ ߏ ̙ ݒ‬Ԇ Б ࠹ ट ۞ Ą ༊ ֹ ϡ ᅈ ბ Ҩ ‫ ڇ‬ጡ ॡ Ă CreateInstance ᓁߏົྏ඾дୁજᅈბ፟ጡ̚۞Ҩ‫ڇ‬ጡ̝݈Аဘྏୁજώг ბ۞Ҩ‫ڇ‬ጡĄϫ݈઱˘۞ྋՙ͞९‫ֹߏܮ‬ϡ CoCreateInstanceExĄ

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-21

Ϥ‫͚̙ٺ‬೯ᚶٚĂЯѩࢉϠ̬ࢬυื‫ކ‬Әͭ΃̬ࢬ۞͞‫ڱ‬Ą˭ࢬߏ IAutoComplete2 ̬ࢬĂιߏଂ IAutoComplete ‫ؼ‬ҩֽ۞Ĉ [ComImport, GuidAttribute('EAC04BC0-3791-11d2-BB95-0060977B464C'), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] IAutoComplete2 = interface(IAutoComplete) // IAutoComplete methods function Init(hwndEdit: HWND; punkACL: IEnumString; pwszRegKeyPath: IntPtr; pwszQuickComplete: IntPtr): HRESULT; function Enable(fEnable: BOOL): HRESULT; // function SetOptions(dwFlag: DWORD): HRESULT; function GetOptions(var dwFlag: DWORD): HRESULT; end;

ฟ൴.NET ‫ײ‬Ψ Win32 ᑕϡ඀ё ώ̈༼૟ᄲ‫ځ‬тңֹϡ Delphi 8 for .NET ͽ̈́ Delphi 7 ฟ൴ Managed ᑕϡ ඀ё‫ײ‬Ψ Unmanaged ᑕϡ඀ёĄд఺࣎ቑּ̚૟ֹϡ Delphi 7 ฟ൴ Win32 ۞ DLL ᑕϡ඀ё֭ͷឰϤ Delphi 8 for .NET ฟ൴۞ Delphi.NET ᑕϡ඀ё ‫ײ‬ΨֹϡĄ఺࣎ቑּ۞௡ј̮৵Β߁˞Ĉ y

Delphi 7 ฟ ൴ ۞ DLL Ĉ ఺ ࣎ ࣧ Ϡ DLL Β ӣ ˞ VCL ܑ ಏ ͽ ̈́ TmediaPlayer Ξͽᇫ‫ ٸ‬AVI ᑫ९

y

Delphi 8 for .NET ฟ൴۞.NET ᑕϡ඀ёĈϤ‫ٺ‬.NET д̰‫֭˯ؠ‬՟ѣΒ ӣΞͽᇫ‫ ٸ‬AVI ᑫ९۞̮ІĂЯѩ‫ײ‬Ψ˞˯ࢬ۞ DLL ֽᇫ‫ ٸ‬AVI ᑫ९

ฟ൴ Win32 DLL ࢵАд Delphi 7 ̚‫ޙ‬ϲ˘࣎ DLL ૞९Ă఺ΞͽᖣϤᕇᏴ New Items ၆ྖ஼ ̚۞ DLL Wizard ဦညֽԆјĈ

8-22

ᑕϡ඀ёฟ൴͘Ί

ତ඾д DLL ૞९̚‫ޙ‬ϲ˘࣎۩Ϩ۞ܑಏĂ఺ΞͽᖣϤᕇᏴ New Items ၆ྖ ஼̚۞ Form ဦညԆјĈ

дາ‫ޙ‬ϲ۞ VCL ܑಏ̚ΐˢ˘࣎ TPanel ̮І‫ ࣎˘׶‬TMediaPlayer ̮ІĂ т˭ٙϯĈ

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-23

Гԯ TMediaPlayer ۞ Display পّࣃన‫ ࠎؠ‬VCL ܑಏ̚۞ TPanel ̮ІĄ னда‫ ז‬DLL[૞९۞͹඀ё̚Ăд Library ඀ёಏ̮̚ΐˢ˘࣎၆γᏮ΍۞ ‫ב‬ё DoPlayAVIĂ඀ёቅт˭ٙϯĈ library PDllService; { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } uses SysUtils, Classes, ufmMain in 'ufmMain.pas' {frmMain}; {$R *.res} exports DoPlayAVI; begin end.

а ‫ ז‬VCL ܑ ಏ ۞ ၁ ү ඀ ё ಏ ̮ Ă А д ඀ ё ಏ ̮ ۞ interface ొ Њ ΐ ˢ DoPlayAVI ‫ב‬ё۞‫ކ‬ӘĂГ‫ ٺ‬implementation ొЊ၁ү DoPlayAVI ‫ב‬ёĄ ኛ‫ڦ‬ຍ DoPlayAVI ‫ކ‬Әࠎֹϡ stdcall ۞‫ײ‬ΨၚּĄ

8-24

ᑕϡ඀ёฟ൴͘Ί

unit ufmMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, MPlayer; type TfrmMain = class(TForm) MediaPlayer1: TMediaPlayer; Panel1: TPanel; procedure MediaPlayer1Notify(Sender: TObject); private { Private declarations } public { Public declarations } end; procedure DoPlayAVI(const sAVIFile : PChar); stdcall; var frmMain: TfrmMain; implementation {$R *.dfm} procedure DoPlayAVI(const sAVIFile : PChar); stdcall; begin if (FileExists(sAVIFile)) then begin FreeAndNil(frmMain); frmMain := TfrmMain.Create(nil); frmMain.MediaPlayer1.FileName := sAVIFile; frmMain.MediaPlayer1.Open; frmMain.Show; frmMain.MediaPlayer1.Play; end; end; const ModeStr: array[TMPModes] of string = ('Not ready', 'Stopped', 'Playing', 'Recording', 'Seeking', 'Paused', 'Open'); procedure TfrmMain.MediaPlayer1Notify(Sender: TObject); begin if (ModeStr[frmMain.MediaPlayer1.Mode] = 'Stopped') then begin frmMain.MediaPlayer1.Close; FreeAndNil(frmMain); end; end;

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-25

end.

д DoPlayAVI ‫ ב‬ё ̚ ࢵ А ‫ ޙ‬ϲ ˞ VCL ܑ ಏ ‫ ۏ‬І Ă Г ‫ ײ‬Ψ ‫۞ ̚ ׎‬ TMediaplayer ̮І۞ Play ͞‫ڱ‬ᇫ‫ ٸ‬AVI ᑫ९ĄϤ‫ ٺ‬AVI ᑫ९۞ЩჍߏϤ ൾ‫ޢ‬၁ү۞.NET ᑕϡ඀ё็ᅍֽ۞ĂЯѩдࣧϠ Win32 ᑕϡ඀ё̚၆‫ٺ‬ Ϥ.NET ็ᅍֽ۞фҚણᇴυื‫ކ‬Әࠎ PChar ۞‫ݭ‬ၗĂӎ‫ົ݋‬யϠ᏾ᄱĄҌ ‫̦ࠎٺ‬ᆃ.NET ۞фҚણᇴд Win32 ̚ᅮࢋ‫ކ‬Әࠎ PChar ‫ݭ‬ၗ‫ॲߏ݋‬ፂ݈ࢬ ౢ༼೩ֻ۞၆໰ܑߤྙ଀ۢ۞Ą னдበᛌѩ DLL ૞९Ă౵‫ޢ‬ᑕྍົ଀‫ࣧ࣎˘ז‬Ϡ۞ Win32 DLL ેҖᑫĄ

ฟ൴.NET ᑕϡ඀ё а‫ ז‬Delphi 8 ۞ፋЪ൴णᒖဩ̚Ăд New Items ၆ྖ஼̚ᕇᏴ Windows Forms Application ဦညͽ‫ޙ‬ϲ˘࣎ Windows ܑಏᑕϡ඀ёĈ

д Windows ܑಏ̚ΐˢ˘࣎ Button ̮ІĂГΐˢ˘࣎ OpenFileDialog ̮ ІĈ

8-26

ᑕϡ඀ёฟ൴͘Ί

ତ඾д Button ̮І۞ Click ְІ఍ந‫ב‬ё̚ᇤᆷт˭۞඀ёቅĈ [DllImport('PDllService.dll', CharSet=CharSet.Ansi)] procedure DoPlayAVI(const sName : String); external; procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs); begin if (ofdAVI.ShowDialog = System.Windows.Forms.DialogResult.OK) then DoPlayAVI(ofdAVI.FileName); end;

д Button1_Click ְІ఍ந‫ב‬ё̝݈ቑּ.NET ᑕϡ඀ёֹϡ˞.NET ۞ DllImport ᛳّ‫ކ‬Ә˞ࢋ‫ײ‬Ψ۞ unmanaged ‫ב‬ё۞ࣧ‫ݭ‬Ăͽ̈́ unmanaged ‫ב‬ёхд۞ Dll ᑫ९ЩჍĂ̝‫ ޢ‬Button1_Click ְІ఍ந‫ב‬ёಶΞͽۡତ‫ײ‬ Ψ unmanaged ‫ב‬ёಶည‫ײ‬Ψ˘ਠ۞.NET ‫ב‬ё˘ᇹĄ Ϥ‫ ٺ‬Managed ᑕϡ඀ё‫ײ‬Ψ Unmanaged ᑕϡ඀ёᅮࢋֹϡ .NET ۞ PInvoke ‫ ڇ‬ચ Ă Я ѩ ԧ ࣇ υ ื д Windows ܑ ಏ ۞ uses ή ̄ ̚ ΐ ˢ System.Runtime.InteropServices ఺࣎‫׻‬Щ۩มĈ uses System.Drawing, System.Collections, System.ComponentModel, System.Windows.Forms, System.Data, System.Runtime.InteropServices;

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-27

னдበᛌ֭ͷેҖቑּ.NET ᑕϡ඀ёĂᕇᏴ Windows ܑಏ̚۞ ButtonĂ Г‫ٺ‬ฟୁᑫ९၆ྖ஼̚Ᏼፄ˘࣎ AVI ᑫ९Ă֤ᆃಶົт˭ࢬ۞‫࣎׌‬ဦԛٙϯ ਕૉᇫ‫ ٸ‬AVI ᑫ९˞Ă఺࣎ቑּ˵ពϯ˞.NET ۞ Windows ܑಏ‫ײ‬Ψ֭ͷ ֹϡ VCL ۞ܑಏֽซҖ̍үĄ

னдГឰԧࣇΐˢ˘࣎ΑਕĂ֤ಶߏឰ Win32 DLL ਕૉа็ᇴࣃа.NET ᑕ ϡ඀ёĄԧࣇԓ୕ឰ Win32 DLL ᇫ‫ ٸ‬AVI ᑫ९‫ޢ‬ਕૉа็˘࣎ੈिа.NET ᑕϡ඀ёĂЯѩឰԧࣇ࣒Լ Win32 DLL ۞ DoPlayAVI ‫ב‬ё۞ࣧ‫ݭ‬ឰιତ‫צ‬ ‫࣎׌‬ણᇴĂ‫̚׎‬ௐ˟࣎ણᇴΞͽа็ᇴࣃග .NET ᑕϡ඀ёĄ˭ࢬߏ࣒Լ‫ޢ‬ ۞ Win32 DLL ۞඀ёಏ̮Ĉ unit ufmMain; interface uses

8-28

ᑕϡ඀ёฟ൴͘Ί

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, MPlayer; type TfrmMain = class(TForm) MediaPlayer1: TMediaPlayer; Panel1: TPanel; procedure MediaPlayer1Notify(Sender: TObject); private { Private declarations } resultStr : String; procedure DoSetupWorks; public { Public declarations } property ResultString : String read resultStr; end; procedure DoPlayAVI(const sAVIFile : PChar; sResult : PChar); stdcall; var frmMain: TfrmMain; implementation {$R *.dfm} procedure DoPlayAVI(const sAVIFile : PChar; sResult : PChar); stdcall; begin if (FileExists(sAVIFile)) then begin FreeAndNil(frmMain); frmMain := TfrmMain.Create(nil); frmMain.MediaPlayer1.FileName := sAVIFile; frmMain.MediaPlayer1.Open; frmMain.Show; frmMain.DoSetupWorks; StrPCopy(sResult, frmMain.ResultString); frmMain.MediaPlayer1.Play; end; end; const ModeStr: array[TMPModes] of string = ('Not ready', 'Stopped', 'Playing', 'Recording', 'Seeking', 'Paused', 'Open'); procedure TfrmMain.DoSetupWorks; begin resultStr := frmMain.MediaPlayer1.FileName + 'ᇫ‫ ٺٸ‬: ' + DateTimeToStr(Now); end; procedure TfrmMain.MediaPlayer1Notify(Sender: TObject); begin

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-29

if (ModeStr[frmMain.MediaPlayer1.Mode] = 'Stopped') then begin frmMain.MediaPlayer1.Close; FreeAndNil(frmMain); end; end; end.

Ϥ‫ ٺ‬Win32 DLL ߏа็фҚᇴࣃа.NET ᑕϡ඀ёĂ҃.NET ֹϡ۞фҚॾ ёߏͽ Null ઇࠎඕԍĂ‫ ׶‬Delphi ۞фҚॾё̙ТĂЯѩ༊ DoPlayAVI ԯ а็фҚᇴࣃ๱ˢι۞ௐ˟࣎ણᇴॡĂυื‫ײ‬Ψ StrPCopy ԯ Delphi ۞фҚ ॾё޿֓јͽ Null ઇࠎඕԍ۞фҚॾёĄ Га‫ז‬ቑּ.NET ᑕϡ඀ё̚Ă࣒Լ DoPlayAVI ۞ࣧ‫ݭ‬т˭Ĉ [DllImport('PDllService.dll', CharSet=CharSet.Ansi)] procedure DoPlayAVI(const sName : String; sb1 : StringBuilder); external;

ତ඾࣒Լ Button1_Click ְІ఍ந‫ב‬ёт˭Ĉ procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs); var sb1 : StringBuilder; begin sb1 := StringBuilder.Create(120); if (ofdAVI.ShowDialog = System.Windows.Forms.DialogResult.OK) then begin DoPlayAVI(ofdAVI.FileName, sb1); Self.TextBox1.Text := sb1.ToString; end; end;

д Button1_Click ֹ̚ϡ˞ StringBuilder ઇࠎ‫ײ‬Ψ DoPlayAVI ۞ௐ˟࣎ણ ᇴĂ఺ߏЯࠎௐ˟࣎ણᇴົତ‫צ‬ଂ Win32 DLL а็۞ેҖඕ‫ڍ‬Ą னдበᛌ֭ͷેҖቑּ.NET ᑕϡ඀ёĂᕇᏴ Windows ܑಏ̚۞ ButtonĂ Г‫ٺ‬ฟୁᑫ९၆ྖ஼̚Ᏼፄ˘࣎ AVI ᑫ९Ă֤ᆃಶົт˭ࢬ۞‫࣎׌‬ဦԛٙϯ ਕૉᇫ‫ ٸ‬AVI ᑫ९֭ͷቑּ.NET ᑕϡ඀ё˵ົពϯଂ Win32 DLL а็۞ඕ ‫ڍ‬ᇴࣃĈ

8-30

ᑕϡ඀ёฟ൴͘Ί

Delphi 8 for .NET д‫ײ‬Ψ unmanaged ᑕϡ඀ёॡĂੵ˞Ξͽֹϡ.NET ೩ֻ ۞ DllImport ᛳّ̝γĂ˵Ξͽֹϡ Delphi ็௚۞ᐖၗ‫ײ‬ΨၚּĂּтд ݈ࢬቑּ.NET ᑕϡ඀ё̚၆‫ ٺ‬DoPlayAVI ‫ב‬ё˵Ξͽֹϡт˭۞‫ކ‬Әࣧ ‫ݭ‬Ă఺‫ ݈ͽ׶‬Delphi For Win32 ֹϡ۞ᐖၗ‫ײ‬Ψၚּᄬ‫˘ߏڱ‬ᇹ۞Ą const DLLLibrary = 'PDllService.dll'; procedure DoPlayAVI(const sName : String; sb1 : StringBuilder); external DLLLibrary;

ฟ൴ Win32 ‫ײ‬Ψ.NET ᑕϡ඀ё Delphi 8 for .NET ੵ˞Ξͽ‫ײ‬Ψ unmanaged ᑕϡ඀ё̝γĂDelphi 8 for .NET ۞በᛌጡ˵೩ֻ˞পҾ۞Αਕ̯ధ Unmanaged ᑕϡ඀ёۡତ‫ײ‬Ψ Ϥ Delphi 8 for .NET ฟ൴۞ AssemblyĄϤ‫ ٺ‬Delphi 8 for .NET ೩ֻ۞఺჌ Αਕ̙ߏᖣϤ PInvoke ‫ڇ‬ચĂЯѩдેҖड़த˯ͧྵԣిĂ҃ͷ˵Ξͽд Managed ‫ ׶‬Unmanaged ඀ёቅֹ̚ϡ˘࡭۞ྤफ़‫ݭ‬ၗĄ дώ̈༼̚૟ᄲ‫ځ‬тңឰ Win32 ۞ᑕϡ඀ёᖣϤ Delphi 8 for .NET ೩ֻ۞ ఺࣎Αਕֽ‫ײ‬Ψ.NET ᑕϡ඀ёĄϤ‫ٺ‬.NET ߛ॰೩ֻ˞ధк۞‫ڇ‬ચĂЯѩ Win32 ᑕϡ඀ёΞͽᖣϤ఺჌ԫఙд Win32 ᑕϡ඀ёֹ̚ϡ.NET ߛ॰೩ֻ ۞‫ڇ‬ચĄдତ˭ֽ۞ቑּ̚૟ֹϡ Delphi 7 ฟ൴˘࣎ Windows ᑕϡ඀ёĂ Гֹϡ Delphi 8 for .NET ฟ൴˘࣎ AssemblyĂ൒‫ޢ‬ឰ Windows ᑕϡ඀ё ‫ײ‬Ψ఺࣎ Assembly ೩ֻ۞‫ڇ‬ચĄ

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-31

ฟ൴.NET Assembly ࢵАд Delphi 8 for .NET ፋЪ൴णᒖဩ̚ᕇᏴ New Items ၆ྖ஼̚۞ Library ဦညͽ‫ޙ‬ϲ˘࣎ Assembly ૞९Ĉ

д Assebmly ۞ Library ඀ёಏ̮̚ᇤᆷт˭۞඀ёቅĈ library lbNETService; {$UNSAFECODE ON} uses System.Text; procedure GetNETVersion(var sVersion : string; var iLen : Integer); begin sVersion := Environment.Version.ToString; iLen := sVersion.Length; end; exports GetNETVersion; begin end.

ࢋឰ Delphi 8 for .NET ۞ Assembly ̚۞‫ב‬ёਕૉజ Win332 ᑕϡ඀ё‫ײ‬ ΨĂ֤ᆃυืд඀ёቅֹ̚ϡ {$UNSAFECODE ON}በᛌጡ޽΄Ă֭ͷֹ ϡ exports ᙯᔣф‫ؠ‬ཌྷᏮ΍۞‫ב‬ёĄ

8-32

ᑕϡ඀ёฟ൴͘Ί

д ˯ ࢬ ۞ ඀ ё ቅ ̚ ֹ ϡ exports ᙯ ᔣ ф Ꮾ ΍ ˞ GetNETVersion ‫ ב‬ё Ă GetNETVersion х‫˞פ‬.NET ߛ॰۞ Environment ᙷҾ۞ Version পّࣃֽ ‫଀פ‬.NET ેҖᒖဩ۞‫ۍ‬ώྤੈĄ னдበᛌ఺࣎૞९ĂಶΞͽ଀‫ͽז‬.DLL ඕԍ۞ AssemblyĄ

ฟ൴ Windows ᑕϡ඀ё а‫ ז‬Delphi 7 ۞ፋЪ൴णᒖဩ̚‫ޙ‬ϲ˘࣎ Window ᑕϡ඀ё૞९Ă֭ͷд VCL ܑಏ̚ΐˢ TLabelEdit ‫ ׶‬TButton ̮Іт˭ٙϯĈ

ତ඾д VCL ܑಏ۞඀ёಏ̮̚ᇤᆷт˭۞඀ёቅĈ unit fmWin32Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) edtNETVersion: TLabeledEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-33

Form1: TForm1; implementation {$R *.dfm} const MyLib = 'lbNETService.dll'; procedure GetNETVersion(var sVersion : string; var iLen : Integer); stdcall; external MyLib name 'GetNETVersion'; procedure TForm1.Button1Click(Sender: TObject); var sVersion : String; iLen : Integer; begin GetNETVersion(sVersion, iLen); edtNETVersion.Text := sVersion; end; end.

д VCL ܑ ಏ ۞ TButton ۞ OnClick ְ І ఍ ந ‫ ב‬ё ̚ ‫ ײ‬Ψ ˞ ݈ ࢬ .NET Assembly Ꮾ΍۞ GetNETVersion ‫ב‬ёͽ‫଀פ‬.NET ‫ۍ‬ώྤੈĄࠎ˞ਕૉј Α‫ײ‬Ψ.NET Assembly Ꮾ΍۞‫ב‬ёĂWindow ᑕϡ඀ёυื‫ކ‬Әࢋ‫ײ‬Ψ ۞.NET ‫ב‬ё۞ࣧ‫ݭ‬ĄЯѩд˯ࢬ۞඀ёቅ̚‫ކ‬Ә˞ GetNETVersion ۞‫ב‬ё ࣧ‫ݭ‬Ă‫˞ځ޽̚׎‬Βӣ‫ײ‬Ψ‫ב‬ё۞ DLL ЩჍĂֹϡ۞‫ײ‬ΨၚּඈĄϤ‫ٺ‬.NET д̰‫ֹߏ˯ؠ‬ϡ stdcall ۞‫ײ‬ΨၚּĂЯѩд˯ࢬ۞‫ב‬ёࣧ‫ކݭ‬Ә̚‫ֹܮ‬ϡ˞ stdcall ‫ײ‬ΨၚּĄ னдበᛌ఺࣎ Window ᑕϡ඀ё֭ͷેҖιĂ༊൒ԧࣇυืቁ‫ ؠ‬Window ᑕϡ඀ё‫׶‬.NET Assembly ߏҜ‫࠹ٺ‬Т۞ϫᐂ˭Ă֤ᆃಶΞͽ࠻‫ ז‬Window ᑕϡ඀ёјΑ۞‫ײ‬Ψ˞.NET Assembly ೩ֻ۞‫ڇ‬ચ֭ͷពϯ.NET ‫ۍ‬ώྤੈ д VCL ܑಏ̚Ăт˭ٙϯĈ

8-34

ᑕϡ඀ёฟ൴͘Ί

.NET ߛ॰೩ֻ˞‫ܧ‬૱ᖳಱ۞ΑਕĂּт.NET ۞щБ‫ڇ‬ચᙷҾ೩ֻ˞‫ޝ‬р۞ ΑਕĂдֹϡ˯˵ͧ Window API ֽ଀ट‫୻׶ٽ‬຾ĂWindow ᑕϡ඀ё˵Ξ ͽᖣϤ˯ࢬ੅ኢ۞ԫఙд.NET Assembly ̚೩ֻ.NET ۞щБ‫ڇ‬ચĂГឰ Window ᑕϡ඀ё‫ײ‬ΨֹϡĄனдಶឰԧࣇᚶᜈ࣒Լቑּ.NET Assembly ͽ ̈́ Window ᑕϡ඀ёֽ࠻࠻тңд Win32 ᑕϡ඀ёֹ̚ϡ.NET ۞щБ‫ڇ‬ ચĄ а‫ז‬.NET Assembly ૞९̚Ăΐˢт˭۞඀ёቅĈ library lbNETService; {$UNSAFECODE ON} uses System.Text, System.Security.Principal, System.Threading, System.Security.Policy; procedure GetNETVersion(var sVersion : string; var iLen : Integer); begin sVersion := Environment.Version.ToString; iLen := sVersion.Length; end; procedure GetSecurityInfo(var sType : string; var sAutheticated : String; var sName : String; var sError : String); var myPrincipal : IPrincipal; begin AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal) ; try myPrincipal := System.Threading.Thread.CurrentPrincipal; sType := myPrincipal.Identity.AuthenticationType; if (myPrincipal.Identity.IsAuthenticated) then sAutheticated := myPrincipal.Identity.IsAuthenticated.TrueString

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-35

else sAutheticated := myPrincipal.Identity.IsAuthenticated.FalseString; sName := myPrincipal.Identity.Name; except on ex : Exception do sError := ex.Message; end; end; exports GetNETVersion, GetSecurityInfo; begin end.

˯ࢬ۞඀ёቅΐˢ˞˘࣎າ۞Ꮾ΍‫ב‬ё GetSecurityInfoĂGetSecurityInfo ᖣϤ‫ײ‬Ψ.NET ߛ॰۞щБ‫ڇ‬ચᙷҾֽх‫ֱ˘פ‬щБྤੈĂּтϫֹ݈ϡ۞ щБរᙋ‫ݭ‬ၗͽ̈́൳ᐂ۞ֹϡ۰ЩჍඈྤੈĄGetSecurityInfo ତ‫צ‬α࣎ var ‫ݭ‬ၗ۞ણᇴĂϤ‫࣎఺ٺ‬.NET Assembly ۡତֹϡ˞ Delphi 8 for .NET በᛌ ጡ೩ֻ۞পҾΑਕĂЯѩ̙֭ᅮࢋֹϡ StringBuilder ᙷҾĄ ౵‫ޢ‬በᛌ఺࣎.NET Assembly ૞९֭ͷயϠ౵າ۞ DLLĄ Га‫ ז‬Delphi 7 ۞ Window ᑕϡ඀ё૞९Ă࣒Լ VCL ܑಏт˭Ĉ

д˯ࢬ۞ VCL ܑಏ̚ԧࣇΐˢ˞α࣎ᗝγ۞ TLabelEdit ̮Іͽ̈́˘࣎າ۞ TButton ̮ІĄ ତ඾࣒Լ VCL ܑಏ඀ёಏ̮т˭Ĉ

8-36

ᑕϡ඀ёฟ൴͘Ί

unit fmWin32Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) edtNETVersion: TLabeledEdit; Button1: TButton; edtType: TLabeledEdit; edtAuthenticated: TLabeledEdit; edtName: TLabeledEdit; Button2: TButton; edtError: TLabeledEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} const MyLib = 'lbNETService.dll'; procedure GetNETVersion(var sVersion : string; var iLen : Integer); stdcall; external MyLib name 'GetNETVersion'; procedure GetSecurityInfo(var sType : string; var sAutheticated : String; var sName : String; var sError : String); stdcall; external MyLib name 'GetSecurityInfo'; procedure TForm1.Button1Click(Sender: TObject); var sVersion : String; iLen : Integer; begin GetNETVersion(sVersion, iLen); edtNETVersion.Text := sVersion; end; procedure TForm1.Button2Click(Sender: TObject); var

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-37

sType : String; sAutheticated : String; sName : String; sError : String; begin GetSecurityInfo(sType, sAutheticated, sName, sError); edtType.Text := sType; edtAuthenticated.Text := sAutheticated; edtName.Text :=sName; edtError.Text := sError; end; end.

˯ ࢬ ۞ ඀ ё ቅ Т ᇹ ۞ ‫ ކ‬Ә ˞ GetSecurityInfo ۞ ‫ ב‬ё ࣧ ‫ ݭ‬Ă ኛ ‫ ڦ‬ຍ GetSecurityInfo д.NET ඀ёቅ‫ ׶‬Win32 ඀ёቅ̚۞ࣧ‫ކݭ‬Әౌߏ˘ᇹ۞Ą າ ΐ ˢ ۞ TButton ̮ І ۞ OnClick ְ І ఍ ந ‫ ב‬ё ˵ ߏ ۡ ତ ‫ ײ‬Ψ GetSecurityInfo ಶည GetSecurityInfo ߏ˘ਠ۞ Win32 ‫ב‬ё˘ᇹĄ னдበᛌ֭ͷГѨેҖቑּ Window ᑕϡ඀ёĂ˭ဦಶߏેҖ۞ඕ‫ڍ‬Ąԧࣇ Ξͽ࠻‫ ז‬Window ᑕϡ඀ё‫ڍ‬൒ΞͽᖣϤ఺࣎ԫఙֹֽϡ.NET ߛ॰೩ֻ۞ щБ‫ڇ‬ચĄ

т‫ڍ‬᝝۰ຐซ˘Վᒢྋࠎ̦ᆃ Delphi 8 for .NET Ξͽֹϡ఺჌ԫఙ‫ײ‬ Ψ.NET AssemblyĂ֤ᆃΞͽֹϡ.NET SDK ೩ֻ۞ Ildasm ֽͅ௡ᛌቑ ּ.NET Assembly ಶΞͽ˘᎚‫۞̚׎‬๸৪Ą˭ࢬߏтңֹϡ Ildasm ͅ௡ᛌ ቑּ.NET Assembly ۞‫΄׻‬ЕĈ Ildasm lbNETService.dll /linenum /out: lbNETService.il

8-38

ᑕϡ඀ёฟ൴͘Ί

఺࣎‫΄׻‬ЕΞͽயϠ lbNETService.il ఺࣎Βӣ MSIL ̬̚ቅ۞ᑫ९̰टĂд Delphi 8 for .NET ̚ฟୁ lbNETService.il ಶΞͽд‫ז࠻̚׎‬т˭۞̰टĞ༊ ൒Ă᝝۰ΞͽֹϡЇң۞͛фበᏭጡֽฟୁ lbNETService.ilğĈ д lbNETService.il ̚ Delphi 8 for .NET በᛌጡдቑּ.NET Assembly யϠ ˞෍ᑢܑ۞Ҝொྤੈ۩มĂдՏ˘࣎Ҝொྤੈ۩ม̚ಶߏ.NET Assembly ၆ γᏮ΍۞‫ב‬ё۞ҜӬĈ // Image base: 0x07030000 .vtfixup [1] int32 fromunmanaged at D_00018000 // 0600036E .vtfixup [1] int32 fromunmanaged at D_00018004 // 0600036F

т‫ڍ‬ԧࣇд lbNETService.il ຩವ GetNETVersion ‫ ׶‬GetSecurityInfo ఺‫࣎׌‬ Ꮾ΍‫ב‬ёĂಶΞͽ࠻‫۞ࢬ˭ז‬඀ёቅĂд GetNETVersion ‫ ׶‬GetSecurityInfo ‫ב‬ё̶̚Ҿԯ‫ב‬ёҜӬ๱ˢ࠹၆۞Ҝொྤੈ۩ม̝̚ć .method public static void GetNETVersion(string& sVersion, int32& iLen) cil managed { .vtentry 1 : 1 .export [2] as GetNETVersion // Code size 22 (0x16) .maxstack 2 .language '{AA3A73A6-17A4-429B-8871-217E4D1B043D}', '{486E5F43-923B-41AD-A1CC-446A84514A96}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 9:0 'F:\\D8Docs\\Demos\\ManagedAndUnmanaged\\Demo2\\lbNETService.dpr' IL_0000: ldarg.0 IL_0001: call class [mscorlib]System.Version [mscorlib]System.Environment::get_Version() IL_0006: callvirt instance string [mscorlib]System.Version::ToString() IL_000b: stind.ref .line 10:0 IL_000c: ldarg.1 IL_000d: ldarg.0 IL_000e: ldind.ref IL_000f: call instance int32 [mscorlib]System.String::get_Length() IL_0014: stind.i4 .line 11:0 IL_0015: ret } // end of method Unit::GetNETVersion .method public static void GetSecurityInfo(string& sType, string& sAutheticated, string& sName, string& sError) cil managed {

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-39

.vtentry 2 : 1 .export [1] as GetSecurityInfo // Code size 100 (0x64) .maxstack 3 .locals init ([0] class [mscorlib]System.Exception ex, [1] class [mscorlib]System.Security.Principal.IPrincipal myPrincipal) .line 17:0 IL_0000: call class [mscorlib]System.AppDomain [mscorlib]System.AppDomain::get_CurrentDomain() IL_0005: ldc.i4.2 IL_0006: callvirt instance void [mscorlib]System.AppDomain::SetPrincipalPolicy(valuetype [mscorlib]System.Security.Principal.PrincipalPolicy) .line 19:0 .try { IL_000b: call class [mscorlib]System.Security.Principal.IPrincipal [mscorlib]System.Threading.Thread::get_CurrentPrincipal() IL_0010: stloc.1 .line 20:0 IL_0011: ldarg.0 IL_0012: ldloc.1 IL_0013: callvirt instance class [mscorlib]System.Security.Principal.IIdentity [mscorlib]System.Security.Principal.IPrincipal::get_Identity() IL_0018: callvirt instance string [mscorlib]System.Security.Principal.IIdentity::get_AuthenticationType() IL_001d: stind.ref .line 21:0 IL_001e: ldloc.1 IL_001f: callvirt instance class [mscorlib]System.Security.Principal.IIdentity [mscorlib]System.Security.Principal.IPrincipal::get_Identity() IL_0024: callvirt instance bool [mscorlib]System.Security.Principal.IIdentity::get_IsAuthenticated() IL_0029: brfalse.s IL_0034 .line 22:0 IL_002b: ldarg.1 IL_002c: ldsfld string [mscorlib]System.Boolean::TrueString IL_0031: stind.ref IL_0032: br.s IL_003b .line 24:0 IL_0034: ldarg.1 IL_0035: ldsfld string [mscorlib]System.Boolean::FalseString IL_003a: stind.ref .line 25:0 IL_003b: ldarg.2 IL_003c: ldloc.1

8-40

ᑕϡ඀ёฟ൴͘Ί

IL_003d: callvirt instance class [mscorlib]System.Security.Principal.IIdentity [mscorlib]System.Security.Principal.IPrincipal::get_Identity() IL_0042: callvirt instance string [mscorlib]System.Security.Principal.IIdentity::get_Name() IL_0047: stind.ref IL_0048: leave.s IL_0063 .line 27:0 } // end .try catch [mscorlib]System.Exception { IL_004a: dup IL_004b: dup IL_004c: stsfld object Borland.Delphi.System.Unit::@ExceptObject IL_0051: pop IL_0052: stloc.0 .line 28:0 IL_0053: ldarg.3 IL_0054: ldloc.0 IL_0055: callvirt instance string [mscorlib]System.Exception::get_Message() IL_005a: stind.ref IL_005b: ldnull IL_005c: stsfld object Borland.Delphi.System.Unit::@ExceptObject IL_0061: leave.s IL_0063 .line 30:0 } // end handler IL_0063: ret } // end of method Unit::GetSecurityInfo

ֹϡ Unmanaged ඀ёቅฟ൴ᑕϡ඀ё

8-41

8-42

ᑕϡ඀ёฟ൴͘Ί

ֹϡ Delphi 8 for .NET ฟ൴ಡܑ Delphi 8 for .NET ೩ֻ˞Ϥ Nevrona ̳Φ΍‫ ۞ݡ‬Rave ReportsĄֹϡ RaveĂ ଋΞͽࠎଋ۞ Delphi 8 for .NET ᑕϡ඀ёฟ൴ΑਕԆፋ۞ಡܑĂଋΞͽ೩ֻ ಡܑͽ̈́‫މ‬ᄦ̼ਕ˧ගֹϡ۰ֹֽϡĄੵѩ̝γĂDelphi 8 for .NET ̰‫۞ܢ‬ ComponentOne ̍‫˵׍‬೩ֻ˞‫ޙ‬ϲ‫׶‬யϠಡܑ۞̮ІĂ఺ֱ̮І˵ΞͽፋЪ ‫ז‬ଋ۞ᑕϡ඀ё̚Ą ώౢ੅ኢ˞Ĉ y

ֹϡ Rave Reports

д Delphi 8 for .NET ֹ̚ϡ Rave Reports Delphi 8 for .NET ፋЪ൴णᒖဩ͚೯˞ፋЪߙֱ Rave Reports ‫ۏ‬І‫ז‬ଋ۞ ᑕϡ඀ё̚۞ਕ˧Ą఺࣎ፋЪਕ˧̯ధଋֹϡ Rave Reports నࢍछ‫ޙ‬ϲಡܑ ٕߏۡତ‫ٳ‬Ѣ Rave Reports ActiveX ̮І‫ז‬ଋ۞ Windows Forms ‫ ׶‬Web

ֹϡ Delphi 8 for .NET ฟ൴ಡܑ

9-1

Forms నࢍछ̚ĄଋΞͽ̯ధଋ۞ᑕϡ඀ёֹϡ۰‫ޙ‬ϲ‫׶‬ពϯ΁ࣇҋ̎۞ಡ ܑĂٕߏពϯ΁ࣇҋֹ̎ϡ Rave Reports ‫ޙ‬ϲ۞ಡܑĄDelphi 8 for .NET ‫ ׶‬Rave Reports ۞ፋЪ̯ధଋĈ y

д૞९̚ΐˢາ۞ಡܑ‫ۏ‬ІĄ

y

‫ٳ‬Ѣ Rave Reports ActiveX ‫ۏ‬І‫ ז‬Windows ܑಏ ‫ ׶‬Web ܑಏ̝̚Ą

д Delphi 8 for .NET ̚‫ޙ‬ϲາ۞ಡܑ ଋΞͽд Delphi 8 for .NET ̚ΐˢಡܑĂಶညଋֹϡ‫۞΁׎‬ௐ 3 ̮͞І˘ ᇹĄಡܑߏజᐼхࠎ፾ϲ۞ Rave Report ‫ۏ‬ІĄଋΞͽдЇңᅮࢋ‫ײ‬Ψٕߏ யϠಡܑ۞ᑕϡ඀ё̚ણ҂఺࣎ಡܑ‫ۏ‬ІĄ༊ଋ‫ޙ‬ϲາ۞ᑕϡ඀ёॡĂଋΞ ͽд૞९გநࣶ̚ΐˢ఺࣎ಡܑ‫ۏ‬І۞ણ҂ĄRave Reports ˵೩ֻ˞ాඕଋ ۞ಡܑ‫ۏ‬І‫ྤז‬फ़ֽ໚Ă఺̯ధಡܑ‫ۏ‬Іֹϡ౵̈́ॡ۞ྤफ़ऱྤफ़ֽજၗ۞ ‫ޙ‬ϲಡܑĄࢋᒢྋՀкѣᙯ Rave Reports ͽ̈́тңాඕ Rave Reports ‫ྤז‬ फ़ֽ໚۞ྤੈĂኛણ҂ Rave Reports ۞ቢ˯ᅃӄĄ

ֹϡ Rave Reports ActiveX ̮І ଋΞͽ‫ٳ‬ѢЇң Rave Reports Ꮾ΍۞ ActiveX ‫ۏ‬І‫ז‬ଋ۞ᑕϡ඀ё̚Ą Delphi 8 for .NET ۞̍‫׍‬ሹ೩ֻ˞ٙѣΞֹϡ۞ ActiveX ‫ۏ‬ІĄଋΪᅮࢋд నࢍॡഇ‫ٳ‬Ѣ‫ۏ‬І‫ ז‬Windows ܑಏ ٕߏ Web ܑಏ̝̚Ą๱ˢዋ༊۞প ّࣃ֭ͷд඀ёቅበᏭጡ࣒̚ԼЇң۞඀ёቅĄଋΞਕᅮࢋᖣϤଂщ྅ ۞.NET ̮І၆ྖ஼̚Ᏼፄ̮ІĂͽࢦనଋ۞.NET ̮І֭ͷᏴፄଋຐពϯ۞ ActiveX ̮ІĄ

9-2

ᑕϡ඀ёฟ൴͘Ί

Related Documents

(7) Developer
November 2019 17
Developer Guide
November 2019 44
Developer 9ids
November 2019 16
Developer 9ids
May 2020 10