Format

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
  • Vorwort:
    Jeder kennt es. Es handelt sich um format(string,sizeof(string),"Blubb ist %d",blubb);Erschreckenderweise habe ich festgestellt, dass viele nicht richtig damit umgehen können und den wiki.sa-mp.com Eintrag nicht richtig verstehen. Hier eine kleine Anleitung dazu:


    Syntax
    format(output[], len, const format[], {Float,_}:...)


    output
    Eine Variable, die den Inhalt annimmt.


    len
    new Name[länge];
    Die Länge kann variieren. Es empfielt sich den Array nur so groß zu machen, wie es benötigt wird und zum Beispiel für Namen keinen 256er nehmen, weil Namen maximal 20 Zeichen haben können.
    Beispiele:
    Chat: 128
    Textdraws: 1024
    Namen: 20


    Es gibt nun zwei Möglichkeiten, wie man die Größe angeben kann.
    Möglichkeit 1:
    new string[26]:
    format(string,26,"Name: %s",name);
    Möglichkeit 2:
    new string[26]:
    format(string,sizeof(string),"Name: %s",name);
    Ich empfehle die zweite Möglichkeit (für faule wie mich xD)



    const format[], {Float,_}:...
    Hier wird der String formatiert. In dem Text werden so genannte Platzhalter eingefügt (Bsp: %i für ein Integer). in {Float,_}:... werden diese dann durch etwas ersetzt, zum Beispiel eine Zahl oder ein Name.


    Platzhalter:
    %c - Einen einzelnen Buchstaben, Beispiel: "D"
    %d - Einen Integer (ganze Zahl), Beispiel: "2"
    %f - Einen Float (Dezimalzahl), Beispiel: "2.001"
    %i - Integer (ganze Zahl), Beispiel: "4"
    %s - Zeichenkette, Beispiel: "Hallo Welt"


    Beispiel:
    new wert = 500;
    new string[50];
    format(string, sizeof(string), "Mein Computer ist %d Euronen wert.", wert);
    Gibt aus:
    "Mein Computer ist 500 Euronen wert."



    Optimierungen
    Man kann das ganze natürlich auch noch optimieren oder Werte anders darstellen lassen.


    Beispiel 1:
    Ich mache den Array nur so groß, wie ich ihn auch braucht. So werde ich den Array, wenn ich in die Variable "%s.ini" packen möchte, wobei %s ein Name ist, nicht 256 Zellen groß machen, sondern nur 24. Grund: Die maximale Länge eines Namens ist 20 + 4 (.ini) = 24.


    Beispiel 2:
    Ganz oft bei Uhrzeiten. Man möchte eine reale Uhrzeit, zum Beispiel 12:03, darstellen, es wird aber 12:3 ausgegeben. Dafür gibt es eine ganz einfache Methode. Statt %dbenutzen wir einfach d. Warum nun d? Ganz einfach. die 2 gibt an, wie Lang die Zahl dargestellt werden soll. Ist der Integer aber kürzer wird vor ihm einfach eine 0 plaziert. Ergebnis: 12:03 statt 12:3.
    format(uhrzeit,sizeof(uhrzeit), "%d:%02d", Zeit1, Zeit2);


    MfG
    NeoPhoenix


    Verbesserungen sind gern gesehen


    Original Post


    Edit: Fehler verbessert
    Edit2: Chatlänge editiert

    3 Mal editiert, zuletzt von NeoPhoenix aka ArgonX5 ()

  • richtig gut gemacht für Neulinge xD
    für Neulinge 9.8/10


    Zitat

    %c - Einen einzelnen Buchstaben, Beispiel: "D"


    und ich wurde das so machen nur so xD

    Zitat

    %c - Einen einzelnen Buchstaben, Beispiel: 'D'

    I'm Sorry For Your Mistake!
    but it's yours

  • Also für Anfänger ein klasse Tutorial!
    9/10*
    Und somit werden wieder Fragen vermindert bei denen es sich um "format" handelt:)
    Achja,die Sache mit dem Namen,er wird den Namen nicht wiedergeben können!
    Du hast nur "new Name[Länge];" gemacht!
    Also du hast "GetPlayerName(playerid,Name,sizeof(Name));" vergessen;)
    Aber sonst alles Top!
    Weiter so!


    Mfg


    //Edit: Achte auf die Klein/Großschreibung!Die,die es mit Copy&Paste versuchen,werden scheitern!

  • Man sollte sich richtig informieren bevor man Tutorials schreibst ;).

    Zitat

    Chat: 256 128
    Textdraws: 1024
    Namen: 24


    Kannst es ja gerne nachlesen und dich selber überzeugen: Limits - SA-MP Wiki


    Zitat

    %x - Eine Zahl in hexadezimaler Schreibweise, Beispiel: "1101"


    Ich glaube du hast da eindeutig etwas misverstanden. 1101 wäre Dualsystem ,bzw Binäir. Dafür nutzt man aber den Platzhalter %b
    Hexadeizimal kannst du ja gerne dort nachlesen.