Тема: Не могу открыть файл

Здравствуйте!
Вообщем проблема наверное избитая) Перерыл форум, но может плохо искал.
Проблема в том, что не могу открыть файл, с помощью следующей конструкции:

Acad::ErrorStatus es;
AcDbDatabase *db = new AcDbDatabase();
AcAxDocLock lockDB(db);
if ((es = db->readDwgFile("C:\\Temp\\1.dwg",_SH_DENYNO)) != Acad::eOk)
{
    acutPrintf(_T("\nCant open database <%s> with error %s!"),"C:\\Temp\\1.dwg",acadErrorStatusText(es));
    delete db;
   return;
}

выдает ошибку eFileSharingViolation (433), в чем может быть проблема?
Заранее спасибо.
С уважением, Sergey

Re: Не могу открыть файл

Убери:

AcAxDocLock lockDB(db);

И убедись, что к файл есть и доступен для программы (не открыт другой или этой же программой на запись).

Re: Не могу открыть файл

Алесандр самое интересное, что порылся нашел из вашего примера код и добавил к себе в код и вот что поолучилось:

resbuf *result = NULL;
    result = acutNewRb(RTSTR);
    result->resval.rstring = NULL;
    Acad::ErrorStatus es = Acad::eOk;
    ACHAR *fname = NULL;
    if  (acedGetFileD(_T("Select file:"), NULL, _T("dwg"), 0, result) == RTNORM) {
        fname = acad__strdup(result->resval.rstring); acutRelRb(result);
    } else {
        acutRelRb(result);
        return;
    }
    AcDbDatabase *db = new AcDbDatabase();
    AcAxDocLock lockDB(db);
    if ((es = db->readDwgFile("C:\\Temp\\1.dwg",_SH_DENYNO)) != Acad::eOk)
    {
        acutPrintf(_T("\nError open database <%s> with error %s!"),"C:\\Temp\\1.dwg", acadErrorStatusText(es));
        AfxMessageBox("FO");
        delete db;
        return;
    }

и данный код работает корректно.
Если же убираю AcAxDocLock lockDB(db), говорит eFileSharingViolation...

Re: Не могу открыть файл

только конечно вместо

es = db->readDwgFile("C:\\Temp\\1.dwg",_SH_DENYNO)

нда вписать

es = db->readDwgFile(fname,_SH_DENYNO)

(изменено: Александр Ривилис, 5 марта 2009г. 11:00:08)

Re: Не могу открыть файл

Проблема видимо в том, что вместо

es = db->readDwgFile("C:\\Temp\\1.dwg",_SH_DENYNO);

должно быть

es = db->readDwgFile(_T("C:\\Temp\\1.dwg"),_SH_DENYNO);

если речь идет об AutoCAD 2007 и выше.

Sergey SH пишет:

Если же убираю AcAxDocLock lockDB(db), говорит eFileSharingViolation..

Так он у тебя что уже открыт в AutoCAD'е?

Re: Не могу открыть файл

Неа,чертеж не открыт и никаким другим приложением не используется...Если чертеж открыт, то пишет eLockVolation...

Re: Не могу открыть файл

Я одно не могу понять. У тебя какая-то дикая смесь юникодовских и анси строк. Как у тебя вообще это компилятор пропускает? Так какая все-таки версия AutoCAD, версия ObjectARX? Пользовался ли ты ObjectARX Wizard для создания проекта? Что-то слишком много непонятного...

Re: Не могу открыть файл

Сорри за корявое оформление кода...вообще на работе пишу для VS 2002, ACAD2004, ObjectARX2005....а дома приходиться писать на VS 2005, ACAD2007, вот поэтому смесь такая 8) дикого...щас как раз причешу код...

Re: Не могу открыть файл

Для AutoCAD 2004 нужно пользоваться ObjectARX SDK 2004. Иначе будут проблемы. Да и дома нужно работать в этой же среде. В разных версиях есть свои нюансы и разночтения.