سؤال

أنا تحميل سلسلة نصية من خدمة الإنترنت في RBuf8 باستخدام هذا النوع من التعليمات البرمجية (يعمل..)

void CMyApp::BodyReceivedL( const TDesC8& data ) {
    int newLength = iTextBuffer.Length() + data.Length();
    if (iTextBuffer.MaxLength() < newLength)
        {
            iTextBuffer.ReAllocL(newLength);
        }
    iTextBuffer.Append(data);
}

أريد أن ثم تحويل RBuf8 في شار* سلسلة يمكنني عرض في التسمية أو أيا كان..أو لأغراض التصحيح, عرض في

RDebug::Printf("downloading text %S", charstring);

تحرير من أجل الوضوح..

بلدي وظيفة التحويل يبدو مثل هذا..

الفراغ CMyApp::DownloadCompleteL() { { RBuf16 buf;buf.CreateL(iTextBuffer.طول());buf.نسخ(iTextBuffer);

    RDebug::Printf("downloaded text %S", buf);
    iTextBuffer.SetLength(0);
    iTextBuffer.ReAlloc(0);                                 
}

ولكن هذا لا تزال أسباب الحادث.أنا باستخدام S60 3rd Edition FP2 v1.1

هل كانت مفيدة؟

المحلول

ما قد تحتاجه هو شيء أن تأثير:

RDebug::Print( _L( "downloaded text %S" ), &buf );

هذا البرنامج التعليمي قد تساعدك.

نصائح أخرى

الفراغ RBuf16::نسخ(const TDesC8&) سوف تأخذ 8bit واصف وتحويلها إلى 16bit واصف.

يجب أن تكون قادرا على عرض أي 16bit واصف على الشاشة.إذا كان لا يبدو للعمل, وظيفة محددة API كنت تستخدم.

عندما API يمكن استخدامها مع عدد غير محدد من المعلمات (مثل الفراغ RDebug::Printf(const char*, ...) ), %S يستخدم "مؤشر إلى 16bit واصف".لاحظ الكبيرة %S.

شكرا على %S هو تذكير مفيدة.

ولكن هذا لا يبدو أن العمل..بلدي وظيفة التحويل يبدو مثل هذا..

void CMyApp::DownloadCompleteL() {
    {
        RBuf16 buf;
        buf.CreateL(iTextBuffer.Length());
        buf.Copy(iTextBuffer);

        RDebug::Printf("downloaded text %S", buf);
        iTextBuffer.SetLength(0);
        iTextBuffer.ReAlloc(0);                 
    }

ولكن هذا لا تزال أسباب الحادث.أنا باستخدام S60 3rd Edition FP2 v1.1

عليك أن تقدم مؤشر إلى واصف في RDebuf::Printf لذلك ينبغي أن يكون

RDebug::Print(_L("downloaded text %S"), &buf);

على الرغم من أن استخدام _L هو تثبيط._LIT الكلي هو المفضل.

كما ذكر من قبل quickrecipesonsymbainosblogspotcom, تحتاج إلى تمرير مؤشر إلى واصف.

RDebug::Printf("downloaded text %S", &buf); //note the address-of operator

يعمل هذا لأن RBuf8 مشتق من TDes8 (و نفس الشيء مع 16 بت).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top