Hy all!
Does anybody know which is the best way to fill a list with a lot of itens?
First of all, i tried to use a pointer to store all my itens, like the code
below
Char **itemList;
UInt16 LoadProdutos()
{
MemHandle h;
UInt16 RecNum, Cont;
Char *CodProd, *Descricao;
//Abre o banco de dados
OpenDatabase(&dbPtrF, "SAF_PRODUTOS");
//Busca a quantidade de produtos
RecNum = DmNumRecords(dbPtrF);
//Realoca a quantidade de memoria usada pela lista
itemList = (Char **)MemPtrNew(RecNum * 60 * sizeof(Char **));
for (Cont =0; Cont < RecNum; Cont ++)
{
h = DmQueryRecord(dbPtrF, Cont);
CodProd = (Char *)MemHandleLock(h);
ForwardColumnsOnRecord(CodProd, &Descricao, 1);
MemHandleUnlock(h);
itemList[Cont] = (Char *)MemPtrNew(StrLen(Descricao) * sizeof(Char *));
StrCopy(itemList[Cont], Descricao);
}
DmCloseDatabase(dbPtrF);
return RecNum;
}
But on the 36st item, the programm crashes, and the emulator said that it
executed an unknow ou illegal code machine instruction.
After, i initialized the pointer like this
Char *itemList[3000];
and copy the content of the pointer 'DESCRICAO' into the pointer
itemList[Cont]. Now, it works, but, the list need about 4 secs to be loaded,
and i know that the way that i used to declare the pointer wasn't good,
because of the lot of memory that the pointer need to exist.
Now, i thinking about load only the itens that a need and, i will continue
loading the list when the user scroll that.
Does anybody suggest any better way to work with a list of this size?
Thanks all!
R�gis Daniel de Oliveira
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/support/forums/