Discussion Board

Results 1 to 4 of 4
  1. #1
    Registered User SAA_'s Avatar
    Join Date
    Feb 2009
    Posts
    8
    Пытаюсь разобраться с программированием под Symbian.
    Есть такая задачка. Нужно распарсить XML известной структуры и положить результаты в массив (набор строк различной длины). Как я понимаю, т.к. длина элементов может быть различной и не маленькой, нужно использовать дескрипторы HBufC. Что взять за массив? CDesCArray ? или просто MArray, CArray? Как правильно? Число элементов массива заранее не известно. Сортировки, поиски не нужны. Нужна последовательная запись и чтение.
    Написал функцию читающую элементы из файла, но смущает то, что для возврата результата строки используется TBuf фиксированной длины. Стека может не хватить на самый длинный элемент (?) и перерасход памяти на коротких элементах. Хочется переделать на дескриптор динамической длины, но не знаю как

    Функция:
    Code:
    TInt CMyReaderXML::ReadNext(TInt &iOffset, TDes &aBuf)
    {
    TPtr8 ptrBuf=iBuf->Des();
    TInt iLengthCurrent = iOffset;
    TInt i = 1;
    
    aBuf = _L("");
    
    while(1==1)
    {
    	ReadFile(iOffset,ptrBuf,1);
    	if(ptrBuf.Length()==0)
    		return 1;
    	if(i>1&&ptrBuf[0]=='<')
    		break;
    	aBuf.Append(ptrBuf[0]);
    	iOffset++;	
    	if (ptrBuf[0]=='>') 
    	   break;
    	i++;
    };
    return 0;
    }
    Вызов:
    Code:
    	aDoc =new (ELeave) CDesCArrayFlat(1024);
    ...
    	TBuf<4096> strWord;
    	do
    	{
    		res=ReadNext(aPos,strWord);
    		
    		if (strWord.Length()>0&&not strWord[0]=='<')  
    			aDoc->AppendL(_L8(strWord));
    		
    		
    	} while(res==0);
    ...
    Но aDoc остается пустой (count = 0).
    Вообще хочется что-то похожее на работу со строками как в дельфи:
    1) Строки динамические
    2) Массив как TStringList

    И еще вопрос для понимания: могу ли я хранить не сами строки в массиве, а указатели на дескрипторы? или так уже и работают какие-нибудь стандартные классы? В таком случае как будет выглядеть код добавления,удаления дескриптора в массив?
    Спасибо.

  2. #2

  3. #3
    Nokia Developer Moderator truf's Avatar
    Join Date
    Jun 2007
    Location
    Moscow, Russia
    Posts
    1,355
    Для хранения строк можно использовать CDesCArray.
    Указатели на созданные в куче объекты в массивах хранить можно.
    Про то что как храниться в раличных классах массивов написано тут:
    http://developer.symbian.org/wiki/in...ian_C%2B%2B%29

    Динамические строки реализуются классом LString, но я не советую связываться с L-классами. Лучше сделать метод добавляющий дескриптор к RBuf или HBufC с проверочкой на размер последнего.

  4. #4
    Registered User SAA_'s Avatar
    Join Date
    Feb 2009
    Posts
    8
    Спасибо, буду разбираться.

Similar Threads

  1. Parsing xml data from the server using kxml2 in J2ME
    By dninsiima in forum Mobile Java Networking & Messaging & Security
    Replies: 4
    Last Post: 2010-03-26, 08:08
  2. Some problems related to xml parsing
    By anup007star in forum Symbian C++
    Replies: 1
    Last Post: 2009-07-20, 05:37
  3. XML writing and Appending the Problem
    By talk2mishal in forum Mobile Java General
    Replies: 3
    Last Post: 2008-09-19, 19:24
  4. Need knowledge about XML and XML Parsing
    By 02060515 in forum Mobile Java General
    Replies: 1
    Last Post: 2008-07-07, 08:41

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved