alles over je Palm Treo smartphone of PalmOS pda
|
Registreer | FAQ | Ledenlijst | Kalender | Berichten van vandaag | Zoeken |
#1
|
|||
|
|||
Probleem palmprogramma
Wie kan mij helpen met een probleem bij het programmeren op de palmtop? Ik moet voor mijn afstuderen een applicatie schrijven op de palmtop waar ik een kilometer registratie programma moet maken.
Hierbij moet ik gebruik maken van records (het programma is in C). Als ik de informatie echter opsla en weer uitlees zijn het allerlei rare tekens geworden ipv wat ik opgeslagen had. WIE KAN MIJ HELPEN!!! Het programma moet geschreven worden in het bijgeleverde Databook. Hieronder enkele stukken code die ik toegevoegd heb, misschien is hier wat mee te doen. Struct Kilometer (zelf toegevoegd): typedef struct{ TimeType vertrekTijd; TimeType aankomstTijd; Char* vertrekKm; Char* aankomstKm; }KilometerType; Struct RecordType (De DB opbouw, met toegevoegde KilometerType) typedef struct { ApptDateTimeType * when; AlarmInfoType * alarm; RepeatInfoType * repeat; ExceptionsListType * exceptions; Char * description; Char * note; KilometerType * kilometer; } ApptDBRecordType; Het record wordt voordat het opgeslagen wordt in gepakt en uiteraard weer uitgepackt als het gebruikt gaat worden: Inpakken: static void ApptPack(ApptDBRecordPtr s, ApptPackedDBRecordPtr d) { ApptDBRecordFlags flags; UInt16 size; UInt32 offset = 0; *(UInt8 *)&flags = 0; // clear the flags // copy the ApptDateTimeType //c = (char *) d; offset = 0; DmWrite(d, offset, s->when, sizeof(ApptDateTimeType)); offset += sizeof (ApptDateTimeType) + sizeof (ApptDBRecordFlags); if (s->alarm != NULL) { DmWrite(d, offset, s->alarm, sizeof(AlarmInfoType)); offset += sizeof (AlarmInfoType); flags.alarm = 1; } //---------------------------------------------------------------------------------------------------------------------------------------- // INPAKKEN KILOMETER if (s->kilometer != NULL){ FrmCustomAlert(KilometerAlert_Scherm, "Dateday", "DetailsInit", "Bestaat"); DmWrite(d, offset, s->kilometer, sizeof(KilometerType)); FrmCustomAlert(KilometerAlert_Scherm, "Dateday", "DetailsInit", "Bestaat"); offset += sizeof(KilometerType); flags.kilometer = 1; } //---------------------------------------------------------------------------------------------------------------------------------------- if (s->repeat != NULL) { DmWrite(d, offset, s->repeat, sizeof(RepeatInfoType)); offset += sizeof (RepeatInfoType); flags.repeat = 1; } if (s->exceptions != NULL) { size = sizeof (UInt16) + (s->exceptions->numExceptions * sizeof (DateType)); DmWrite(d, offset, s->exceptions, size); offset += size; flags.exceptions = 1; } if (s->description != NULL) { size = StrLen(s->description) + 1; DmWrite(d, offset, s->description, size); offset += size; flags.description = 1; } if (s->note != NULL) { size = StrLen(s->note) + 1; DmWrite(d, offset, s->note, size); offset += size; flags.note = 1; } DmWrite(d, sizeof(ApptDateTimeType), &flags, sizeof(flags)); } Uitpakken: static void ApptUnpack(ApptPackedDBRecordPtr src, ApptDBRecordPtr dest) { ApptDBRecordFlags flags; char *p; flags = src->flags; p = &src->firstField; dest->when = (ApptDateTimeType *) src; if (flags.alarm) { dest->alarm = (AlarmInfoType *) p; p += sizeof (AlarmInfoType); } else dest->alarm = NULL; //---------------------------------------------------------------------------------------------------------------------------------------- // UITPAKKEN KILOMETER if( flags.kilometer ){ dest->kilometer = (KilometerType *) p; p += sizeof (KilometerType); }else dest->kilometer = NULL; //---------------------------------------------------------------------------------------------------------------------------------------- if (flags.repeat) { dest->repeat = (RepeatInfoType *) p; p += sizeof (RepeatInfoType); } else dest->repeat = NULL; if (flags.exceptions) { dest->exceptions = (ExceptionsListType *) p; p += sizeof (UInt16) + (((ExceptionsListType *) p)->numExceptions * sizeof (DateType)); } else dest->exceptions = NULL; if (flags.description) { dest->description = p; p += StrLen(p) + 1; } else dest->description = NULL; if (flags.note) { dest->note = p; } else dest->note = NULL; } Als het niet genoeg is laat het maar weten, dan gooi ik er nog meer informatie bij. BVD |