farion
27-05-2007, 18:09
Hallo,
ich programmiere gerade für meinem Palm in C
Ich lade zur Laufzeit einen Datenbestand ein und dieser kann sich auch ändern und muss dann neu eingelesen werden. Die Daten sind ein struct der Form:
typedef struct DBRecordType
{
char a[20];
char b[20];
Int16 c;
} DBRecordType;
Am Anfang lade ich sagen wir 10 Element und später sind es 20, also muss ich mein Array vergrössern.
"new" geht ja leider nicht, also habe ich mich mal mit calloc und realloc beschäftigt, aber das tut nicht so wie ich gerne möchte.
DBRecordType*daten;
...
UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
int size = 10;
daten= (DBRecordType*)calloc(size ,sizeof(DBRecordType));
...
size=20;
daten= (int *)realloc(daten, size*sizeof(DBRecordType));));
...
free(DBRecordType);
return 0
}
Das ist glaube ich bisschen naiv - oder. Ich habe es auch mit einzelnen Arrays probiert (also 2x char und 1x int) aber da kriege ichs auch nicht hin.
Gruss far
ich programmiere gerade für meinem Palm in C
Ich lade zur Laufzeit einen Datenbestand ein und dieser kann sich auch ändern und muss dann neu eingelesen werden. Die Daten sind ein struct der Form:
typedef struct DBRecordType
{
char a[20];
char b[20];
Int16 c;
} DBRecordType;
Am Anfang lade ich sagen wir 10 Element und später sind es 20, also muss ich mein Array vergrössern.
"new" geht ja leider nicht, also habe ich mich mal mit calloc und realloc beschäftigt, aber das tut nicht so wie ich gerne möchte.
DBRecordType*daten;
...
UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
int size = 10;
daten= (DBRecordType*)calloc(size ,sizeof(DBRecordType));
...
size=20;
daten= (int *)realloc(daten, size*sizeof(DBRecordType));));
...
free(DBRecordType);
return 0
}
Das ist glaube ich bisschen naiv - oder. Ich habe es auch mit einzelnen Arrays probiert (also 2x char und 1x int) aber da kriege ichs auch nicht hin.
Gruss far