forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Вывод строк из файла. Как? (http://forum.boolean.name/showthread.php?t=14603)

Drayfer 17.04.2011 22:10

Вывод строк из файла. Как?
 
Искал по форуму, но так ничего подходящего и не нашел.
Вот что нужно:

Пишу игру. Есть диалоги, которые построчно будут считываться с файла при наступлении определенных событий.

Допустим в файле диалоги будут храниться построчно. Как мне построчно выводить строки? Я так понимаю функцией ReadLine?
Только потом как продолжить вывод строк начиная не с первой, а с какой-то определенной?
Вот допустим вывел первые три строки, а дальше нужно потом по ходу программы после какого-то события вывести четвертую и т.д. С одного файла...

Как это реализовать? Заранее спасибо!

Reizel 17.04.2011 23:25

Ответ: Вывод строк из файла. Как?
 
Если строки не очень большие - можно сделать чуть по говнокодерскому - записывать их блоками константной длины. Потом тупо читать целый блок и записвать с него данные в строку. Но это весьма медленно, зато при огромных размерах файла ускорит индексацию (позиция n-ной строки: n*STR_SIZE, где STR_SIZE - размер блока)
Но можно сделать по-другому, более экнонмно:
первый int(readint()) - длина строки, потом идут байты этой строки последовательно. Потом опять размер следующей строки и т.д. При поиске нужной строки просто берем первый int, прибавляем к позиции файла его, смещаем указатель в файле, потом опять читаем размер следующей строки, прибавляем, смещаем, и так пока не найдем нужную строку 6)

Mhyhr 18.04.2011 14:18

Ответ: Вывод строк из файла. Как?
 
Цитата:

Есть диалоги, которые построчно будут считываться с файла при наступлении определенных событий.
Не не не. Автор загружай всё сразу, и используй из оперативки, благо текст весит копейки.

Drayfer 18.04.2011 14:48

Ответ: Вывод строк из файла. Как?
 
Цитата:

Сообщение от Mhyhr (Сообщение 186266)
Не не не. Автор загружай всё сразу, и используй из оперативки, благо текст весит копейки.

Ну вот допустим загружу все сразу. А как потом обращаться к конкретной строке?

Gector 18.04.2011 15:14

Ответ: Вывод строк из файла. Как?
 
Юзай номер строки при вызове.

Drayfer 18.04.2011 15:18

Ответ: Вывод строк из файла. Как?
 
Gector, а можно конкретней - какая функция обращается к строке по ее номеру?

SBJoker 18.04.2011 15:34

Ответ: Вывод строк из файла. Как?
 
Я думаю топикстартеру стоит почитать про массивы, а так же про ReadLine.
Возможно натолкнёт на мысли в правильном направлении.

Gector 18.04.2011 16:58

Ответ: Вывод строк из файла. Как?
 
Цитата:

Gector, а можно конкретней - какая функция обращается к строке по ее номеру?
Там смотря какой порядок в файле был. Джокер прав. Почитай в справке про массивы. Там легко все.

Ky3R_94 19.04.2011 03:34

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)

Как-то так о_О

Reizel 19.04.2011 10:05

Ответ: Вывод строк из файла. Как?
 
Цитата:

Код:

i=0
Repeat
        i=i+1
Until (Mid(a$,i,1)=":") Or (i>Len(a$))


Индус?
instr()

Ky3R_94 19.04.2011 17:01

Ответ: Вывод строк из файла. Как?
 
Цитата:

Сообщение от Павел (Сообщение 186319)
Индус?
instr()

Ага... :) Привычка после школного программинга на pascal'е-qbasic'е осталась... Там такой функции не было вроде :dontknow:


Часовой пояс GMT +4, время: 13:27.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot