Run it twice in a row and it will crash
Does the record index change do to this routine
The rest of the DmWrite variables are global
and loaded from the read to the record


EditRecord()
 {
   UInt16 size = 0;
   UInt16 Offset = 0;
   Err err;
   Char *ptr;
  
  err = Open();
  h = DmGetRecord(dbPtr, nRecordIndex);
  ptr = (Char *) MemHandleLock(h);
  
 
  GetFieldData( levelFLD, level, 255 );
  GetFieldData( expiFLD, expFld, 255 );
  GetFieldData( repeatFLD, repet, 255 );
  GetFieldData( pointsFLD, spoints, 255 );
  GetFieldData( completeFLD, complete, 255 );
  GetFieldData(  mItemFLD, mItems, 255 );
 

   size = StrLen(name)+1+ StrLen(level)+1+ StrLen(expFld)+1+ StrLen(desc)+1+
   StrLen(mItems)+1+ StrLen(startz)+1+ StrLen(heritage)+1+ StrLen(citytask)+1+
   StrLen(sabatoge)+1+ StrLen(repet)+1+ StrLen(access)+1+ StrLen(freeport)+1+
   StrLen(qeynos)+1+ StrLen(complete)+1+ StrLen(comment)+1+ StrLen(spoints)+1+
   StrLen(npc)+1+ StrLen(step1)+1+ StrLen(step2)+1+ StrLen(step3)+1+ 
StrLen(step4)+1+
   StrLen(priorq)+1;

   DmWrite(ptr, Offset, (const void *)name, StrLen(name)+1);
   Offset += StrLen(name)+1;
   DmWrite(ptr, Offset, (const void *)level, StrLen(level)+1);
   Offset += StrLen(level)+1;
   DmWrite(ptr, Offset, (const void *)expFld, StrLen(expFld)+1);
   Offset += StrLen(expFld)+1;
   DmWrite(ptr, Offset, (const void *)desc, StrLen(desc)+1);
   Offset += StrLen(desc)+1;
   DmWrite(ptr, Offset, (const void *)mItems, StrLen(mItems)+1);
   Offset += StrLen(mItems)+1;
   DmWrite(ptr, Offset, (const void *)startz, StrLen(startz)+1);
   Offset += StrLen(startz)+1;
   DmWrite(ptr, Offset, (const void *)heritage, StrLen(heritage)+1);
   Offset += StrLen(heritage)+1;
   DmWrite(ptr, Offset, (const void *)citytask, StrLen(citytask)+1);
   Offset += StrLen(citytask)+1;
   DmWrite(ptr, Offset, (const void *)sabatoge, StrLen(sabatoge)+1);
   Offset += StrLen(sabatoge)+1;
   DmWrite(ptr, Offset, (const void *)repet, StrLen(repet)+1);
   Offset += StrLen(repet)+1;
   DmWrite(ptr, Offset, (const void *)access, StrLen(access)+1);
   Offset += StrLen(access)+1;
   DmWrite(ptr, Offset, (const void *)freeport, StrLen(freeport)+1);
   Offset += StrLen(freeport)+1;
   DmWrite(ptr, Offset, (const void *)qeynos, StrLen(qeynos)+1);
   Offset += StrLen(qeynos)+1;
   DmWrite(ptr, Offset, (const void *)complete, StrLen(complete)+1);
   Offset += StrLen(complete)+1;
   DmWrite(ptr, Offset, (const void *)comment, StrLen(comment)+1);
   Offset += StrLen(comment)+1;
   DmWrite(ptr, Offset, (const void *)spoints, StrLen(spoints)+1);
   Offset += StrLen(spoints)+1;
   DmWrite(ptr, Offset, (const void *)npc, StrLen(npc)+1);
   Offset += StrLen(npc)+1;
  
   DmWrite(ptr, Offset, (const void *)step1, StrLen(step1)+1);
   Offset += StrLen(step1)+1;
   DmWrite(ptr, Offset, (const void *)step2, StrLen(step2)+1);
   Offset += StrLen(step2)+1;
   DmWrite(ptr, Offset, (const void *)step3, StrLen(step3)+1);
   Offset += StrLen(step3)+1;
   DmWrite(ptr, Offset, (const void *)step4, StrLen(step4)+1);
   Offset += StrLen(step4)+1;
   DmWrite(ptr, Offset, (const void *)priorq, StrLen(priorq)+1);

  
   
   MemHandleUnlock(h);
   DmReleaseRecord(dbPtr, nRecordIndex, true);
   err = DmCloseDatabase(dbPtr);
 
 
         
   return 0;
 }

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

Reply via email to