oops, didn't read that line closely enough...

I see what you are doing with char *nom = cod + codLen + 1 (pointing at a particular 
thing in cod, and it seems fine.

Sorry about that....

K

-----Original Message-----
From: Kevin OKeefe 
Sent: Wednesday, January 15, 2003 4:30 PM
To: Palm Developer Forum
Subject: RE: Wy i,m getting this error?


I'm not sure why the compiler is complaining, but your code does seem to be wrong.

if (!h) means if there is no handle, so you definitely don't want to unlock it if it 
was null.

Besides... where's the MemHandleLock to match that unlock on that null handle?  You 
have a couple of layers of problems here...

basically, you want to do:

MemHandle h = DmQueryRecord(dbPtr, index);
if(h)
{
        // do your MemHandleLock(h) and the rest of your manipulations
        
        // Then MemHandleUnlock(h) before going on to the next record
}
else
{
        return; // or report error, etc.
}

Also, this line is not doing what you seem to intend:
        Char *nom = cod + codLen + 1;

What you seem to intend to do is:
        Char *nom = MemPtrNew(cod + codLen + 1);

In short, you have several problems to work out here....

Kevin

-----Original Message-----
From: Régis Daniel de Oliveira [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, January 15, 2003 3:57 PM
To: Palm Developer Forum
Subject: Wy i,m getting this error?


I have the following code in my app:

void loadRCAS(UInt16 Modo)
{
      //Declara variavel Count:
      UInt16 Count;

      //Configura os ponteiros para a lista
    FormPtr form = FrmGetActiveForm();
    ListPtr lptr = (ListPtr)FrmGetObjectPtr(form, FrmGetObjectIndex(form,
lstRCAS));

      //Verifica se o banco de dados está aberto. Se nao estiver, abre-o
      Err err = Open();
      if(err)
            return;
      else
      {

            //Faz um LOOP do número de records presente no banco de dados
            for (Count=0; DmNumRecords(dbPtr)-1 ; Count++)
            {
            //Abre o RECORD para leitura
            MemHandle h = DmQueryRecord(dbPtr, Count);
            //Verifica se eu realmente peguei um bom segmento de memoria
            if (!h)
                    ///////////I WANT TO PUT MenHandleUnlock here!!!///////

                    //MemHandleUnlock(h);

                    return;
            else
            {
                  //Trava o segmento, de modo que eu possa ler dele
                  Char *cod = (Char *) MemHandleLock(h);
                  UInt16 codLen = StrLen(cod);
                  Char *nom = cod + codLen + 1;

                  //Prepara o ponteiro nome...
                  Char name[31];
                  StrNCopy(name, nom, 30);
                  name[30-1] = 0;

                  //Acrescenta o item na lista...
                  DLstCatEntry(listEntries, &nextListEntry,
MAX_LIST_ENTRIES, name);
            }
            }
      }
}



When i put the function MemHandleUnlock(h); before the second 'return', the
compiler generates a error. Why?

Thanks!



-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/


------------------------------------------
The information in this transmittal and any attachments is privileged and confidential 
and is intended only for the recipient(s) listed above. You are hereby notified that 
any unauthorized distribution or copying of this transmittal or its attachments is 
prohibited. If you have received this transmittal in error, please notify Invivodata 
immediately at (831) 438-9550.
------------------------------------------


-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

--
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to