[ PROBLEM/FRAGE ] Return / Arry's

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,
    ich habe (wiedereinmal :D ) ein Problem:
    Ich möchte in meiner Funktion verschiedene Sachen zurückgeben lassen, doch wird mir folgender Fehler angezeigt:

    Code
    error 079: inconsistent return types (array & non-array)


    Ein kleines Beispiel:


    // ====> Irgendwo im Script (zB unter main) rufen wir folgende Funktion auf:
    new val = 3;
    myfunk(val);


    // ====> Nun zur Funktion selbst:
    myfunk(val)
    {
    if(val > 5) { // Wenn der Integerwert "val" über 5 ist, was er definitiv nicht ist, geben wir den String "s" zurück.
    new s[100];
    s = " Dies ist ein Tes! ";
    return s; // -"-
    }
    else {
    return val+5; // Wenn er eben 5 oder kleiner ist, addieren wir 5 dazu.*
    }
    return 1; // *
    }


    Alle mit dem * gekennzeichneten Zeilen geben an, wo der "Fehler" ist.


    Nun ist meine Frage, ist das unumgänglich?



    Ich freue mich über jede konstruktive Antwort,


    MfG,
    KornChief.

    Einmal editiert, zuletzt von KornChief ()

  • Du möchtest 2 Datentypen gleichzeitig zurückgeben , einmal eine Array und dann wieder Integer


    myfunk(val)
    {
    if(val > 5)
    {
    return 0;
    }
    else
    {
    return 1;
    }
    return 1; // *
    }


    if(myfunk(7))
    {
    DoSomething();
    }


    Meinst du so was in der Art oder was wolltest du dort jetzt anstellen ?

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


    Einmal editiert, zuletzt von BlackFoX ()

  • Entweder oder möchte ich.... eine Funktion, die bei der einen Bedingung den Arry (String) zurück gibt und beim anderen die Zahl, den Integerwert.


    // Edit: Genau... nur statt return 0 einen String und statt dem 2. return einen bestimmten Wert... geht das? Bei mir nicht ;X . Also nicht nur true und false, sondern genaue Werte :S ... Bei mir siehts nur so aus: Es soll einmal string[] = "..."; und einmal stringX[Y][]; , wobei Y für x-beliebige Werte steht...

    Einmal editiert, zuletzt von KornChief ()

  • Nope geht nicht, aber es gibt einen kleinen Umweg.
    MyFunc(a, b[], c = sizeof b)
    {
    if(a == 7)
    return 9; // Zahl
    format(b, c, "Hallo Welt");
    return 0xDEADBEEF;
    }


    Nutzen kann man das dann so:
    new msg[128], a;
    if((a = MyFunc(1337, msg)) == 0xDEADBEEF)
    {
    printf("%s", msg); // Weil a != 7
    }
    else
    {
    printf("%d", a);
    }