Palmclub forum

Palmclub Forum

alles over je Palm Treo smartphone of PalmOS pda

 
Ga terug   Palmclub forum > PalmOS - Algemeen > Softwareontwikkeling

Registreer FAQ Ledenlijst Kalender Berichten van vandaag

 
 
Discussietools Weergave
  #1  
Oud 24 juni 2003, 12:22
Ploert
Guest
 
Berichten: n/a
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
Met citaat reageren
 

Favorieten/bladwijzers


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)
 

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit


Alle tijden zijn GMT +1. Het is nu 14:46.


Apple iPhone en iPad
(c) Nederlandse Palmclub Stichting 1999-2023