Datentyp Enum String

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
  • Hey,
    ich habe ein Problem mit der Benutzung einer Variable innerhalb eines Enums als String. Und zwar will ich in meinem Gebäudesystem prüfen, ob der Spieler - der auf dem PickUp steht - der Besitzer oder unter den Mietern ist. Mein Problem liegt bei den Mietern, sie werden durch Komma getrennt in einer MySQL Spalte abgelegt und ich will mit "strfind()" nach dem Namen dort suchen:


    if(playername[playerid] == GebaeudeInfo[i][gBesitzer] || strfind(GebaeudeInfo[i][gMieter], playername, 1, 0))
    {
    -----
    }


    Als Fehler wird mir dieses hier ausgegeben:


    Code
    C:\Verschiedenes\GTA San Andreas - Multiplayer\gamemodes\ReallifeSQL.pwn(2225) : warning 213: tag mismatch


    Also denke ich ein Datentypfehler bei "strfind()". In dem Enum ist es allerdings auch als Array angegeben:


    Code
    enum GebaeudeDaten
    {
            ...
    	gBesitzer[128],
    	gMieter[128],
            ...
    }



    Ich hoffe ihr könnt mir weiterhelfen.


    MfG

    [align=center]

    Einmal editiert, zuletzt von .Art ()

  • Irgendwie nicht?


    Das hat nichts mit der Spalte Whatever zutun, sondern eher damit das du es in einem String speicherst.

  • Irgendwie nicht?


    Das hat nichts mit der Spalte Whatever zutun, sondern eher damit das du es in einem String speicherst.


    Mit "strcmp()" überprüfe ich, ob der String "Playername" mit dem Inhalt der Spalte "Mieter" übereinstimmt. Mit "strfind()" sucht es in dem String der Mieter nach dem Inhalt von Playername. Ergo kann ich mit "strcmp()" nur einen einzelnen Namen in der Spalte haben damit es funktioniert. Außer ich splitte es vorher, aber dann kann ich ja gleich mit "strfind()" arbeiten. Meine Frage ist nur, wie ich die Variable im Enum richtig als String markieren kann.


    MfG

    [align=center]

  • Trozdessen solltest du mal probieren playername[playerid] == GebaeudeInfo[i][gBesitzer] in strcmp umzuschreiben.

  • Trozdessen solltest du mal probieren playername[playerid] == GebaeudeInfo[i][gBesitzer] in strcmp umzuschreiben.


    Es geht mir doch garnicht um die Besitzerabfrage. Die ging ja schon (Mit "strcmp()" übrigens nicht, da -> gleicher Fehler wie beim Mieter). Hier geht es mir um die Benutzung von der Variable in "strfind()".



    MfG

    [align=center]

  • strfind([GebaeudeInfo[i][gMieter], playername, 1, 0))



    In:
    strfind(GebaeudeInfo[i][gMieter], playername, 1, 0))



    Da war ein "[" am Anfang.



  • Sorry, aber war ein Schreibfehler im Forum. Ich hatte versucht es rot zu markieren und es ist noch was vom [COLOR] übergeblieben.

    [align=center]

  • playername[playerid] == GebaeudeInfo[i][gBesitzer]


    Was ist das eigentlich hier?


    Du versuchst 2 Arrays so zuvergelichen wie du es normalerweise mir char bzw Zahlen machst.
    Das funktioniert nicht da PAWN nur char für char überprüft,
    da kannst natürlich jeden "Buchstaben" einzelnd prüfen, macht aber eher weniger sinn


    strcmp müsste dir da weiter helfen.
    an strfind ist soweit nichts falsch

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Okay, danke Leute. Hatte den Fehler völlig falsch vermutet. Es lag erstens an dem Vergleich von dem String und der "Type missmatch" Fehler existierte, weil ich in "strfind()" "1" und nicht als Boolean "true" geschrieben habe.


    MfG

    [align=center]