strcmp problem

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 Community ich wünsche euch erstmal ein Frohes neues Jahr :D


    Vielleicht könnt ihr mir ja helfen, ich hatte vor eine Zeile aus einer Datei zu löschen, nur wenn ich das versuche sagt er mit die Zeile exestiert nicht.
    Nun hab ich ein wenig rumprobiert und bin zu dem Schluss gekommen, das ich strcmp falsch verwende oder es mit strcmp nicht funktioniert.
    Nun weiß ich nicht mehr weiter und bitte euch um Hilfe.


    Code liegt als pastebin vor



    //Edit: Bevor mir einer kommt ich soll die SUFU & die Wiki nutzen, dazu sag ich nur: Ich habe diese beiden Sacheb bereits genutz und sie haben mich nicht weiter gebracht

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

    Margarete Stokowski

    Einmal editiert, zuletzt von Akino Kiritani ()

  • Das tue ich nicht.


    Code:
    ocmd:deletecar(playerid,parms[])
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    switch(GetPVarInt(playerid, "Fraktion"))
    {
    case 0: DeleteCar(playerid,vehicleid,"Fraktionslose.autos");
    }
    }
    else return SendClientMessage(playerid,COLOR_SILVER,"Du bist nicht in einem Auto");
    return 1;
    }
    Ich glaube iwie nicht, das ich Fraktionslose.autos mit format dort eintragen muss


    Ich glaub das problem wird wohl in diesen Zeilen liegen
    Code:
    new DeleteString[256+128]; // Größe ist erstmal egal^^
    format(DeleteString,sizeof(DeleteString),"%d,%d,%.1f,%.1f,%.1f,%.1f,%d,%d",vfrak,vmodel,vehx,vehy,vehz,veha,vcolorA,vcolorB); <- hier vll
    printf("%s",DeleteString);
    if(strcmp(string,DeleteString,true,sizeof(string))==-1){print("Fehler! return -1"); return 0;} <- oder hier
    else if(strcmp(string,DeleteString,true,sizeof(string))==1){print("Fehler! returnt 1"); return 0;} <- bzw hier
    Achja er spuckt mir immer Fehler! return -1 aus


    //Edit: Etwas hinzugefügt

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

    Margarete Stokowski

  • Ich bin mir nicht sicher,was du mit den strcmp Abfragen bezweckst.
    Entweder die Strings sind identisch 0 oder nicht " != 0" .
    Du hast bei dir 1 und -1 und dazu noch ein else. Das tolle bei strcmp ist ja,dass es auch 5 oder -4 zurück geben kann . Somit wäre dein else mehr als sinnlos.



    if(strcmp(string,DeleteString,true,sizeof(string)) == 0 ){ // Strings sind identisch
    // Was auch immer du machen willst
    }
    else {
    //Strings sind unterschiedlich ...
    }


    Würde dir auch empfehlen StripNL zu benutzen, immer nachdem du aus einer Datei ließt.
    http://y-less.pastebin.ca/1000201


    while(fread(Datei, string))
    {
    StripNL(string);
    print("2");

  • Nachdem ich im englschen Forum nochmal geguckt habe, habe ich meine Funktion recodet, diese funktioniert jetzt dank Goldkiller auch :D nur schreibt er jetzt die Zeilen nicht mehr untereinander sondern nebeneinander und damit funktioniert das ganze Script natürlich auch nicht mehr -.-


    Code:
    stock DeleteFrakCar(vehicleid,DateiName[])
    {
    new vmodel = AutoDaten[vehicleid][Model]; //Vehicle Model
    new Float:vx = AutoDaten[vehicleid][vX]; // Vehicle X Achse
    new Float:vy = AutoDaten[vehicleid][vY]; // Vehicle Y Achse
    new Float:vz = AutoDaten[vehicleid][vZ]; // Vehicle Höhe
    new Float:va = AutoDaten[vehicleid][vA]; // Vehicle Rotation
    new vcolorA = AutoDaten[vehicleid][ColorA]; // Vehicle Farbe 1
    new vcolorB = AutoDaten[vehicleid][ColorB]; // // Vehicle Farbe 2


    new DeleteString[256+128];
    format(DeleteString,sizeof(DeleteString),"%d,%d,%.0f,%.0f,%.0f,%.0f,%d,%d",vmodel,vx,vy,vz,va,vcolorA,vcolorB);


    new EineZeileInDerDatei[1024];
    new File:f = fopen(DateiName, io_read);
    new File:temp = fopen("temp.autos", io_write);
    while (fread(f, EineZeileInDerDatei))
    {
    StripNL(EineZeileInDerDatei);
    if (strcmp (EineZeileInDerDatei, DeleteString,true,sizeof(EineZeileInDerDatei)) == 0)
    {
    printf("Diese Zeile wird nicht in die temp Datei geschrieben");
    continue;
    }
    fwrite(temp,EineZeileInDerDatei);
    }
    fclose(f);
    fclose(temp);


    //Überschreibe die Orginal Datei mit der temp Datei
    f = fopen(DateiName, io_write);
    temp = fopen("temp.autos", io_read);
    while (fread(temp, EineZeileInDerDatei))
    {
    StripNL(EineZeileInDerDatei);
    fwrite(f, EineZeileInDerDatei);
    }
    fclose(f);
    fclose(temp);
    fremove("temp.autos");
    return 1;
    }

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

    Margarete Stokowski

  • Wo genau meinst du bei DeleteString oder EineZeileInDerDatei ?


    //Edit: Es wäre echt nett wenn mir jemand helfen würde, da ich nicht weiß wo ich \r\n einfügen soll, es würd ja wenig Sinn machen, wenn ich das beim DeleteString mache. Nur wie soll ich das in diesen string bekommen?: EineZeileInDerDatei Ich hab das schon so ausprobiert fwrite(f, EineZeileInDerDatei\r\n); aber er spuckt mir dann nur diese Errors aus


    Zitat

    *:\****\*** ********\*********\AutosLaden.pwn(137) : error 001: expected token: ",", but found "\"
    *:\****\*** ********\*********\AutosLaden.pwn(137) : error 029: invalid expression, assumed zero
    *:\****\*** ********\*********\AutosLaden.pwn(137) : error 017: undefined symbol "r"
    *:\****\*** ********\*********\AutosLaden.pwn(137) : fatal error 107: too many error messages on one line

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

    Margarete Stokowski

    Einmal editiert, zuletzt von Akino Kiritani ()