Beiträge von DMA

    Das entspricht leider ganz und garnicht meinem Geschmack.
    Aber gibt sicher Leute die das Design hübsch finden.


    Ansonsten, wenigstens paßt alles zusammen.

    Windows xP = Sehr Gutes Betriebssystem
    Windows Vista = Der Reinste Reinfall! xP ist auf jeden Fall schneller


    Mom, stop.
    Wieder so ein Stuß.
    So langsam reicht's mir hier im Forum.
    Man ließt hier nurnoch irgendwelche Behauptungen.
    Windows Vista ist spätestens seit SP1 mit fast jeder erdenklichen alten Software kompatibel, außerdem war Vista schon beim Release 3 x so schnell wie Windows XP.
    Wer natürlich Vista auf seinem Gurkenlaptop laufen läßt, der hat Pech.


    Selbes bei Vista vs Win7.
    Win7 ist nicht schneller, seine Fenster werden aber vor dem kompletten Backgroundload schon gezeichnet.


    Zidane:
    Lösung: Richtige Auflösung auswählen.

    Pro Array 6 Mb.
    Holla die Waldfee, was hier manchmal für ein Stuß von sich gegeben wird.
    Ein Cell = 32 Bit 4 Byte.
    D.h. ein Array mit 32 Zellen ist 32 x 4 Byte groß.
    Sagen wi es so: Um auf deine 6 Mb zu kommen, müßte man 262144 Zellen erstellen.

    Naja, früher war eh alles besser.
    Build Number und fertig.
    Diese Versionen verwirren eh, da man zwar mit 1.0 sein Ziel erreicht, aber 2.0 eben neue Ziele hat, soll man dann aber 1.1 eine Vorstufe von 2.0 setzen.
    Wobei der Unix-Standard ja wäre, das 2.0 ein neuen Kernel hat.


    Ich bin einfach für die "klassische" Methode: Buildnummer - Major - Minor.

    Mein Geschwindigkeitstest:
    #include <a_samp>


    #define ITERATIONS 1000000


    stock explode(aExplode[][], sSource[], const sDelimiter[] = " ", iVertices = sizeof aExplode, iLength = sizeof aExplode[])
    {
    strins(sSource, sDelimiter, strlen(sSource), 28);
    new
    iNode,
    iPointer,
    iPrevious = -1,
    iDelimiter = strlen(sDelimiter);


    while(iNode < iVertices)
    {
    iPointer = strfind(sSource, sDelimiter, false, iPointer);


    if(iPointer == -1)
    {
    strmid(aExplode[iNode], sSource, iPrevious, iLength, iLength);
    break;
    }
    else
    {
    strmid(aExplode[iNode], sSource, iPrevious, iPointer, iLength);
    }


    iPrevious = (iPointer += iDelimiter);
    ++iNode;
    }


    return iPrevious;
    }


    stock strget(strx[], pos, search = ' ', len = sizeof strx)
    {
    new arg, ret[128], idxx;
    for (new i = 0; i < len; i++)
    {
    if(strx[i] == search || i == len || strx[i + 1] == 10)
    {
    arg++;
    if (arg == pos + 1)
    {
    ret[i-idxx] = EOS;
    return ret;
    }
    else if (arg == pos)
    idxx += 1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }


    stock strtok(const string[], &index,seperator=' ') {
    new length = strlen(string);
    new offset = index;
    new result[255];
    while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }


    result[index - offset] = EOS;
    if ((index < length) && (string[index] == seperator))
    {
    index++;
    }
    return result;
    }


    main()
    {
    new
    t0,
    t1,
    t2,
    t3,
    i;
    t0 = GetTickCount();
    for (i = 0; i < ITERATIONS; i++)
    {
    strget("a b", 0);
    }
    t1 = GetTickCount();
    for (i = 0; i < ITERATIONS; i++)
    {
    new b;
    strtok("a b", b);
    }
    t2 = GetTickCount();
    for (i = 0; i < ITERATIONS; i++)
    {
    new bla[2][32];
    explode(bla, "a b");
    }
    t3 = GetTickCount();
    printf("Strget() 1: %04d, Strtok() 2: %04d, Explode() 3: %04d\n", t1 - t0, t2 - t1, t3 - t2);
    }


    Damit sollte man sehr aussage kräfte Ergebnisse bekommen.

    Also ich bevorzuge das Standard/Leer Theme.
    Find ich immernoch am besten.
    Anstatt TabSrMM würde ich auch nur SrMM verwenden.
    Hat die selben Funktionen, nur du hast jedes Gespräch in einem eigenem Fenster. (Wenn es zuviele werden, einfach die Gruppierungsfunktion von Windows aktivieren, btw. ist das Win7 Zeugs auch nichts anderes, da Gruppierung in Windows Vista, sobald man auf den Namen fährt, auch eine Vorschau zeigt.)


    Außerdem vllt die englische Version, weil manche deutschen Texte sind echt extrem verkurkst übersetzt.


    Das ganze sieht in der neusten Version (9.0 Alpha Build #2 - SVN) so aus:

    Wie das jetzt mit ycmd und sscanf ist, kann ich nicht sagen, da die Wiki down ist, aber hier das Ergebnis aus explode, strtok, strget (optimierte Version [1]):
    Strget() 1: 0814, Strtok() 2: 1105, Explode() 3: 0614


    Zwischen der unoptimierten und der optimierten strget liegen außerdem ~200ms.
    Durchläufe: 1000000 (Mit mehr wird der Unterschied natürlich noch deutlicher)


    Explode ist aufjedenfall schneller als strget und strtok.


    [1]: Optimiertes strget:
    stock strget(strx[], pos, search = ' ', len = sizeof strx)
    {
    new arg, ret[128], idxx;
    for (new i = 0; i < len; i++)
    {
    if(strx[i] == search || i == len || strx[i + 1] == 10)
    {
    arg++;
    if (arg == pos + 1)
    {
    ret[i-idxx] = EOS;
    return ret;
    }
    else if (arg == pos)
    idxx += 1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }

    Nope geht nicht, aber es gibt einen kleinen Umweg.
    MyFunc(a, b[], c = sizeof b)
    {
    if(a == 7)
    return 9; // Zahl
    format(b, c, "Hallo Welt");
    return 0xDEADBEEF;
    }


    Nutzen kann man das dann so:
    new msg[128], a;
    if((a = MyFunc(1337, msg)) == 0xDEADBEEF)
    {
    printf("%s", msg); // Weil a != 7
    }
    else
    {
    printf("%d", a);
    }

    Die waren auch störend, aber die Werbung hat ihr übriges dazu getan.
    Btw wird das JavaScript auch noch interpretiert wenn AdBlock es blockt, allerdings (zum Glück) nicht ausgeführt, deswegen ist die Werbung jetzt komplett verschwunden.

    In einem Fernsehbeitrag sagte sogar ein Afghane, man möchte lieber einen Krieg/Kampf gegen die Terroristen als von ihnen unterdrückt zuwerden.
    Die sahen auch nicht die Schuld der Toten beim Angriff auf die Tanklastwagen bei den Deutschen, sondern bei den Terroristen, immerhin haben diese dort Menschen hin angelogt, möglicherweise auch gezwungen.


    Edit:// Was wir machen sollten, ist aber aus der UN auszutretten.
    Wir finanzieren den Saftladen und uns wird noch mit Artikel 53 und 107 (o.ä.) der WW2 vor Augen gehalten.


    Btw waren viele Mitglieder aus der UN gegen eine Wiedervereinigung von Deutschland, allein deswegen sollte man aus der UN austretten. :>


    getstr(format[], const getfrom[], edit[], const pos, const sizet = sizeof edit)
    {
    new a, b, c = 0;
    for(new i = 0; i < strlen(getfrom); i++)
    {
    if(i+1 == strlen(getfrom))
    {
    i = strlen(getfrom);
    goto FnEndAccept;
    }
    if(b < strlen(format))
    {
    if(format[b] == '%')
    {
    if(b+1 < strlen(format))
    {
    ++b;
    switch(format[b])
    {
    case 'w':
    {
    format[b] = ' ';
    }
    case 't':
    {
    format[b] = '\t';
    }
    }
    }
    }
    if(getfrom[i] == format[b])
    {
    ++b;
    if(a < pos)
    {
    c = i + 1;
    ++a;
    }
    else if(a == pos)
    {
    FnEndAccept:
    for(new j = c, q = 0; j < i; j++, q++)
    {
    if(j < sizet)
    {
    edit[q] = getfrom[j];
    }
    if(j+1==sizet)
    edit[q+1] = '\0';
    }
    return 1;
    }
    }
    }
    }
    return 0;
    }


    getstr, für kleine Dinge reicht aber auch strget. :>

    Keine Gute Einstellung zu sagen "Hey,ich will Parameter in Commands haben / lernen",aber anstatt dcmd + sscanf ( oder ganz neu zcmd + sscanf ) zu nehmen benutzt ich strcmp + strtok ... ;)


    Wobei, dcmd würde ich nicht nutzen, immernoch ein Funktionsaufruf (5 Calls) mehr. :p