Регистр букв в iniGet
#1

iniGet(File,namex,stringi);

Как сделать чтобы параметр namex искал без регистра букв маленькие/большие?
Reply
#2

Сказал бы ка ты, какой у тебя инклуд для чтения/записи файлов стоит?
Reply
#3

Никак. Нужно просто строку namex преобразовывать в нижний регистр.
Reply
#4

mxINI

Не думаю что преобразование поможет, нужно как-то именно отключить проверку на регистр в значении, это важно.
Reply
#5

Quote:
Originally Posted by iNoob
Посмотреть сообщение
mxINI

Не думаю что преобразование поможет, нужно как-то именно отключить проверку на регистр в значении, это важно.
fopen в samp не поддерживает такие трюки, по этому, это сделать будет невозможно (разве что функция перебора регистра и проверка существования файла). Используй MySQL или SQLite. Ну или если принципиально в файлах то возможно плагин какой ни будь подойдёт.

UPD:
Хотя стоп, речь я так понял идёт не о имени файла а о ключе. Тогда поможет именно преобразование строк в нижний регистр. Рекомендую рассказать задачу, это упростило бы поиски альтернативного решения.
Reply
#6

Перед сравнением ключей в mxINI добавь преобразование отправленного тобой ключа и ключа из файла на нижний регистр. А если без преобразования, то еще можно в случае несовпадения символа твоего ключа, с символом ключа из файла, сравнить его с аналогичным, только в другом регистре.

P.S. Это нужно делать внутри инклуда
Reply
#7

Ладно, как сделать правильное преобразование слова? А то сделаю не так как надо.
Reply
#8

Вот так нормально же?

stock OnPlayerCaps(test_text[])
{
new i = -1;
while(test_text[++i])
{
switch(test_text[i])
{
case 'A'..'Z': test_text[i] += 32;
}
}
return true;
}
Reply
#9

Должно быть нормально. Можно юзать стандартную функцию toupper, например вот так:
pawn Код:
stock strtoupper(string[]) {
    new i = -1;
    while(string[++i]) {
        string[i] = toupper(string[i]);
    }
}
Reply
#10

Точнее tolower и еще лучше так

Код:
new i = -1;
while(string[++i]) string[i] = tolower(string[i]);
Всё спасибо тему можно закрывать
Reply
#11

Если говорить о том, что все-таки лучше, то наверное проще будет условие при сравнении немного изменить, сделать вот так:

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
)
И никаких лишних функций не придется добавлять.
Reply
#12

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]);
}
нет разницы
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)