麻烦大家帮看下
- Delphi(Pascal) code
//delphi中procedure TDynamicSQLDemoServer.GetAllTables(var vTables:OleVariant);var tbllist : TStringList; iCount : Integer;begin try tbllist := TStringList.Create; ADOConnection1.GetTableNames(tbllist); vTables := VarArrayCreate([0,tbllist.Count-1],varVariant); for iCount :=0 to tbllist.Count-1 do begin vTables[iCount]=tbllist[iCount]; end; finally tbllist.Free; end; end
上面是李维书上的代码,我想转为BCB的,其中的VarArrayCreate怎么转换?
BCB里面的VarArrayCreate声明:
extern PACKAGE Variant __fastcall VarArrayCreate(const int * Bounds, const int Bounds_Size, Word AVarType);
[解决办法]
http://topic.csdn.net/t/20020612/19/798760.html
参考这个
[解决办法]
翻译后,大概是这个样子:
- C/C++ code
void __fastcall TDynamicSQLDemoServer::GetAllTables(Variant vTables){ TStringList *tbllist = new TStringList; try { ADOConnection1->GetTableNames(tbllist); int n[2] = { 0, tbllist->Count - 1 }; vTables = VarArrayCreate(n, 1, varVariant); for (int iCount = 0; iCount < tbllist->Count; iCount++) { vTables.PutElement(tbllist->Strings[iCount], iCount); } } __finally { delete tbllist; }}
[解决办法]
就是获取列表名,给你段代码参考
TStringList *slt=new TStringList;
ADOConnection1->GetTableNames(slt,false);
for(int i=0;i<slt->Count;i++)
{
ShowMessage(slt->Strings[i]);
}
delete slt;