AdminMod.de
https://www.adminmod.de/

Stringfunktion
https://www.adminmod.de/viewtopic.php?t=2536
Seite 1 von 1

Autor:  SN8P [ 16.04.2002, 02:04 ]
Betreff des Beitrags:  Stringfunktion

Wie kann ich denn die ersten x Zeichen von einem String abschneiden um den Rest zu verwenden ?!?

also zum Beispiel:

Es sind keine Clantags erlaubt...
[TEST]Player -> Player

DANKE!

Autor:  daRope [ 16.04.2002, 09:29 ]
Betreff des Beitrags: 

Gute Frage. Gibt es in string.inc keine Funktion dafuer?





Hmm, da es in Small keine Zeiger gibt, wird es wohl auf ein zeichenweises Kopieren hinauslaufen. Das kannst Du natuerlich auch in-place machen, wenn Du willst.





Ansonsten versuch doch mal, ob diese kleine Schweinerei funktioniert:

Code:
new From[] = [TEST]Player
new To[20];

strcpy( To, sizeof(To), From + 6);
Ich habe aber keine Ahnung, ob das wirklich geht.

Autor:  Sir Drink a lot [ 16.04.2002, 18:44 ]
Betreff des Beitrags: 

Wie sieht es damit aus ?
Code:
/*
 *  Returns the first token from source (where token is defined as
 *  a string held within delimiters), up to the maximum length).
 *  sToken is filled with token, and the return value is the length
 *  of sToken.  -1 if no token found.
 *  This function can be called repeatedly to get further tokens;
 *  in this case, leave source blank.
 */
native strtok(sSource[], sDelimiters[], sToken[], iMaxLen);

/*
 *  Returns in sRest what is left over of a string on which strtok has been called.
 *  Return value is the length of sRest, -1 if no rest is left or if strtok hasn't 
 *  been called yet.
 */
native strtokrest(sRest[], iMaxLen);

/*
 *  Like strtok, but allows for grouping 'meta-token' that ignores other tokens.
 *  (eg, strgtok("'This is' a test", " ", "'", sToken, 20)
 *  will return sToken1 as "This is")
 *  strgtok uses a *different* internal buffer than strtok. You cannot 
 *  mix strtok and strgtok calls on the same buffer (empty sSource).
 */
native strgtok(sSource[], sDelimiters[], sGrouping[], sToken[], iMaxLen);

/*
 *  Returns in sRestwhat is left over of a string on which strgtok has been called.
 *  Return value is the length of sRest, -1 if no rest is left or if strgtok hasn't 
 *  been called yet.
 */
native strgtokrest(sRest[], iMaxLen);
Schau mal in die Sting.inc da gibt es auch noch andere Sachen, mit denen Du sowas lösen kannst.

Autor:  SN8P [ 17.04.2002, 14:20 ]
Betreff des Beitrags: 

Happy Dankeschön! :wink: :P

Autor:  MrSpoocy [ 23.04.2002, 04:39 ]
Betreff des Beitrags: 

also genau das such ich auch , hab probiert ohne ende aber ich bekomm das nicht hin. Kannst du dein script mal bitte posten ?

Autor:  SN8P [ 23.04.2002, 14:01 ]
Betreff des Beitrags: 

Da ich dem Namen selbst etwas hinzufüge, was ich später wieder entfernen will (erst mit der oben genannten Methode), habe ich das schliesslich so gemacht wie es am einfachsten ist... mit einem Leerzeichen! -> strbreak()

Aber mit einer for-Schleife müsste das auch gehen...
Vielleicht von hinten nach vorn... ?

Autor:  daRope [ 23.04.2002, 19:59 ]
Betreff des Beitrags: 

Genaus was suchst Du auch, Spoocy?

Autor:  MrSpoocy [ 23.04.2002, 20:10 ]
Betreff des Beitrags: 

das

[TEST]Player -> Player

also bei connecten sollen bestmmte clan-tags endfernt werden.

Autor:  daRope [ 23.04.2002, 20:18 ]
Betreff des Beitrags: 

Jo, aber was fuer Clan Tags?

Autor:  MrSpoocy [ 23.04.2002, 20:27 ]
Betreff des Beitrags: 

[WHZ]Nick

Autor:  daRope [ 23.04.2002, 22:17 ]
Betreff des Beitrags: 

Hmm, wohl doch am ehesten noch eine for()-Schleife.
Code:
new i;
new target[50];
new source[] = "[WHZ]Nick";

for ( i = 5; i < sizeof(target); i++ ) {
    target[i-5] = source[i];
    if ( source[i] == '^0' ) break;
}  // for

target[i] = '^0';

Autor:  daRope [ 24.04.2002, 07:46 ]
Betreff des Beitrags: 

Hoppala! Und im Eifer des Gefechts direkt einen schoenen off-by-one Fehler produziert. Die letzte Zeile sollte besser lauten:




Code:
target[sizeof(target)-1] = '^0';

Seite 1 von 1 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/