!
ᑕϡёฟ൴͘Ί
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">
ଂ˯ࢬ۞̰टΞͽ࠻זՏ˘࣎ 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۞URLWeb 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
ᑕϡёฟ൴͘Ί