|
2D-программирование Вопросы, касающиеся двумерного программирования |
17.04.2011, 22:10
|
#1
|
Нуждающийся
Регистрация: 14.02.2011
Адрес: Украина, Луганск
Сообщений: 67
Написано 0 полезных сообщений (для 0 пользователей)
|
Вывод строк из файла. Как?
Искал по форуму, но так ничего подходящего и не нашел.
Вот что нужно:
Пишу игру. Есть диалоги, которые построчно будут считываться с файла при наступлении определенных событий.
Допустим в файле диалоги будут храниться построчно. Как мне построчно выводить строки? Я так понимаю функцией ReadLine?
Только потом как продолжить вывод строк начиная не с первой, а с какой-то определенной?
Вот допустим вывел первые три строки, а дальше нужно потом по ходу программы после какого-то события вывести четвертую и т.д. С одного файла...
Как это реализовать? Заранее спасибо!
|
(Offline)
|
|
17.04.2011, 23:25
|
#2
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Вывод строк из файла. Как?
Если строки не очень большие - можно сделать чуть по говнокодерскому - записывать их блоками константной длины. Потом тупо читать целый блок и записвать с него данные в строку. Но это весьма медленно, зато при огромных размерах файла ускорит индексацию (позиция n-ной строки: n*STR_SIZE, где STR_SIZE - размер блока)
Но можно сделать по-другому, более экнонмно:
первый int(readint()) - длина строки, потом идут байты этой строки последовательно. Потом опять размер следующей строки и т.д. При поиске нужной строки просто берем первый int, прибавляем к позиции файла его, смещаем указатель в файле, потом опять читаем размер следующей строки, прибавляем, смещаем, и так пока не найдем нужную строку 6)
|
(Offline)
|
|
18.04.2011, 14:18
|
#3
|
Бывалый
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений (для 858 пользователей)
|
Ответ: Вывод строк из файла. Как?
Есть диалоги, которые построчно будут считываться с файла при наступлении определенных событий.
|
Не не не. Автор загружай всё сразу, и используй из оперативки, благо текст весит копейки.
|
(Offline)
|
|
18.04.2011, 14:48
|
#4
|
Нуждающийся
Регистрация: 14.02.2011
Адрес: Украина, Луганск
Сообщений: 67
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вывод строк из файла. Как?
Сообщение от Mhyhr
Не не не. Автор загружай всё сразу, и используй из оперативки, благо текст весит копейки.
|
Ну вот допустим загружу все сразу. А как потом обращаться к конкретной строке?
|
(Offline)
|
|
18.04.2011, 15:14
|
#5
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Вывод строк из файла. Как?
Юзай номер строки при вызове.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
18.04.2011, 15:18
|
#6
|
Нуждающийся
Регистрация: 14.02.2011
Адрес: Украина, Луганск
Сообщений: 67
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вывод строк из файла. Как?
Gector, а можно конкретней - какая функция обращается к строке по ее номеру?
|
(Offline)
|
|
18.04.2011, 15:34
|
#7
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вывод строк из файла. Как?
Я думаю топикстартеру стоит почитать про массивы, а так же про ReadLine.
Возможно натолкнёт на мысли в правильном направлении.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
18.04.2011, 16:58
|
#8
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Вывод строк из файла. Как?
Gector, а можно конкретней - какая функция обращается к строке по ее номеру?
|
Там смотря какой порядок в файле был. Джокер прав. Почитай в справке про массивы. Там легко все.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
19.04.2011, 03:34
|
#9
|
Нуждающийся
Регистрация: 29.08.2009
Адрес: Україна, Донецьк
Сообщений: 71
Написано 13 полезных сообщений (для 45 пользователей)
|
Reply
Когда-то себе писал подобную штуку для поддержки нескольких языков в программе. Номер строк добавил для удобства, чтобы не запутаться.
Вот код:
Dim msg$(999)
Function LoadLanguage()
file=ReadFile("language.ini")
While Not Eof(file)
a$=ReadLine$(file)
i=0
Repeat
i=i+1
Until (Mid(a$,i,1)=":") Or (i>Len(a$))
If i<Len(a$)
index=Left(a$,i-1)
msg(index)=Right(a$,Len(a$)-i)
End If
Wend
CloseFile file
End Function
Файл можешь любой прикрутить, естественно) Но только соблюдай структутру!
Структура файла с текстом должна быть такой:
[Номер строки]:[Текст строки]
Например:
1:Заголовок окна
2:Текстовая строка
Строки могут идти не по порядку, если что
В своём коде сначала запускаешь эту функцию, а потом уже можешь обращаться к любой строке через msg([Номер строки]).
Ну например:
LoadLanguage()
AppTitle msg$(1)
Print msg$(2)
Как-то так о_О
__________________
PC: AMD Phenom x4, 4096 MB RAM, Nvidia GeForce 9600GT, Windows Vista
|
(Offline)
|
|
19.04.2011, 10:05
|
#10
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Вывод строк из файла. Как?
i=0
Repeat
i=i+1
Until (Mid(a$,i,1)=":") Or (i>Len(a$))
|
Индус?
instr()
|
(Offline)
|
|
19.04.2011, 17:01
|
#11
|
Нуждающийся
Регистрация: 29.08.2009
Адрес: Україна, Донецьк
Сообщений: 71
Написано 13 полезных сообщений (для 45 пользователей)
|
Ответ: Вывод строк из файла. Как?
Сообщение от Павел
Индус?
instr()
|
Ага... Привычка после школного программинга на pascal'е-qbasic'е осталась... Там такой функции не было вроде
__________________
PC: AMD Phenom x4, 4096 MB RAM, Nvidia GeForce 9600GT, Windows Vista
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:59.
|