Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > работа с файлом TXT


Автор: xVITALx 6.8.2007, 12:21
Здрасте я пишу программу для сортировки и просмотра манги.
У меня такая проблема есть файл в котором содержится инфа примерно такого вида:

[название манги]
tom=1    //номер тома
    glava=1 такая то    //название главы
        list=1=data/manga/(название манги)/файл.jpg    //номер листа и физический адрес
        list=2=data/manga/(название манги)/файл.jpg
        ...
    glava=2 такая то
    ...
tom=2
...
[название манги]
...

Вопрос: как сделать чтобы программа читала 
например только названия манги (все)
или адрес картинки (один и из определенной манги)

 smile 

Извините если не туда написал

Автор: Anark1 6.8.2007, 12:38
Непонятно, зачем забил этот вопрос в FAQ.
Код

MyMemo->Lines->LoadFromFile("text.txt")

Тогда твой текст превратится в массив строк. А каждая строка - массив символов.
Если твой текст имеет такую структуру, то например, чтобы обратиться к пути к файлу, то циклом проходишь по строке до третьего символа "/". 
Также по теме
http://wladm.narod.ru/Borland/filestxt.html

Автор: xVITALx 6.8.2007, 12:59
А нельзя сделать чтобы программа выбирала строки с заданными символами и выводила их(исключая эти символы)?

Автор: Anark1 6.8.2007, 15:31
Конечно можно.
Пользуйся циклом и массивом.

Автор: xVITALx 6.8.2007, 16:10
Прости я новичок в этом деле  приведи пример пожалуйста  smile 

Автор: Anark1 6.8.2007, 17:14
Ну смотри. 
1. Выполняем загрузку текста в Memo поле.
Код

MyMeno->Lines->LoadFromFile("TEXT.txt");

2. Описываем некоторую строковую переменную, например mystr.
3. Забиваем в эту переменную первую строку из Memo. В Memo нумерация идет с нуля.
Код

mystr = MyMemo->Lines->Strings[0];

4. Теперь можно проверить тип этой строки (glava/list/etc).
if (mystr[1] == 'l') 
{
...
}
5. Если строка нужная нам, то необходимо вытащить из неё выражение после 3-его "/"
Код

i:=0
k:=1
while (i !=3)
{
      if (mystr[k]  = '/') 
      {
       i=i++;
      }
k=k++;
}
length = mystr.Length();
while (k != length)
{
estr=estr+mystr[k];
k=k++;



Можно выполнить аналогичное с помощью цикла for. Оптимизируй под свою задачу сам.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)