Чтение многостраничного файла
#1

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

Вроде всё просто:
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);
Однако в окне появляется только последняя строчка файла.

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

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

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

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

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

Не знал что "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,">>","<<");
Всем большое спасибо
Reply
#6

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

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

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

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


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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)