Generischen Zeiger auf Datenstruktur legen



  • Hallo,

    ich habe folgendes Problem.
    Ich besitze zwei Datenstrukturen, mit dem selben Aufbau.

    typedef struct
    {
    	const char 		*ccNodeText;  	// AnsiString Knotentext (Menütext)
    	int			 	iMenuId;	  	// Integervariable für die Identifizierung
    									// des Menüfesnters.
    	int 			iParameters[];	// Parameternummer, die mit dem Eintrag
    									// abgedeckt werden.
    	int 			iHelpIndex;		// Variable zur Identifizierng des
    									// Hilfeeintrags in der Hilfedatei.
    	int 			iIconIndex;		// Integervariable zur identifizierung
    									// des Icons an der Stelle
    	float			fMin;  			// Minimalwert
    	float			fMax;			// Maximalwert
    	//int				iNodeIndex;		// Variable ist Identifizierend für den
    									// Knoten.
    									// iNodeIndex = 0 wird nicht berücksichtigt
    									// iNodeIndex > 0 Eintrag im mit Parameter
    	void			*Data;			// void-Zeiger auf Datenstruktur
    } PARAMETER_TREE;
    

    Die beiden Strukturen sehen wie folgt aus:

    / Einstiegsknoten des TreeView-Objekts
    const PARAMETER_TREE TopicTree1[] =
    {
    
    	{"Datensatz",NODE_NOTAVAIL},
    	{"Dataset_Information", NODE_NOTAVAIL, {0}, 0, 0, 0, 0, 0},
    	{"\0", NODE_NOTAVAIL}
    };
    
    //---------------------------------------------------------------------------
    // Einstiegsknoten des TreeView-Objekts
    const PARAMETER_TREE TopicTree0[] =
    {
    	{"Dataset", NODE_NOTAVAIL},
    	{"Basic_Configuration" , NODE_MENU, {0}, 0, 0, 0, 0, (void*)TopicTree1},
    	{"\0", NODE_NOTAVAIL}
    };
    

    Wie zu erkennen ist, das letzte Element der Datenstruktur ein generischer Zeiger auf eine andere Datenstruktur.
    Möchte ich nun auf den Eintrag "TopicTree0[1].Data" zugreifen, erhalte ich aber nur einen Wert NULL und nicht hinter der Adresse liegende Datenstruktur "TopicTree1". Ich muss dieses aber über einen void*- Zeiger lösen. Was mache ich verkehrt? Wie kann ich das Problem lösen?



  • Nach drei Stunden Suche, habe ich endlich das Problem gefunden.
    Die Datestruktur entält einen Eintrag Namens
    int iParameters[]

    Musste dieses auskommentieren, dmit der variable Speicherbereich verschwindet.



  • Hallo

    Hat die Frage mit dieser zu tun?
    😕

    bis bald
    akari


Anmelden zum Antworten