/*WRONG*/
the struct is
typedef struct PacienteStruc
{
Char *Nombre ;
Char *Apellidos;
Char *Dia ;
Char *Mes ;
Char *Anio ;
Char *Sexo ;
Char *PatPrev;
} PacienteStruc ;/*RIGHT*/
the struct is
typedef struct PacienteStruc
{
Char Nombre[50] ;
Char Apellidos[50];
Char Dia[50] ;
Char Mes[50] ;
Char Anio[50] ;
Char Sexo[50] ;
Char PatPrev[50];
} PacienteStruc ;
//These numbers are only for example, or use str packetingtypedef PacienteStruc* PacienteStrucPtr;
/*WRONG*/
static Err AddNewRecord(DmOpenRef db)
{
UInt16 recordIndex = DmNumRecords(db) + 1 //dmMaxRecordIndex;
PacienteStruc newRecord;
MemHandle myRecordHandle;
PacienteStruc *newRecordPtr;
Err err;
newRecord.Nombre = "Bill";
newRecord.Apellidos = "Mother";
newRecord.Dia = "1";
newRecord.Mes = "1";
newRecord.Anio = "1";
newRecord.Sexo = "M";
newRecord.PatPrev = "I Heat DmNewRecord";myRecordHandle = DmNewRecord(db, &recordIndex, sizeof(newRecord)); newRecordPtr = MemHandleLock(myRecordHandle); err = DmWrite(newRecordPtr, 0, &newRecord, sizeof(newRecord)); MemHandleUnlock(myRecordHandle); return err; }
/*RIGHT*/
static Err AddNewRecord(DmOpenRef db)
{
UInt16 recordIndex = dmMaxRecordIndex; //let it be...
PacienteStruc newRecord;
MemHandle myRecordHandle;
PacienteStruc *newRecordPtr;
Err err;StrCopy(newRecord.Nombre,"Bill");
//... do the rest as this one
// newRecord.Nombre = "Bill";
// newRecord.Apellidos = "Mother";
// newRecord.Dia = "1";
// newRecord.Mes = "1";
// newRecord.Anio = "1";
// newRecord.Sexo = "M";
// newRecord.PatPrev = "I Heat DmNewRecord"; // shuld be "I *hate* DmNewRecord" :))
myRecordHandle = DmNewRecord(db, &recordIndex, sizeof(newRecord));
//No validation... no good
newRecordPtr = MemHandleLock(myRecordHandle);
err = DmWrite(newRecordPtr, 0, &newRecord, sizeof(newRecord));
//In the previous one you writed a couple of useless pointers in the record LOL
MemHandleUnlock(myRecordHandle);
//call DmReleaseRecord after making DmNewRecord.
return err;
}
R Moon wrote:
I have a problem, this function add a record to Database but when i execute DmNewRecord the MemHandle obtain 0x00000000 and error is MemHandle NULL I have a fucntion, open DB
Boolean other function { OpenDatabase(&Database); AddNewREcord(Database); //call the function to add record }
static Err AddNewRecord(DmOpenRef db) { UInt16 recordIndex = DmNumRecords(db) + 1 //dmMaxRecordIndex; PacienteStruc newRecord; MemHandle myRecordHandle; PacienteStruc *newRecordPtr; Err err; newRecord.Nombre = "Bill"; newRecord.Apellidos = "Mother"; newRecord.Dia = "1"; newRecord.Mes = "1"; newRecord.Anio = "1"; newRecord.Sexo = "M"; newRecord.PatPrev = "I Heat DmNewRecord";
myRecordHandle = DmNewRecord(db, &recordIndex, sizeof(newRecord)); newRecordPtr = MemHandleLock(myRecordHandle); err = DmWrite(newRecordPtr, 0, &newRecord, sizeof(newRecord)); MemHandleUnlock(myRecordHandle); return err; }
the struct is typedef struct PacienteStruc { Char *Nombre ; Char *Apellidos; Char *Dia ; Char *Mes ; Char *Anio ; Char *Sexo ; Char *PatPrev; } PacienteStruc ;
typedef PacienteStruc* PacienteStrucPtr;
-- For information on using the Palm Developer Forums, or to unsubscribe, please see http://www.palmos.com/dev/support/forums/
