token_by_delim
|
|
Aleksey | Дата: Воскресенье, 10.08.2008, 16:27 | Сообщение # 1 |
Советчик
Группа:
Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
| Первая моя статья! Это очень полезная функция!!! Она мне помогла сделать кланы из файла! ПРиступим к описанию: 1. Она вытаскивает Вам из строки символы от начала и до указанново вами символа. 2. Ей можно делать самые разные функции. Допустим: new colorr[256], index, nameglava[256];//создаём переменные newf=fopen("clans.txt",io_read);//открываем файл в формате "read" while(fread(newf,string,256) > 0)//читаем весь файл { index = 0;//на всякий случай приравниваем индекс к 0 index = token_by_delim(string,clanforp,'=',index);//берём символы из строки string, до символа "=", и затем засовываем это в clanforp if(index == (-1)) continue;//если функция удалась то продолжаем index = token_by_delim(string,colorr,'=',index+1);//берём символы из строки string, до символа "=", и затем засовываем это в colorr(не забываем к indexу прибавить 1!) if(index == (-1)) continue;//если всё получилось то продолжаем index = token_by_delim(string,nameglava,';',index+1);//берём символы из строки string, до символа ";", и затем засовываем это в nameglava(не забываем к indexу прибавить 1!) if(index == (-1)) continue;//это просто так, т.к. дальше продолжать уже некуда, что нам требовалось мы выполнили! //и теперь можно сделать с этими данными всё что угодно! Допустим присвоить игроку цвет из переменной colorr. SetPlayerColor(playerid, strval(colorr); //либо присоединить игрока к клану, записанному в переменной clanforp! GetPlayerName(playerid, string, 256); format(string, 256, "%s_%s", clanforp, string); SetPlayerName(playerid, string); }//закрываем функцию 3. Сама функция: token_by_delim(const string[], return_str[], delim, start_index) { new x=0; while(string[start_index] != EOS && string[start_index] != delim) { return_str[x] = string[start_index]; x++; start_index++; } return_str[x] = EOS; if(string[start_index] == EOS) start_index = (-1); return start_index; } Надеюсь моя статья кому-нибудь поможет! И я надеюсь профи нашего сайта ещё не видели этой функции
вааааааааааййй..// :(0
|
|
|
|
Spirit | Дата: Воскресенье, 10.08.2008, 17:10 | Сообщение # 2 |
Освоившийся
Группа:
Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус:
| думаю профи лепят её самостоятельно когда им это требуется :), но спс, может пригодится
Любиш садизм люби и мазахизм :)
|
|
|
|
Aleksey | Дата: Воскресенье, 10.08.2008, 17:41 | Сообщение # 3 |
Советчик
Группа:
Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
|
вааааааааааййй..// :(0
|
|
|
|
theAlone | Дата: Воскресенье, 10.08.2008, 20:24 | Сообщение # 4 |
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
| Опередил меня =) Но всё равно хорошо
|
|
|
|
Aleksey | Дата: Понедельник, 11.08.2008, 05:46 | Сообщение # 5 |
Советчик
Группа:
Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
| кстати я вначале не мог понять что она делает, когда понял сразу побежал делать кланы
вааааааааааййй..// :(0
|
|
|
|
OKStyle™ | Дата: Понедельник, 11.08.2008, 19:19 | Сообщение # 6 |
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
| То же самое, что и strtok, только ищет другой символ
Да потому что когда человек делает на заказ он не старается. © kRiSyo Кланяимся нофаму королю анимаций =))))))) © Manusya В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
|
|
|
|
Aleksey | Дата: Вторник, 12.08.2008, 05:24 | Сообщение # 7 |
Советчик
Группа:
Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
| хорошо а как он работает? стрток
вааааааааааййй..// :(0
|
|
|
|
OKStyle™ | Дата: Вторник, 12.08.2008, 08:31 | Сообщение # 8 |
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
| JIeXa, считывает данные до указанного символа в одну переменну, затем до следующего знака во вторую и т.д. По стандарту это " " (пробел), поэтому и пишут: /heal id hp. Можно указать "$", тогда будут писать: /heal$id$hp.
Да потому что когда человек делает на заказ он не старается. © kRiSyo Кланяимся нофаму королю анимаций =))))))) © Manusya В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
|
|
|
|
Aleksey | Дата: Вторник, 12.08.2008, 11:35 | Сообщение # 9 |
Советчик
Группа:
Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
| а где изменять знак?
вааааааааааййй..// :(0
|
|
|
|
theAlone | Дата: Вторник, 12.08.2008, 20:21 | Сообщение # 10 |
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
| Code strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= [b]' '[/b])) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } Где ' ', например '$'
Сообщение отредактировал [DPS]EvilRiaz - Вторник, 12.08.2008, 20:22 |
|
|
|
Aleksey | Дата: Среда, 13.08.2008, 05:18 | Сообщение # 11 |
Советчик
Группа:
Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
| нет... это я просто тупанул... вот: stock strtok(const string[], &index,seperator=' ') { new length = strlen(string); new offset = index; new result[MAX_STRING]; 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; } сепаратор изменять
вааааааааааййй..// :(0
|
|
|
|
LuxurY | Дата: Пятница, 15.08.2008, 15:44 | Сообщение # 12 |
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус:
| хороший код. я бы добавил учет экстра символов типа ("Hello!!!!!!!!world"), идентацию и установку значения start_index по дефолту на 0. и один вопрос. сам делал?
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
|
|
|
|
theAlone | Дата: Пятница, 15.08.2008, 16:12 | Сообщение # 13 |
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
| LuxurY, отвечаю за него: Статья его(пример использования) а функция нет(не бейте ). Кстати эта функция есть в одном GM(vehicles) из "Беты 0.2.5". Там был пример загрузки тачки из файлов.
|
|
|
|
LuxurY | Дата: Пятница, 15.08.2008, 17:09 | Сообщение # 14 |
Уверенный в себе
Группа:
Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус:
| Quote (|DPS|EvilRiaz) LuxurY, отвечаю за него: Статья его(пример использования) а функция нет(не бейте lol ). Кстати эта функция есть в одном GM(vehicles) из "Беты 0.2.5". Там был пример загрузки тачки из файлов. вот я и думаю что не мог он такого написать. писал кто-нибудь с уровнем знания как у Y_Less'a или ниже. но на самом деле функция очень простая. это уже профессионализм ))
www.gtascript.ru admin www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
|
|
|
|
Хоммко | Дата: Суббота, 16.08.2008, 11:13 | Сообщение # 15 |
Новенький
Группа:
Продвинутые
Сообщений: 71
Награды: 1
Репутация: 9
Замечания: 0%
Статус:
| а по-моему, token_by_delim написан самми кейманом (не факт). зы не нашел полезности функции в топике. ззы не по теме, но если у меня в строке ДВА пробела, strtok поймет это? напр. строка /ban id
|
|
|
|