AppLog Бады странно искажает мои сообщения - PullRequest
0 голосов
/ 29 ноября 2011

Я адаптирую пример Управления формами здесь и нашел AppLog, чтобы странным образом манипулировать моими сообщениями.

void
MyFormsApp::OnUserEventReceivedN (RequestId requestId, IList *pArgs)
{
    AppLog("OnUEveRxdNb, beginning");
    if(!pArgs) {
        AppLog("OnUserEventReceivedN, null List");
        return;
    }

    if(requestId==TabsForm::TABS_SWITCH_CALL)
    {
        Integer * tabindex = static_cast<Integer *>(pArgs->GetAt(0));
        MyLog(L"OnUEveRxdN, formID : ", formID->ToInt());
        //MyLog(L"OnUserEventReceivedN, formID : ", formID->ToInt());
        if(tabindex)
        {
            switch(tabindex->ToInt())
            {
            case TabsForm::SEARCH_TAB:
                frame_->SetCurrentForm(*search_form_);
                search_form_->RequestRedraw(true);
                break;
            case TabsForm::RESULTS_TAB:
                frame_->SetCurrentForm(*results_form_);
                results_form_->RequestRedraw(true);
                break;
            case TabsForm::CONTENTS_TAB:
                frame_->SetCurrentForm(*contents_form_);
                contents_form_->RequestRedraw(true);
                break;
            }
        }
    }
    pArgs->RemoveAll(true);
    delete pArgs;
} //closebracket

MyLog равен

void MyLog(const String &badaStr) {
    char *natStr = new char[badaStr.GetLength()];
    for (int i = 0; i < badaStr.GetLength(); ++i)
        natStr[i] = badaStr[i];
    AppLog(natStr);
    delete[] natStr;
}

void MyLog(const mchar *pValue, const int int_param) {
    String str(pValue);
    result r = str.Append(int_param);
    MyLog(str);
}

void MyLog(const char *pValue, const int int_param) {
    String str(pValue);
    result r = str.Append(int_param);
    MyLog(str);
}

ЕслиВы видите, где я получил два вызова, второй комментарий был закомментирован, потому что он добавляет мусор в конец моей строки.Я вызываю эти функции из разных мест моего приложения без проблем, но здесь строка должна быть обрезана.Это не общее число char для каждой функции, потому что замена первого AppLog на AppLog("BadaReader::OnUserEventReceivedN, beginning"); не имеет значения.

Может кто-нибудь заметить мою ошибку или Bada 2.0.2 известен для такого рода случайного сбоя

1 Ответ

1 голос
/ 30 ноября 2011

Зачем вам нужны отдельные функции ведения журнала? У bada есть три макроса AppLog. Йок может их использовать. Также, если вам нужно напечатать String do,

AppLog("Log Statement %s",string_name->GetPointer());

string_name-> GetPointer () возвращает const char *.

...