
Delphiã®æä¹
çãªè¬åã«ããããããããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ãã®ãã©ãããã©ãŒã ã¯å¥åšã§ãããæææš©ã®å€æŽã«äŒŽã
ã2çªç®ã®é¢šãå¹ããŠãäžçäžã®äœå人ãã®éçºè
ã«ãšã£ãŠäž»èŠãªããŒã«ã§ããç¶ããŠããŸãã
ä»ã®DBMSãšåæ§ã«ãDelphiã¯CachéDBMSãšããŸãããåãããŸãã
Delphiããã以äžã®ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠCachéã«æ¥ç¶ã§ããŸãã
ãã®èšäºã§ã¯ãCachéDBMSãæäœãããšãã«ãªããžã§ã¯ãã»ã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããäŸã説æããŸãã
ããããæåã«ãWindows ExplorerããçŽæ¥å®è¡ã§ããVBScriptã®çãäŸãããã€ã玹ä»ããŸãã
çŽæ¥ã¢ã¯ã»ã¹ã®äŸïŒ
Set f = CreateObject("VISM.VisMCtrl.1") f.Server="CN_IPTCP:localhost[1972]:_system:@ SYS" f.NameSpace="SAMPLES" f.Execute("=$zv")
ãªã¬ãŒã·ã§ãã«ã¢ã¯ã»ã¹ã®äŸïŒ
Set cn=Createobject("ADODB.Connection") cn.ConnectionString="DRIVER={InterSystems ODBC35}; SERVER=127.0.0.1; PORT=1972; DATABASE=SAMPLES; UID=_system; PWD=SYS" cn.open WScript.Echo "Succesfully!"
ãªããžã§ã¯ãã¢ã¯ã»ã¹ã®äŸïŒ
Set f = CreateObject("CacheActiveX.Factory") Set rs = CreateObject("CacheActiveX.ResultSet") If Not f.IsConnected() Then f.Connect("cn_iptcp:127.0.0.1[1972]:SAMPLES:_SYSTEM:SYS") Set rs=f.DynamicSQL("select TOP 3 * from Sample.Person") rs.Execute() while rs.Next WScript.Echo rs.Get("SSN")
åæ§ã«ãJScriptãVisual BasicãC ++ Builderãªã©ã䜿çšããŠCachéDBMSãæäœã§ããŸãã
泚ïŒããå€ãã®æ©èœãæäŸããJavaããã³.NETã®ãã€ãã£ãã€ã³ã¿ãŒãã§ã€ã¹ãããã€ããããŸãã
åŸæããã³æ©æãã€ã³ãã£ã³ã°
Delphiã®Cachéãªããžã§ã¯ããæäœããã«ã¯ã2ã€ã®ã¢ãããŒãããããŸãã
ãããã®ã¢ãããŒãã«ã¯ããããé·æãšçæããããŸãããäºãã«çžæ®ºãããŸãã
é
延ãã€ã³ãã£ã³ã°ã§ã¯ãéçºè
ãã³ãŒããã³ããå©çšã§ããªããããã³ãŒãã®ééããç¯ãå¯èœæ§ãé«ããããã°ã©ã ã®å®è¡äžã«ã®ã¿æ€åºãããŸãã ã³ãŒãã¯åçã«å®è¡ããããããæäœã®é床ã¯äºåãã€ã³ãã£ã³ã°ããããããã«é
ããªããŸãã
ã¢ãŒãªãŒãã€ã³ãã£ã³ã°ã«ã¯ãããã®æ¬ ç¹ã¯ãããŸããããããŒã¿ããŒã¹å
ã®ãŠãŒã¶ãŒã¯ã©ã¹ã€ã³ã¿ãŒãã§ã€ã¹ãå€æŽãããšãã
ãCachéDBMSã®æ°ããããŒãžã§ã³ã«
åãæ¿ãããšãã¯ãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã®ãããã·ã¯ã©ã¹ãåçæããå¿
èŠããããããè²»çšãæ¯æãå¿
èŠããããŸãã
ãããã®ã¢ãããŒãã®äž¡æ¹ãçµã¿åãããããšã«ãããæé©ãªããã©ãŒãã³ã¹ãšäœ¿ãããããå®çŸã§ããŸãã
ãã®ã¢ãããŒãã¯é
延ãã€ã³ãã£ã³ã°ããã説æãããŠããªãããããã®èšäºã§ã¯äž»ã«äºåãã€ã³ãã£ã³ã°ã䜿çšããŸãã
Cachéãªããžã§ã¯ãã¯ãããã©ã«ãã§
Cã«ã€ã³ã¹ããŒã«ããã2ã€ã®ã©ã€ãã©ãªã䜿çšããŠåäœããŸã
ã\ Program Files \ Common Files \ InterSystems \ Cache \ ïŒ
- CacheObject.dll ïŒéæšå¥šïŒ;
- CacheActiveX.dll ïŒæšå¥šïŒã
ã€ã³ã¿ãŒã·ã¹ãã ãºã®éçºè
ã¯ã
Caché5.1以é ãæ°ãã
CacheActiveX.dllã©ã€ãã©ãªã®äœ¿çšã匷ããå§ãããŸãã
CacheObject.dllã©ã€ãã©ãª
㯠ãå€ãã¢ããªã±ãŒã·ã§ã³ãšã®äºææ§ã®ããã«ã®ã¿æ®ãããŠããŸãã ãããã£ãŠããã®èšäºã§ã¯
CacheActiveX.dllã«åºã¥ããŠ
説æããŸãã
ãããã®ã©ã€ãã©ãªãšãæ°ããããŒãžã§ã³ã«ã¢ããã°ã¬ãŒããããšãã«èæ
®ããå¿
èŠããã埮åŠãªéãã®éãã«ã€ããŠã¯
ããCacheObject.dllããã®ã¢ããã°ã¬ãŒãããåç
§ããŠãã ãã ã
äžèšã®ãã£ã¬ã¯ããªã§ãããªãã«åœ¹ç«ã€ä»ã®ãã¡ã€ã«ãèŠã€ããããšãã§ããŸãïŒ
- DelphiCallback.dll ;
- CacheList.ocx ;
- CacheQuery.ocx ;
- VISM.ocx
Delphiã§Cachéãªããžã§ã¯ãActiveXã³ã³ããŒãã³ããã€ã³ããŒãããã³ã€ã³ã¹ããŒã«ããŸã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãäºåãã€ã³ãã£ã³ã°ã䜿çšããŠCachéDBMSã®ãªããžã§ã¯ããæäœããããã«ãDelphiç°å¢ã§åºæ¬çãªã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ã€ã¹ãèšå®ããæ¹æ³ã«ã€ããŠèª¬æããŸãã é
延ãã€ã³ãã£ã³ã°ã䜿çšããã«ã¯ããã®ã»ã¯ã·ã§ã³ãã¹ãããã§ããŸãã
ã ãããé çªã«ïŒ
- ã¡ãã¥ãŒé
ç®[ ã³ã³ããŒãã³ã ] > [ã³ã³ããŒãã³ãã®ã€ã³ããŒã... ]ãéžæããŸãã


- ãŸãã CacheActiveX 2.0ã¿ã€ãã©ã€ãã©ãªãéžæããŸãã

- ã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ããããã¯ããŒã¯ã®ååãšä»ã®ãã©ã¡ãŒã¿ãŒãèšå®ããŸãã

- ãããŸã§ãã€ã³ã¹ããŒã«ããã«ã¢ãžã¥ãŒã«ãäœæããŸããã

- 次ã®ã©ã€ãã©ãªã«ã€ããŠæé 2ã4ãç¹°ãè¿ããŸãã
- CacheActiveX 2.0ã¿ã€ãã©ã€ãã©ãª ;
- CacheList ActiveXã³ã³ãããŒã«ã¢ãžã¥ãŒã« ã
- CacheQuery ActiveX Controlã¢ãžã¥ãŒã« ã
- DelphiCallback 1.0ã¿ã€ãã©ã€ãã©ãª ã
- VisM 7.2 ActiveXã³ã³ãããŒã« ã
- TL 1.0ã¿ã€ãã©ã€ãã©ãª ã
泚ïŒDelphiã«å«ãŸããŠããtlibimp.exeãŠãŒãã£ãªãã£ã䜿çšããŠã¢ãžã¥ãŒã«ãäœæããããšãã§ããŸãã
- ããã±ãŒãžã¿ã€ãã®æ°ãããããžã§ã¯ããäœæãã以åã«äœæãããã¹ãŠã®ã¢ãžã¥ãŒã«ãè¿œå ããŸãã ãããžã§ã¯ããã³ã³ãã€ã«ããããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã æçµçã«ã¯æ¬¡ã®ããã«ãªããŸãã


泚ïŒDelphiã®ä»¥åã®ããŒãžã§ã³ã§ã¯ãã¢ãžã¥ãŒã«ãäœæããããã»ã¹ãå°ãç°ãªããŸãã
- ã¡ãã¥ãŒé
ç®[ ãããžã§ã¯ã ] > [ã¿ã€ãã©ã€ãã©ãªã®ã€ã³ããŒã... ]ãéžæããŸãã

- äžèšã®æ®µèœãåç
§ããŠãã ããã
ã«ã¹ã¿ã ãããã·ã¯ã©ã¹ã®çæ
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãäºåãã€ã³ãã£ã³ã°ã䜿çšããŠCachéDBMSã®ãªããžã§ã¯ããæäœããããã®ã«ã¹ã¿ã ãããã·ã¯ã©ã¹ã®çæã«ã€ããŠèª¬æããŸãã é
延ãã€ã³ãã£ã³ã°ã䜿çšããã«ã¯ããã®ã»ã¯ã·ã§ã³ãã¹ãããã§ããŸãã
ãŸããå¿
èŠãªãã¹ãŠã®ãŠãŒã¶ãŒã¯ã©ã¹ãå«ãODLãã¡ã€ã«ãçæããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã
CachéDBMSã§æäŸããã
odl_generator.exeãŠãŒãã£ãªãã£ã䜿çšããŸãã
äŸ
odl_generator.exe -conn cn_iptcp:localhost[1972]:USER:_system:SYS -class-list test.txt -lib-name test -dir MIDL
ãã®äŸã§ã¯ããŠãŒãã£ãªãã£ã¯
USERé åã«æ¥ç¶ãã
test.txtãã¡ã€ã«ã«ãªã¹ããããŠããã¯ã©ã¹ã®ãããã·ã¯ã©ã¹ãçæããçµæã
MIDL \ test.odlãã¡ã€ã«ã«ä¿åããŸã泚 ïŒãã®ããã«ããŠååŸããããã¡ã€ã«ã¯ã CacheActiveX.dllã©ã€ãã©ãªã§äœ¿çšããããã®ãã®ã§ãã å€ãã©ã€ãã©ãªã§åäœããããã«èšèšãããODLãã¡ã€ã«ãçæããã«ã¯ã ïŒ
SYSTEM.OBJã¯ã©ã¹ã®ExportODLã¡ãœããã䜿çšããŸã
äŸ
set list= "%Library.Status,Sample.Person"
do $system .OBJ . ExportODL (list, "c:\MIDL\test.odl" , "-d" ,.err)
ODLãã¡ã€ã«ãåä¿¡ãããã®ã§ãTLBãã¡ã€ã«ãååŸããããã«ã³ã³ãã€ã«ãã次ã«PASãã¡ã€ã«ãååŸããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãVisual C ++éçºãããã«å«ãŸããŠãã
midl.exeãŸãã¯
mktypelib.exeãŠãŒãã£ãªãã£ã䜿çšã§ããŸãã
äŸ
midl /I . test.odl /tlb test.tlb tlibimp.exe -C- -P+ -Hr- -Ha- -Hs- -XM- test.tlb
NoteïŒCachéDBMS MACããã°ã©ã ã䜿çšããŠãäžèšã®ãã¹ãŠã®ã¹ããããèªååã§ããŸãã
ãµãŒããŒã§ã®æºåäœæ¥
ãã¹ãããŒã¿ããŒã¹ã«æ¬¡ã®ããŒã¿ã¯ã©ã¹ãäœæããŸãããã
///
Class pas.s Extends %SerialObject
{
/// (64-).
Property aInteger As %Integer ;
/// . - 50 .
Property aString As %String ;
}
/// .
Class pas.a Extends %Persistent
{
/// aA;
Index aAIndex On aA;
/// --, "". SQL foreign key.
Relationship aA As pas.test [ Cardinality = one, Inverse = aChilds ];
Property aInteger As %Integer ;
Property aString As %String ;
}
/// %occIO.inc .
Include %occIO
/// .
Class pas.test Extends %Persistent
{
/// , ;
Parameter EXTENTQUERYSPEC As ROWSPEC [ Flags = LIST ] = aBoolean,aInteger,aString,aDate,aTimeStamp" ;
/// (true/false/null);
Property aBoolean As %Boolean ;
Property aInteger As %Integer ;
Property aString As %String ;
/// ;
Property aDate As %Date ;
/// +;
Property aTimeStamp As %TimeStamp ;
/// (CLOB);
Property aMemo As %GlobalCharacterStream ;
/// (BLOB);
Property aPhoto As %GlobalBinaryStream ;
/// --, "". SQL .
Relationship aChilds As pas.a [ Cardinality = many, Inverse = aA ];
/// - ;
///<br> SQL
///<br> -.
Property aS As pas.s ;
/// - ;
///<br> SQL , , .
Property aListOfString As list Of %String ;
/// - ;
///<br> SQL , , .
Property aListOfA As list Of pas.a ;
/// - ;
///<br> SQL .
Property aArrOfString As array Of %String ;
/// - ;
///<br> SQL .
Property aArrOfA As array Of pas.a ;
/// .
/// <br> , .
Method %OnBeforeSave( insert As %Boolean ) As %Status [ Private , ServerOnly = 1 ]
{
;
write "Hello from Cache! (" , $$$CurrentClass , ":" , $$$CurrentMethod , ")" ,!
quit $$$OK
}
/// - : .
Query test1( ABoolean As %Boolean , AInteger As %Integer , AString As %String , ADate As %Date , ATimeStamp As %TimeStamp ) As %SQLQuery ( CONTAINID = 1 , ROWSPEC = "ID:%String,aBoolean:%Boolean,aInteger:%Integer,aString:%String,aDate:%Date,aTimeStamp:%TimeStamp" ) [ SqlProc ]
{
SELECT %ID , aBoolean , aInteger , aString , aDate , aTimeStamp FROM pas . test WHERE
( aBoolean = :ABoolean or :ABoolean is null )
AND ( aInteger = :AInteger or :AInteger is null )
AND ( aString = :AString or :AString is null )
AND ( aDate < :ADate or :ADate is null )
AND ( aTimeStamp <= :ATimeStamp or :ATimeStamp is null )
}
/// - : ""
///<br> %INLIST.
Query test2( AList As %List ) As %SQLQuery ( CONTAINID = 1 , ROWSPEC = "ID:%String,aBoolean:%Boolean,aInteger:%Integer,aString:%String,aDate:%Date,aTimeStamp:%TimeStamp" ) [ SqlProc ]
{
SELECT %ID , aBoolean , aInteger , aString , aDate , aTimeStamp FROM pas . test WHERE ID %INLIST :AList
}
/// .
ClassMethod test3( AList As %List ) As %Status
{
; AList
write AList
;
set ^pastest=AList
quit $$$OK
}
/// .
ClassMethod test4() As %Status
{
quit $$$ERROR ( $$$GeneralError , "My error!" )
}
/// .
ClassMethod test5( Arg1... As %List ) As %Status
{
;
write "Invocation has " , $get (Arg1, 0), " element" , $select (( $get (Arg1, 0)=1): "" , 1: "s" ),!
for i = 1 : 1 : $get (Arg1, 0)
{
write :( $data (Arg1(i))>0) "Argument[" ,i, "]:" ,?15, $get (Arg1(i), "<NULL>" ),!
}
quit $$$OK
}
/// : .
/// <br> .
/// <br>:
/// <br><var>ID</var> - ;
/// <br><var>A</var> - ;
/// <br><var>BLOB</var> - ;
/// <br><var>RS1</var> - , Borland ® MyBase (DataSnap (TM)) XML DataSet;
/// <br><var>RS2</var> - , Borland ® MyBase (DataSnap (TM)) XML DataSet;
ClassMethod test6(
ID As %String ,
ByRef A As pas.a ,
Output BLOB As %BinaryStream ,
Output RS1 As %CharacterStream ,
Output RS2 As %CharacterStream ) As %Status
{
// ,
set A. aString =999
//
set BLOB= ##class ( %GlobalBinaryStream ). %New ()
//
do BLOB. Write ( "123" )
//
set RS1= ##class ( %GlobalCharacterStream ). %New ()
set RS2= ##class ( %GlobalCharacterStream ). %New ()
// , XML TClientDataSet
set cds= ##class ( %XML.ZMyBaseDataSet ). %New ()
//
do cds. Prepare ( "select * from pas.a where id %inlist ?" )
//
do cds. SetArgs ( $listbuild (1,2,3,9))
// XML
do cds. XMLExportToStream (.RS1)
// ( )
do cds. Close ()
do cds. Prepare ( "select ID,aBoolean,aInteger,aString,aDate,aTimeStamp from pas.test" )
do cds. XMLExportToStream (.RS2)
do cds. Close ()
// ""
quit $$$OK
}
}
ãããã®ãããã·ã¯ã©ã¹ãšã次ã®ã¯ã©ã¹ã®ãããã·ã¯ã©ã¹ãçæããŸãã
- ïŒ
Library.ArrayOfDataTypes
- ïŒ
Library.ArrayOfObjects
- ïŒ
Library.ListOfObjects
- ïŒ
Library.ListOfDataTypes
- ïŒ
Library.RelationshipObject
çæãããPASãã¡ã€ã«ããããžã§ã¯ãã«æ¥ç¶ãããšãã¯ã©ã¹ã®æãéèŠãªã¡ãœãããšããããã£ãå©çšå¯èœã«ãªããŸãã
å¢ãNote ïŒã¹ããªãŒã ã¯ã©ã¹ããã³ãã®ä»ã®ã¯ã©ã¹ã¯ãCachéDBMSããã€ã³ããŒãããªãã§ãã ãã ããããã¯ãã§ã«CacheActiveX.dllã©ã€ãã©ãªã«æ¥ç¶ãããŠãããçæããããããã·ã¯ã©ã¹ãšäºææ§ããããŸããã
DBMSCachéãžã®æ¥ç¶
é
延ãã€ã³ãã£ã³ã°ïŒå€ãã©ã€ãã©ãªïŒïŒ
var _f:variant; begin _f:=CreateOleObject('CacheObject.Factory'); if _f.Connect(_f.ConnectDlg('+%up')) then ShowMessage('OK') else ShowMessage('ERROR');
é
延ãã€ã³ãã£ã³ã°ïŒæ°ããã©ã€ãã©ãªïŒïŒ
var _f:variant; begin _f:=CreateOleObject('CacheActiveX.Factory'); if _f.Connect(_f.ConnectDlg('+%up')) then ShowMessage('OK') else ShowMessage('ERROR');
äºåãã€ã³ãã£ã³ã°ïŒæ°ããã©ã€ãã©ãªïŒïŒ
type Tfm = class(TForm) f: TFactory; ... begin ... if f.Connect1(f.ConnectDlg('+%up')) then ShowMessage('OK') else ShowMessage('ERROR'); ...
泚 ïŒå€ãã©ã€ãã©ãªã¯ïŒ
Service_CacheDirectãµãŒãã¹ãšèªèšŒãããŠããªãã¢ã¯ã»ã¹ã®ã¿ã䜿çšã ãæ°ããã©ã€ãã©ãªã¯ïŒ
Service_Bindingsããã³ãã®ä»ã®ã¢ã¯ã»ã¹æ¹æ³ã䜿çšããŸãã
TFactobryã¯ã©ã¹ããã³ä»ã®ã¯ã©ã¹ã®ã¡ãœããã®è©³çŽ°ãªèª¬æã¯ã
ActiveX APIãªãã¡ã¬ã³ã¹ã«ãã
ãŸããã¢ãŒãªãŒãã€ã³ãã£ã³ã°ã䜿çšããŠã¯ãšãªãšã¡ãœãããåŒã³åºãäŸ
ã³ãŒã«ããã¯æ©èœã䜿çšãã
Delphiã®
CallBackæ©èœã䜿çšããã«ã¯ã
DelphiCallback.dllãã¡ã€ã«ã®æ¢è£œã®
TCallbackã¯ã©ã¹ã䜿çšããå¿
èŠã
ãããŸãã
var f:TFactory; Callback1: TCallback; mm: TMemo; ... f.SetOutput(Callback1.OleObject); ... procedure Tfm.Callback1TextChanged(Sender: TObject; const p_bstrText: WideString); begin mm.Lines.Append(p_bstrText); end;
ãã¹ãŠã®ããŒã¿ãåé€ãã
mm.Lines.Text:='KillExtent'#10#13;
ããŸããŸãªã¿ã€ãã®ãªããžã§ã¯ãã®äœæãå
¥åãä¿åãããã³è§£æŸã®äŸ
Sergey Kudinovã®èšäºãActiveXã§
äœæ¥ãããšãã®ãªããžã§ã¯ããéããæ©èœãCPP-bindingãã§èšäºãèªãããšãã§ããŸãã
ã³ãŒãäŸïŒ
... uses test_TLB, AxCtrls, ComObj, ActiveX, Types; ... const N = 3; var i: integer; _t: test_; _a: A; _s: s; rel: RelationshipObject; listStr: ListOfDataTypes; listA: ListOfObjects; arrStr: ArrayOfDataTypes; arrA: ArrayOfObjects; stream: IDispatch; begin Screen.Cursor := crSQLWait; mm.Lines.Text:='Save'#10#13; try try
ãšã¯ã¹ãã³ããªã¯ãšã¹ãïŒä¿åãããã¯ã©ã¹ã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãååŸïŒ
var mm: TMemo; rs: TResultSet; ... mm.Lines.Text:='Extent'#10#13; rs.ConnectTo(IResultSet(f.ResultSet('pas.test', 'Extent'))); rs.Execute; while rs.Next do begin mm.Lines.Append(Format('ID = %s',[rs.GetDataAsString(1)])); mm.Lines.Append(Format('aBoolean = %s',[rs.Get('aBoolean')])); mm.Lines.Append(Format('aInteger = %s',[rs.Get('aInteger')])); mm.Lines.Append(Format('aString = %s',[rs.Get('aString')])); mm.Lines.Append(Format('aDate = %s',[rs.Get('aDate')])); mm.Lines.Append(Format('aTimeStamp = %s',[rs.Get('aTimeStamp')])); mm.Lines.Append('-----'); end; rs.Close; rs.Disconnect;
ã¯ãšãªtest1
var i: integer; ... mm.Lines.Text:='test1'#10#13; rs.ConnectTo(IResultSet(f.ResultSet('pas.test', 'test1'))); rs.SetParam(1, null); rs.SetParam(2, 50); rs.SetParam(3, null); rs.SetParam(4, '03.03.2001'); rs.SetParam(5, '1900-01-02 12:34:55.0'); rs.Execute; while rs.Next do begin for i := 1 to rs.GetColumnCount do mm.Lines.Append(rs.GetColumnName(i)+' = '+rs.GetDataAsString(i)); mm.Lines.Append('-----'); end; rs.Close; rs.Disconnect;
ã¯ãšãªtest2
var i: integer; syslist: TSyslist; ... mm.Lines.Text:='test2'#10#13;
ã¡ãœããtest3ã ã¯ã©ã¹TSysListïŒCachéã®typeïŒ
ListïŒã®ãªããžã§ã¯ãã®æäœ
mm.Lines.Text:='test3'#10#13;
ã¡ãœããtest4ã ãšã©ãŒåŠç
mm.Lines.Text:='test4'#10#13; try test_(f.Static('pas.test')).test4(); except on E: Exception do begin mm.Lines.Append(E.Message); end; end;
Test5ã¡ãœãã
mm.Lines.Text:='test5'#10#13;
Test6ã¡ãœãã
ãã®äŸã§ã¯ã
ïŒ
XML.ZMyBaseDataSetã¯ã©ã¹ã䜿çšã
ãŸã ãããã¯ã
ãã¡ãã«ãããŸã ã ãã®å©ãã«ããããµãŒããŒäžã§
Borland®MyBaseïŒDataSnapïŒTMïŒïŒXML DataSetã®åœ¢åŒã§ããŒã¿ã圢æããããšãã§ããŸãã WebãµãŒãã¹ãå«ãã
cds1,cds2:TClientDataSet; ... var _a:a; __a,blob,rs1,rs2:IDispatch; cs1,cs2:ICharStream; begin mm.Lines.Text:='test6'#10#13; try _a:=a(f.OpenId('pas.a','1')); __a:=_a; test_(f.Static('pas.test')).test6('1',__a,blob,rs1,rs2); cs1:=ICharStream(rs1); cs2:=ICharStream(rs2); mm.Lines.Append('A.aString = '+_a.aString); mm.Lines.Append('BLOB.Size = '+IntToStr(IBinaryStream(blob).size)); mm.Lines.Append('RS1.Size = '+IntToStr(cs1.size)); mm.Lines.Append('RS2.Size = '+IntToStr(cs2.size)); cds1.XMLData:=cs1.Data; cds2.XMLData:=cs2.Data; finally _a.SYS_Close; _a:=nil; __a:=nil; blob:=nil; rs1:=nil; rs2:=nil; cs1:=nil; cs2:=nil; f.ForceSync; end;
Unicodeã®ããŒã¿ã®
ïŒ
XML.ZMyBaseDataSetã¯ã©ã¹ããã³ãã®ä»ã®æªå®çŸããŒã¿åããµããŒãããã«ã¯ãèªåã§å€æŽããå¿
èŠããããŸãã
ã¢ããªã±ãŒã·ã§ã³é
åž
ã¢ããªã±ãŒã·ã§ã³ã§å¿
èŠãªãã¹ãŠã®ãã©ã€ããŒãæ°ããã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããã«ã¯ã
CïŒ\ Program Files \ Common Files \ InterSystems \ Cache \ãã£ã¬ã¯ããªãããã¹ãŠã®ãã¡ã€ã«ïŒç°¡åã«ããããã«å¿
èŠãªãã¡ã€ã«ã®ã»ãããå¶éã§ããŸãïŒãã³ããŒãã
regsvr32ãŠãŒãã£ãªãã£ã䜿çšããŠãããã®äžéšãã·ã¹ãã ã«ç»é²ããå¿
èŠããããŸã
.exeäŸ
regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheQuery.ocx" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheFormWizard.dll" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheList.ocx" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\CacheActiveX.dll" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\vism.ocx" regsvr32.exe /s "C:\Program Files (x86)\Common Files\Intersystems\Cache\TL.dll"