Problem mit Array als return wert



  • anonymus schrieb:

    Kann dir zwar grad auch ned sagen, wieso da nur eins drinnen ist,
    arrays hab ich bisher aber immer so zurückgegeben:

    public ref class foo
    {
    public:
    ...
    
    	cli::array<int> ^ bar(...)
    	{
    		cli::array<int> ^ niceArray = gcnew cli::array<int>(25);
    		
    		return niceArray;
    	}
    
    };
    

    Das ist ein Tip, den mir anonymus in einem aelteren Thread gegeben hat- auf eine Frage, die ich hatte.
    Jetzt ist es so, dass ich eine Funktion so umgeschrieben, dass sie als Rueckgabewert einen Array einer Struktur hat- also nach dem folgenden Muster:

    cli::array<VERWALTUNG>^ SetzeINTEGER(argumente........)
    {
    ...
    }
    

    Das Problem ist jetzt nur, dass er mir einen Syntaxfehler fuer das ^ gibt- ich habe auch using namespace cli; benutzt- das Ganze ist aber nicht Teil einer Klasse sondern einfach nur eine Funtion in einer h-datei. Liegt das vielleicht daran?? Ich habe halt auch schon ausprobiert das ^ wegzulassen aber das mochte er dann wirklich ueberhaupt nicht und hat mir gesagt, dass er das SetzeINTEGER nicht kennt 😉
    Ich hoff eihr koennt mir helfen!!

    MfG Braunscheiger



  • Wie wärs mit Posten der Fehlermeldung ?



  • Fehlermeldung und bitte auch mal deine Struktur posten



  • Ohh Sorry!! Also die Fehlermeldung bei der "normalen" Version- also mit dem ^- war Syntaxfehler: ^ und die Struktur ist im Grunde genommen eine managed Struktur mit ein paar managed Arrays und ein paar anderen Variablen- die genaue Fehlermeldung und die Struktur kann ich leider erst heute abend posten!!



  • Geht das überhaubt? Einen Array zurrückgeben?

    Ich hab das bis jetzt immer so gelößt:

    Hier z.B. wandle ich einen String in einen Array um.
    Die Funktion hat direkt Zugriff auf den Array und gibt am Ende die Anzahl der Buchstaben zurrück.

    Funktion:

    int Misc::StrToCharArray(System::String * tempStr,char* CharArray)
    {
    	int charsOfStr=tempStr->get_Length();
    
    	for (int i=0; i<charsOfStr; i++)
    		CharArray[i]=static_cast<char>(tempStr->ToCharArray()[i]);
    
    	CharArray[i]=0x00;
    	return i;
    }
    

    Aufruf:

    Misc DoThis;
    char* TempCharArray = new char[128];
    DoThis.StrToCharArray(this->label1->text->ToString(),TempCharArray);
    


  • www.pat schrieb:

    Geht das überhaubt? Einen Array zurrückgeben?

    public ref class foo 
    { 
    public: 
    ... 
    
        cli::array<int> ^ bar(...) 
        { 
            cli::array<int> ^ niceArray = gcnew cli::array<int>(25); 
    
            return niceArray; 
        } 
    
    };
    


  • So hier sind jetzt also noch ein paar detailiertere Infos:

    cli:array<VERWALTUNG>^ SetzeINTEGER(cli:array<VERWALTUNG> main, String^ name, int wert, int dimension1 = -1, int dimension2 = -1, int dimension3 = -1)
    {
    ...
    }
    

    Das ist die Funktion, so wie ich sie aufrufe- eine nackte Funktion in einer H-Datei.

    c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(214) : error C2470: 'cli' : looks like a function definition, but there is no parameter list; skipping apparent body
    c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(214) : error C2059: syntax error : '^'

    Die Fehlermeldung dazu

    value struct VERWALTUNG
    {
    	String^ skriptname;
    	String^ ruecksprungskript;
    	String^ ruecksprungfunction;
    
    	int ruecksprungline;
    	int rang;
    	int line;
    
    	bool skriptaktiv;
    	bool rootskript;
    
    	array <BOOL> ^ boolvariablen;
    	array <INTEGER> ^ integervariablen;
    	array <FLOAT> ^ floatvariablen;
    	array <STRING> ^ stringvariablen;
    }
    

    Und zum Schluss noch die Struktur- ich hoffe igr koennt mir helfen mit diesem Problemchen!!



  • was mir gerade erst aufgefallen ist, ist, dass ich einen falschen Code gepostet habe- so solls richtig sein:

    cli:array<VERWALTUNG>^ SetzeINTEGER(cli:array<VERWALTUNG> main, String^ name, int wert, int dimension1 = -1, int dimension2 = -1, int dimension3 = -1)
    {
    ...
    }
    

    (habe ich oben schon berichtigt) Hat jetzt denn irgendwer dazu eine Idee??



  • Du hast doch in Deinem Crossposting eine Antwort erhalten


Anmelden zum Antworten