Palmclub forum

Palmclub Forum

alles over je Palm Treo smartphone of PalmOS pda

 
Ga terug   Palmclub forum > PalmOS - Algemeen > Softwareontwikkeling

Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen
  #1  
Oud 24 juni 2003, 13: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
  #2  
Oud 24 juni 2003, 14:24
Boss's schermafbeelding
Boss Boss is offline
Forumbikkel
Model: Geen
 
Geregistreerd: 08 maart 2001
Locatie: Delft
Berichten: 428
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...
Met citaat reageren
  #3  
Oud 24 juni 2003, 14:46
RobB's schermafbeelding
RobB RobB is offline
Huisprogrammeur
Voornaam: Rob
Model: Overig
 
Geregistreerd: 06 december 2000
Locatie: 82.174.252.255
Berichten: 911
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.
___________________________________
Met citaat reageren
  #4  
Oud 24 juni 2003, 15:28
Ploert
Guest
 
Berichten: n/a
Fout met pointers

Hoe doe ik dat dan goed?
Met citaat reageren
  #5  
Oud 24 juni 2003, 16:58
wokkel wokkel is offline
Forumbikkel
Model: Palm Tungsten|E
 
Geregistreerd: 17 maart 2003
Locatie: Dordrecht
Berichten: 159
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...
Mag ik vragen waar je die info vandaan hebt?
Met citaat reageren
  #6  
Oud 24 juni 2003, 21:33
domo's schermafbeelding
domo domo is offline
Administrator
Voornaam: Doménique
Model: HP Pre3
 
Geregistreerd: 25 februari 2002
Locatie: Sydney
Berichten: 3.499
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 21:52.
Met citaat reageren
  #7  
Oud 25 juni 2003, 13:04
Ploert
Guest
 
Berichten: n/a
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?
Met citaat reageren
  #8  
Oud 02 juli 2003, 10:50
Ploert
Guest
 
Berichten: n/a
Question 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.
Met citaat reageren
  #9  
Oud 02 juli 2003, 12:18
ralphr ralphr is offline
Senior lid
Model: Sony Clie PEG-TJ27
 
Geregistreerd: 23 augustus 2001
Berichten: 67
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.
Met citaat reageren
  #10  
Oud 08 juli 2003, 17:07
Ploert
Guest
 
Berichten: n/a
Deze fout is opgelost....

Toch bedankt
Met citaat reageren
  #11  
Oud 08 juli 2003, 17:12
Ploert
Guest
 
Berichten: n/a
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;
Maar als ik deze wil vullen, krijg ik dit niet voor elkaar. Kan iemand mij hiermee helpen?
Met citaat reageren
  #12  
Oud 08 juli 2003, 17:28
jean-paul's schermafbeelding
jean-paul jean-paul is offline
Admin
Voornaam: Jean-Paul
Model: Apple iPhone
 
Geregistreerd: 22 november 2000
Locatie: Amsterdam
Berichten: 3.828
Stuur een bericht via ICQ naar jean-paul Stuur een bericht via Instant Messenger naar jean-paul Stuur een bericht via MSN naar jean-paul Stuur een bericht via Yahoo naar jean-paul Stuur een bericht via Skype™ naar jean-paul
/admin: meerdere threads samengevoegd. Gaarne zoveel mogelijk de discussie proberen in één thread te houden
Met citaat reageren
  #13  
Oud 09 juli 2003, 15:52
Ploert
Guest
 
Berichten: n/a
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;
Bij de volgende code doet hij helemaal niets (krijg compil fouten), dus dat mag al helemaal niet:
Code:
typedef struct{
	UInt16		aantalKilometer;
	UInt16		tijd;
	char[]		naamBedrijf;
}bedrijvenStruct;
Bij de volgende code onthoud hij het prima, maar nadat ik in en uit het programma ga is het weg (uiteraard doordat het een pointer is):
Code:
typedef struct{
	UInt16		aantalKilometer;
	UInt16		tijd;
	char*		naamBedrijf;
}bedrijvenStruct;
Wie weet hoe dit wel moet?
Met citaat reageren
Reageren

Favorieten/bladwijzers


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

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 18:35.


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