Das sind super Tips HellX, werde versuchen mich daran zu halten. Habe auch schon daran gedacht gehabt mit Pointern in Structs zu arbeiten, wusste aber nicht wie ich das angehen sollte. Werde es auf jedenfall versuchen. Danke für deine Antwort.

Edit: Ah, hab in deinem kleinen Beispiel einen Fehler gefunden. Du erstellst im ersten Konstrukt eine Funktion, die ein TEX_INFO Objekt zurückgibt, muss es nicht ein TEX_LAYER Objekt sein?

Edit2: Du hast da jetzt geschrieben, das du eigene Destruktoren schreibst, weil free nicht wirklich effizient ist. Wie kann man das machen?

Edit3: Mir ist noch etwas aufgefallen, wo ich nochmal nachfragen muss. In der Struktur TEX_INFO ist ja ein Array von TEX_LAYER Objekten definiert. In deinen Konstrukt ist wird aber nur ein Objekt Initialisiert. Das kann man aber auch mit einer schleife machen, die alle Array Objekte initialisiert, oder?

Edit4: Das mit den Konstrukten funzt nicht. Wenn ich auf das Objekt in einer funjtion zugreifen möchte, stürzt das Programm ab ( also versucht auf einen leeren Pointer zuzugreifen. Habe aber das Konstrukt zugewiesen. Hier der Code:

Code:
  
typedef struct
{
char tex_name[35];
int tex_id;
int tile_count;
}TEX_LAYER;

typedef struct
{
TEX_LAYER* tex_layer[layer_count];
char vorschau[20];
char format[5];
}TEX_INFO;

TEX_LAYER* getTEX_LAYER()
{
TEX_LAYER* temp = (TEX_LAYER*)(malloc(sizeof(TEX_LAYER)));
temp->tex_name = " ";
temp->tex_id = 0;
temp->tile_count = 16;
return(temp);
}

TEX_INFO* getTEX_INFO()
{
var count_var = layer_count-1;
TEX_INFO* temp = (TEX_INFO*)(malloc(sizeof(TEX_INFO)));

while(count_var > 0)
{
temp->tex_layer[count_var] = getTEX_LAYER();
count_var -= 1;
}

temp->vorschau = "_vorschau";
temp->format = ".dds";

return(temp);
}

...
tex_info = getTEX_INFO();
...

//Und hier crash es und nicht nur da, bei allen zugriffen auf das Objekt crashed es.

function get_tex_enter( var x, var y, TEXT* text_p, TEX_INFO* tinfo, var index, STRING* enter, BMAP* pre_map, PANEL* layer_tx)
{
...
tinfo->tex_layer[index]->tex_id = index;
...
return;
}
...
//die aufgerufene function hat folgende Parameter:
get_tex_enter(920, 90, eingabetext,tex_info, button_number, eingabe, test, layer1);
...



Wie kann ich das besser machen?

Last edited by Clockmaster; 07/01/07 08:57.

Do Your Best.
Gib dein Bestes.