Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Лажа с оператором "<<"


Автор: Alca 10.1.2009, 15:16
Юникодный проект, ВС++ 2009.
Код

bool CAccess::bCreateAdoMDB(const UnicodeString &cusMdbFilePath) {
    Variant       vADO             = NULL;
    UnicodeString ConnectionString = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cusMdbFilePath + L";";
    try {
        vADO = Variant::CreateObject(L"ADOX.Catalog");
        Procedure Create(L"Create");
        vADO.Exec(Create << ConnectionString);    //ругается здесь
        vADO = NULL;
        return true;
    } catch (Exception &e) {
        MessageBox(0, (L"Ошибка: " + e.Message).w_str(), L"", MB_OK);
        return false;
    }
}

Ругань:
Код

[BCC32 Error] CAccess.cpp(67): E2015 Ambiguity between 
'operator System::AutoCmd::<<(const System::Currency) 
at 
d:\_tmp_progfiles\codegear\rad studio\6.0\include\vcl\sysvari.h:3560' 
and 
'operator System::AutoCmd::<<(const System::TDateTime) 
at 
d:\_tmp_progfiles\codegear\rad studio\6.0\include\vcl\sysvari.h:3561'

Автор: Vyacheslav 11.1.2009, 15:06
Ну скорее всего отсутствует оператор 
Код

 System::AutoCmd::::<<(const UnicodeString  ConnectionString )

и  компилятор пытается подобрать  подходящее преобразование. 
Смог преобразовать UnicodeString в Currency и TDataTime, но теперь не может определится, что выбрать smile

Автор: Alca 11.1.2009, 15:21
В BC++ 6.0 компилилось без проблем. 
Так что мне делать?

Автор: Alca 12.1.2009, 13:52
Так скомпилилось:
Код

//...
vADO = Variant::CreateObject(L"ADOX.Catalog");
Procedure Create("Create");
vADO.Exec(Create << L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\new.mdb;");    //валиться здесь под отладчиком
//...

Но mdb-шник не создается.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)