PDA

Просмотр полной версии : [Native] fread



L0ndl3m
29.05.2014, 14:47
fread
Извлекает строку из файла.

Параметры:

(File: handle, string[], size = sizeof(string), bool: pack = false)

handle - уникальный идентификатор файла (был указан при открытии файла (fopen (http://pro-pawn.ru/showthread.php?9005)))
string - массив, в котором будет храниться строка, извлечённая из файла
size - размер строки (по умолчанию размер равен размеру массива string)
pack - запаковать ли строку: true - да, false - нет


Возвращаемые значения:
Размер извлечённой строки из файла

Пример использования (Загрузка аккаунта игрока):


new
str[128], // Массив для форматирования пути и извлечения строк из файла
;

GetPlayerName(playerid, str, sizeof(str)); // Получение никнейма игрока
format(str, sizeof(str), "Accounts/%s.ini", str); // Форматирование пути к аккаунту игрока

new
File: file = fopen(str, io_read) // Открытие файла с режимом чтения
;

if(file != File: 0) // Если файл успешно открылся
{
while(fread(file, str))
// Условие: пока длина считываемой строки не равна 0
// (это проверяется с помощью функции fread,
// которая возвращает длину строки, извлечённой из файла),
// выполним код, находящийся ниже в фигурных скобках
{
switch(YHash(str, false, hash_fnv1))
// С помощью функции YHash "сконвертируем" строку полученную из файла,
// и начнём проверять её с помощью оператора switch
// (что намного быстрее и проще, чем использование функции strcmp)
{
case _I@f<Password>: // Если текущая строка это: "Password" (что с англ. переводится как "Пароль"
{
strgetdata(str, " = ");
// С помощью пользовательской функции strgetdata,
// извлечём диапазон символов после строки: " = "
// (кто использует mxINI, тот наверняка знает, что при записи в файл,
// ключ и значение ключа разделяется именно этим знаком (строкой - " = "))
strmid(PlayerInfo[playerid][pPass], str, 0, 20, 21);
// Запишем полученную строку из файла в массив pPass
// (который был ранее создан в энумераторе, для записи пароля игрока)
}
case _I@f<Money>: // Если текущая строка это "Money" (что с англ. переводится как "Деньги"
PlayerInfo[playerid][pMoney] = strval(str[5]),
// Установим значение денег игрока с помощью функции strval
// (которая извлекает из строки число), и выдадим игроку количество денег,
// которое было извлечено из строки
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); // Выдадим количество денег
case _I@f<AdminLevel>: // Если текущая строка это "AdminLevel" (что с англ. переводится как "Уровень админки"
PlayerInfo[playerid][pAdminLevel] = strval(str[10]); // Установим игроку уровень администратирования
}
}
fclose(file);
}


Полезные ссылки:

Использование y_stringhash (http://pro-pawn.ru/showthread.php?7923)
Функция strgetdata (http://pro-pawn.ru/showthread.php?5898)



Автор статьи: Londlem (http://pro-pawn.ru/member.php?2057-Londlem)

Специально для: Pro-Pawn.Ru (http://pro-pawn.ru)

Копирование данной статьи без разрешения автора запрещено!