alles over je Palm Treo smartphone of PalmOS pda
|
Registreer | FAQ | Ledenlijst | Kalender | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
|
#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 |
#2
|
||||
|
||||
Ik kan je helaas niet helpen.
Ik kan je wel vertellen dat de kilometerregistratie weer afgeschaft gaat worden, omdat het toch meer werk opleverde dan dat het voordeel was. Ook voor de overheid. Dit soort programma's zijn dus over een paar maanden compleet overbodig... |
#3
|
||||
|
||||
Een veel voorkomende fout met pointers.
Bekijk deze regel even goed: DmWrite(d, offset, s->kilometer, sizeof(KilometerType)); Je slaat hier wel struct op, echter je wilt de inhoud vd strings in die struct opslaan. Weer een stapje verder.
__________________
Rob. The real source of applications. ___________________________________ |
#4
|
|||
|
|||
Fout met pointers
Hoe doe ik dat dan goed?
|
#5
|
|||
|
|||
Citaat:
Op 24-06-2003, om 14:24 heeft Boss dit gezegd in bericht #2
Ik kan je helaas niet helpen. Ik kan je wel vertellen dat de kilometerregistratie weer afgeschaft gaat worden, omdat het toch meer werk opleverde dan dat het voordeel was. Ook voor de overheid. Dit soort programma's zijn dus over een paar maanden compleet overbodig... |
#6
|
||||
|
||||
Dit is wel heel erg off-topic
Dit werd afgelopen week bekend gemaakt door het Ministerie van Financiën. Zie ook dit bericht (bron: Fiscaal up-to-date / Min. van Financiën)
Nu maar weer terug naar het eigenlijke onderwerp Laatst gewijzigd door domo; 24 juni 2003 om 20:52. |
#7
|
|||
|
|||
Rob, ik heb het veranderd in wat je gezegd hebt, maar dan is aankomstTijd ( s->kilometer->aankomstTijd ) niet van het juiste type in DmWrite ( DmWrite(d, offset, s->kilometer->aankomstTijd, sizeof(TimeType) ); ).
Wat kan ik hier aan doen? |
#8
|
|||
|
|||
Bug
Weet iemand wat is tegen deze fout kan ondernemen?
Citaat:
Application just read form memory location 0x0000003, causing an address error.
An "adress error" means that the application a 2- or 4-byte value at an odd (i.e. not even) memory address. |
#9
|
|||
|
|||
ik denk niet dat iemand hier iets aan kan doen, behalve de software leverancier van ...... Ja waar gaat het hier eigenlijk om
Misschien dat je eerst eens moet vertellen waar het om gaat, wat je doet, etc. |
#10
|
|||
|
|||
Deze fout is opgelost....
Toch bedankt |
#11
|
|||
|
|||
Array
Wie weet hoe een array in een struct werkt?
Als ik bijvoorbeeld meerdere bedrijven in een struct op wil slaan, hoe doe ik dat dan? Ik zat zelf aan zoiets te denken, maar volgens mij wordt dit geen succes: Code:
typedef struct{ char naamBedrijf[10][10]; }bedrijvenStruct; typedef struct { UInt16 aantalBedrijven; bedrijvenStruct bedrijven; } PreferenceType; |
#12
|
||||
|
||||
/admin: meerdere threads samengevoegd. Gaarne zoveel mogelijk de discussie proberen in één thread te houden
|
#13
|
|||
|
|||
Karakter in C
Indien ik een woord op wil slaan in een programma met behulp van C, krijg ik het niet voor elkaar. Hij onthoudt dit niet correct. Het is de bedoeling dat ik dit een struct plaats en dan onthou.
Bij de volgende code onthoud hij alleen het eerste karakter van het woord: Code:
typedef struct{ UInt16 aantalKilometer; UInt16 tijd; char naamBedrijf; }bedrijvenStruct; Code:
typedef struct{ UInt16 aantalKilometer; UInt16 tijd; char[] naamBedrijf; }bedrijvenStruct; Code:
typedef struct{ UInt16 aantalKilometer; UInt16 tijd; char* naamBedrijf; }bedrijvenStruct; |