IP auf erste drei Blöcke splitten

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
  • Guten Abend Breadfisher.


    Für ein Multiaccount-Erkennungs-Befehl muss ich eine Ip bestehend aus 4 Zahlenblöcken auf die ersten drei kürzen. Dafür will ich folgenden Code nutzen:
    new ip[18];
    GetPlayerIp(zielid,ip,sizeof(ip));
    new pos,minus = 1;
    do
    {
    pos = strfind(ip,".",true,strlen(ip)-minus);
    minus ++;
    }while(pos == -1 || minus < strlen(ip));


    new query[64],row[64],newip[18];
    strmid(newip,ip,0,pos);


    Eigentlich müsste das ganze so funktionieren, dass solange vom letzten Zeichen des Strings IP um ein Zeichen weiter nach vorne gegangen wird bis ein Punkt gefunden wird. Von hinten fange ich an zu suchen, indem ich als Anfang der Suche nach einen Punkt bei der länge des Strings anfange und dann immer einen Wert weiter runter gehe. Theoretisch soll dann ja von strfind die Anzahl der Zeichen vor dem letzten Punkt ausgegeben werden. Diese Anzahl nutze ich dann in strmid um von Zeichen 0 bis zum ersten gefundenen Punkt des String (die ersten drei Ziffernblöcke) herauszuschneiden und im String newip zu speichern.


    Theoretisch sollte so aus der Ip 127.0.0.1 der String 127.0.0 isoliert werden. Jedoch erhalte ich als Ergebnis den String 127


    Sieht jemand den Fehler ? bzw kann mir eine einfachere Methode nennen mit der man die ersten drei Ziffernblöcke isolieren kann ?


    MFG
    Hagi


    edit: push nach Forenregeln

    Zitat von Forenregeln

    III.2 Damit sind insbesondere solche Beiträge oder Bearbeitungen von Beiträgen
    unzulässig, die ausschließlich dazu dienen sollen, das jeweilige Thema
    zu pushen.


    Dies gilt nicht, wenn der letzte Beitrag des Themas bereits seit 48 Stunden besteht.

    Einmal editiert, zuletzt von Hagi ()

  • Den String von newip einfach nicht größer als 6 Zeichen machen!

  • danke Benjamin funktioniert super.


    edit: 10.05.2012 - 20:22
    So neues Problemchen:


    Meine MYSQL Query
    format(query,sizeof(query),"SELECT Name, LastIP FROM User WHERE `LastIP` LIKE '%%s%'",newip); mit newip als die IP bestehend aus drei Blöcken funktioniert nicht.
    Gebe Ich die Abfrage so in die SQL Zeile in PHPMyAdmin ein, so erhalte ich minestend einen Eintrag und zwar meinen eigenen.
    Führe ich die Query jedoch übers Script aus, so werden keine Datensätze zurückgegeben.


    Ich habe so den Verdacht, dass die Prozentzeichen bezüglich des Enthaltens eines Strings vom Pawn Compiler falsch interpretiert werden, sodass eine falsche Query gesendet wird.
    Kennt da jemand eine Lösung oder Alternative ?
    Ich habe schon an escapen von den Zeichen gedacht, aber damit kenne ich mich leider nicht aus.


    Wenn ich es so versuche (glaub so \% ist das Prozentzeichen escaped)
    format(query,sizeof(query),"SELECT Name, LastIP FROM User WHERE `LastIP` LIKE '\%%s\%'",newip);
    dann crasht der Server.


    Schonmal Danke für eure Hilfe.


    edit(12.05.2012_13:10): push nach Forenregeln

    Zitat von Forenregeln

    III.2 Damit sind insbesondere solche Beiträge oder Bearbeitungen von Beiträgen
    unzulässig, die ausschließlich dazu dienen sollen, das jeweilige Thema
    zu pushen.


    Dies gilt nicht, wenn der letzte Beitrag des Themas bereits seit 48 Stunden besteht.


    edit(17.05.2012_11:39): push nach Forenregeln

    Zitat von Forenregeln

    III.2 Damit sind insbesondere solche Beiträge oder Bearbeitungen von Beiträgen
    unzulässig, die ausschließlich dazu dienen sollen, das jeweilige Thema
    zu pushen.


    Dies gilt nicht, wenn der letzte Beitrag des Themas bereits seit 48 Stunden besteht.


    edit(19.05.2012_16:34): push nach Forenregeln

    Zitat von Forenregeln

    III.2 Damit sind insbesondere solche Beiträge oder Bearbeitungen von Beiträgen
    unzulässig, die ausschließlich dazu dienen sollen, das jeweilige Thema
    zu pushen.


    Dies gilt nicht, wenn der letzte Beitrag des Themas bereits seit 48 Stunden besteht.

    5 Mal editiert, zuletzt von Hagi ()