Регистр букв в iniGet -
iNoob - 24.12.2012
iniGet(File,namex,stringi);
Как сделать чтобы параметр namex искал без регистра букв маленькие/большие?
Re: Регистр букв в iniGet -
GameMan - 24.12.2012
Сказал бы ка ты, какой у тебя инклуд для чтения/записи файлов стоит?
Re: Регистр букв в iniGet -
AirKite - 24.12.2012
Никак. Нужно просто строку namex преобразовывать в нижний регистр.
Re: Регистр букв в iniGet -
iNoob - 24.12.2012
mxINI
Не думаю что преобразование поможет, нужно как-то именно отключить проверку на регистр в значении, это важно.
Re: Регистр букв в iniGet -
AirKite - 24.12.2012
Quote:
Originally Posted by iNoob
mxINI
Не думаю что преобразование поможет, нужно как-то именно отключить проверку на регистр в значении, это важно.
|
fopen в samp не поддерживает такие трюки, по этому, это сделать будет невозможно (разве что функция перебора регистра и проверка существования файла). Используй MySQL или SQLite. Ну или если принципиально в файлах то возможно плагин какой ни будь подойдёт.
UPD:
Хотя стоп, речь я так понял идёт не о имени файла а о ключе. Тогда поможет именно преобразование строк в нижний регистр. Рекомендую рассказать задачу, это упростило бы поиски альтернативного решения.
Re: Регистр букв в iniGet -
stabker - 24.12.2012
Перед сравнением ключей в mxINI добавь преобразование отправленного тобой ключа и ключа из файла на нижний регистр. А если без преобразования, то еще можно в случае несовпадения символа твоего ключа, с символом ключа из файла, сравнить его с аналогичным, только в другом регистре.
P.S. Это нужно делать внутри инклуда
Re: Регистр букв в iniGet -
iNoob - 24.12.2012
Ладно, как сделать правильное преобразование слова? А то сделаю не так как надо.
Re: Регистр букв в iniGet -
iNoob - 24.12.2012
Вот так нормально же?
stock OnPlayerCaps(test_text[])
{
new i = -1;
while(test_text[++i])
{
switch(test_text[i])
{
case 'A'..'Z': test_text[i] += 32;
}
}
return true;
}
Re: Регистр букв в iniGet -
AirKite - 24.12.2012
Должно быть нормально. Можно юзать стандартную функцию toupper, например вот так:
pawn Код:
stock strtoupper(string[]) {
new i = -1;
while(string[++i]) {
string[i] = toupper(string[i]);
}
}
Re: Регистр букв в iniGet -
iNoob - 25.12.2012
Точнее
tolower и еще лучше так
Код:
new i = -1;
while(string[++i]) string[i] = tolower(string[i]);
Всё спасибо тему можно закрывать
Re: Регистр букв в iniGet -
stabker - 25.12.2012
Если говорить о том, что все-таки лучше, то наверное проще будет условие при сравнении немного изменить, сделать вот так:
pawn Код:
if
(
curFilePos < 0
|| _ini_szFileContent[nFilePointer]{curFilePos} != tolower(szKeyName[curKeyPos]) && _ini_szFileContent[nFilePointer]{curFilePos} != toupper(szKeyName[curKeyPos])
|| _ini_szFileContent[nFilePointer]{curFilePos} == INI_STRING_DELIMITER
)
И никаких лишних функций не придется добавлять.
Re: Регистр букв в iniGet -
AirKite - 26.12.2012
Quote:
Originally Posted by iNoob
Точнее tolower и еще лучше так
Код:
new i = -1;
while(string[++i]) string[i] = tolower(string[i]);
Всё спасибо тему можно закрывать
|
И да и не совсем. В твоём случае неважно будешь ли ты поднимать регистр или опускать. Касательно того, что лучше тоже не совсем верно... на компилированную версию этот никак не повлияет, это уже стиль кода.
Так что между
pawn Код:
stock strtoupper(string[]) {
new i = -1;
while(string[++i]) {
string[i] = tolower(string[i]);
}
}
и
pawn Код:
stock strtoupper(string[]) {
new i = -1;
while(string[++i]) string[i] = tolower(string[i]);
}
нет разницы