Mehrere Daten zurückgeben

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 zusammen,


    ich möchte gerne ein Array zurückgeben, so wie man das von php kennt. Aktuell habe ich folgenden Code, doch wie mache ich weiter?


    stock GetData(id)
    {
    if(id>0)
    {
    new tmp[MAX_Q];
    new result[MAX_Q];
    new name[MAX_Q];
    new desc[MAX_Q];


    format(tmp, sizeof(tmp), "SELECT name, desc FROM %s WHERE id =`%i`", DATA_TABLE, id);
    mysql_query(tmp);
    mysql_store_result();
    mysql_fetch_row(result);
    mysql_fetch_field("name", name);
    mysql_fetch_field("desc", desc);
    mysql_free_result();


    return // <------------- ???? In php würde ich jetzt sowas wie array('name' => $name, 'desc' => $dec); machen, aber wie geht das in pawn?
    }
    }


    Danke :)

    2 Mal editiert, zuletzt von Mutschas () aus folgendem Grund: Kommentar nach "return" eingefügt.

  • Ich würd das so machen:
    stock GetData(id, &wert1[], &wert2[])
    {
    if(id>0)
    {
    new tmp[MAX_Q],result[MAX_Q];
    format(tmp, sizeof(tmp), "SELECT `name`, `desc` FROM `%s` WHERE `id` = '%d'", DATA_TABLE, id);
    mysql_query(tmp);
    mysql_store_result();
    mysql_fetch_row(result);
    mysql_fetch_field("name", wert1);
    mysql_fetch_field("desc", wert2);
    mysql_free_result();
    }
    return 1;
    }


    //Anwendung:
    new str[2][50];
    GetData(id, str[0], str[1]);
    str[0] = name;
    str[1] = desc;
    Es kann funktionieren aber da ich es nicht getestet habe gebe ich keine Garantie

    All in all it's just another brick in the wall

  • Zunächst mal Danke für deinen Denkansatz was das Referenzieren an geht. Schön, dass Pawn wenigstens das kann :)


    Du meintest statt
    str[0] = name;
    str[1] = desc;
    sicherlich
    name = str[0];
    desc = str[1];
    gell?


    Also wenn ich das so compile, erhalte ich diesen Fehler:


    Zitat

    error 067: variable cannot be both a reference and an array (variable "name")

    2 Mal editiert, zuletzt von Mutschas () aus folgendem Grund: Akso = Also


  • Geht nicht habe ich letztens auch so Gemacht BlackAce meinte dann in Skype,
    Das geht so nur bei Intergers und Floats soweit ich es noch weiss ;)

  • Erledigt:


    Strings werden in Pawn immer automatisch als Referenz angesehen.
    Lösung: Einfach, das &-Zeichen bei den Parametern der Funktion entfernen.



    Nochmals danke für den Denkanstoß Beavis was das Referenzieren an geht.


    Funktioniert nun :)

  • Geht nicht habe ich letztens auch so Gemacht BlackAce meinte dann in Skype,
    Das geht so nur bei Intergers und Floats soweit ich es noch weiss


    Ich wusste es jetzt nicht daher konnte ich keine Garantie geben
    Aber das Prinzip war schon richtig was ich da gemacht habe


    Aber Mutschas wenn du das & wegmachst, dann hast du das problem das es nicht gehen wird

    All in all it's just another brick in the wall

  • Aber Mutschas wenn du das & wegmachst, dann hast du das problem das es nicht gehen wird


    Doch, es funktioniert problemlos. Teste es selbst :) Pawn referenziert Strings automatisch, da ist das manuelle Referenzieren überflüssig und man bekommt dann eben den Error.



    //Edit
    Teste es:



    main()
    {
    new string[20];
    test(string);
    printf("Test: %s", string);
    }


    stock test(text[])
    {
    format(text, 20, "Danke Beavis!");
    }

    Einmal editiert, zuletzt von Mutschas () aus folgendem Grund: Test hinzugefügt