星期五, 七月 30, 2004

SOAP处理复杂的数据类型的问题

把片段写一下:


class TessaysInfo : public TRemotable{
private:
AnsiString FEssayID;
AnsiString FEssayTitle;
__published:
__property
AnsiString EssayID = { read=FEssayID, write=FEssayID };
__property AnsiString EssayTitle = { read=FEssayTitle, write=FEssayTitle };
};
typedef DynamicArray TEssaysInfos;



TEssaysInfos TWSComplexDataTypeDemoImpl::GetEssayTitles(void)
{
int iNo;
int iID;
TEssayInfo *peInfo;
TTransactionDesc TD;
TEssaysInfo sResult;

CreateDataModule();

TD.TransactionID = 1;
TD.IsolationLevel = xilREADCOMMITTED;
try
{
dmMyEssays->sconnMyEssays->StartTransaction(TD);
iNo = dmMyEssays->sdsMyEssays->RecordCount;
sResult.set_length(iNo);
iID = -1;
while ( !dmMyEssays->sdsMyEssays->Eof)
{
iID++;
peInfo = new TEssaysInfo(); // 一定要new么??
//还有在这个程序里new后为什么没有delete

peInfo->EssayID = iID;
peInfo->EssayTitle = dmMyEssays->sdsMyEssays->FieldByName("ETITLE")->Value;
sResult[iID] = peInfo;
dmMyEssays->sdsMyEssays->Next();
}
}


__finally
{
dmMyEssays->sconnMyEssays->Commit(TD);
FreeDataModule();
}
return sResult;
}

已解决.........答案如下
(2004-07-30 10:01:06) 猛禽/Romyo
所有的REMOTABLE派生类对象都由BORLAND的SOAP实现处理释放

(2004-07-30 10:01:29) 猛禽/Romyo
因为它必须在数据被打包发出后才能释放,这个并不在你的控制之中
(2004-07-30 10:01:46) 猛禽/Romyo
这也是为什么必须从TRemotable中派生的原因

工作小结(一)

 让我梳理一下最近在工作中遇到的问题,但总结或者反思可能还没有办法做到,因为我的思路也有点混乱。 2023年初我,我离开服务了7年的平安,来到了一家“初创”公司。打个引号是因为从公司成立至今的年限(6年以上)来说,它已经算不上是一家初创企业了。但其管理模式,业务内容,产品成熟度而...