SA-MP Forums Archive
Чтение многостраничного файла - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Чтение многостраничного файла (/showthread.php?tid=163687)



[РЕШЕНО]Чтение многострочного файла - -Stranger- - 28.07.2010

Собственно опять засада у меня.
Хочу сделать систему помощи на диалоговых окнах, но при этом текст читать из файлов(что-бы не перекомпилировать при изменении)

Вроде всё просто:
Code:
new File: f = fopen(fname,io_read), buff[max_line];
while(fread(f,buff)){
 ShowPlayerDialog(playerid,18,DIALOG_STYLE_MSGBOX,msg,buff,">>","<<");
}
fclose(f);
Однако в окне появляется только последняя строчка файла.

Помогите разобраться в чём дело...


Re: Чтение многостраничного файла - ONIXS - 28.07.2010

Весь текст файла запомни в строковую переменную и выведи, а так у тебя создаётся тьма диалоговых окон из которых ты увидишь только последнее с последней строчкой


Re: Чтение многостраничного файла - Romanius - 28.07.2010

можеш записывать строки в пропети массив и потом их выводить


Re: Чтение многостраничного файла - Zeex - 28.07.2010

А на кой его построчно считывать?

pawn Code:
fblockread(fname, buff, sizeof(buff));
ShowPlayerDialog(playerid,18,DIALOG_STYLE_MSGBOX,msg,buff,">>","<<");
Только надо еще не забыть увеличить buff


Re: Чтение многостраничного файла - -Stranger- - 28.07.2010

Не знал что "while(fread(f,buff))" будет работать как цикл.
Сделал так, всё работает как нада:

Code:
format(msg,max_line,"Справка: %s",tmp);
new File: f = fopen(fname,io_read), buff[max_line], helptext[dialog_line];
while(fread(f,buff)) format(helptext,dialog_line,"%s%s",helptext,buff);
fclose(f);
ShowPlayerDialog(playerid,18,DIALOG_STYLE_MSGBOX,msg,helptext,">>","<<");
Всем большое спасибо


Re: Чтение многостраничного файла - MX_Master - 28.07.2010

Можно хранить в SQLite таблице страницы, если их мало. Если разных записей в БД SQLite превышает 1500, то база начинает тормозить сервер. А так SQLite или MySQL как и для сайта, так и для серверного контента в самый раз.

Свои пять копеек насчет файлов вставлю..
Каждый раз не советую делать чтение из файла при обращении к тексту страницы, это же реал загрузка файловой системы, если часто читают. Самое чОткое решение, хранить в сжатом виде (а то и в обычном) на сервере, и к примеру, каждые 5 мин проверять, изменился ли файл (соответственно размер файла). Если изменился, то из файла текст поместить в переменную сервера. Примерно как-то так.


Re: Чтение многостраничного файла - -Stranger- - 28.07.2010

Работа с базой данных SQLite, а лучше MySQL это очень интересная идея. Вторая на сервачке есть и используется, НО делать тока хелп на мускуле это как-то не правильно. Если переходить на базы, то сразу всем (акки, тачки, дома............), НО боюсь там много чего нужно переделывать будет, да и с MySQL Я особо не разбираться, знаю только примитив.

В данный момент у меня весь сервер GTA находиться в RAM диске. А там скорость под 2гб\с... так что думаю что проблем с задержками не будет... Хотя.. время покажет)))


PS. добавлю:
Я сейчас параллельно делаю сайт, что-то типа личного кабинета для игроков и Админов, где игроки смогут покупать услуги, Менять настройки, восстанавливать пароль по e-mail.... Пока реализовано: для игроков общая статистика игрока, для Админа статистика всех игроков. Система работает напрямую с файлами GTA сервера. Остановился на том, что не могу на карте показать все машины и дома игрока(нада прочитать почти 2000 файлов, в них отсеять тока для данного игрока и тока потом составить массив из координат и типов объектов), на это уйдет 1-2 минуты, с MySQL 1-2 секунды


Re: Чтение многостраничного файла - MX_Master - 29.07.2010

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