Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считывание и парсинг файла, парсер файла 
:(
    Опции темы
woolf24
Дата 2.6.2014, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.6.2014

Репутация: нет
Всего: нет



Доброе время суток
Нужно спарсерить файл,струкрура файла:
D-Date="02.05.2014 16:00:00"&D-NAS-Ident=10.11.81.66:50130&Acct-Status-Type=3&User-Name="ao250_5038202"&Event-Timestamp=1399032000&Acct-Delay-Time=0&NAS-Identifier="RST-E320-1"&Acct-Session-Id="erx TenGigabitEthernet 0/0/0.35042030:3504-2030:0887085679"&NAS-IP-Address=10.11.81.66&Service-Type=2&Framed-Protocol=1&Framed-Compression=0&ERX-Pppoe-Description="pppoe 00:22:b0:eb:d5:57"&Framed-IP....

Вытащить D-Date, User-Name, NAS-IP-Address (Например вывода D-Date="02.05.2014 16:00:00")

Вот что я успел написать, но отказывается искать после 1-го сходства и не дописана структура.Прошу помощи. 

Код

//---------------------------------------------------------------------------
      #include <System.IOUtils.hpp>
#include <vcl.h>
#pragma hdrstop
#include <windows.h>
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <fstream>
#include "Unit1.h"
#include <iostream>
#include <string>
#include <regex>
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
    String Text = TFile::ReadAllText(OpenDialog1->FileName);
        Memo1->Lines->Add(Text);
            Application->ProcessMessages();
    boost::wregex re(
                 L"D-Date=\"(.*?)\"\&"
                

    boost::wcmatch m;

    if(boost::regex_search(Text.c_str(),m,re))
    {
        for(size_t i=1; i< m.size(); ++i)
            Memo2->Lines->Add( m[i].str().c_str() );
         Application->ProcessMessages();
    }
}


Это сообщение отредактировал(а) woolf24 - 3.6.2014, 09:00
PM MAIL   Вверх
Romikgy
Дата 2.6.2014, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(woolf24 @  2.6.2014,  11:52 Найти цитируемый пост)
 D-Date, User-Name, NAS-IP-Address

только это отловить надо ?



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
woolf24
Дата 2.6.2014, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.6.2014

Репутация: нет
Всего: нет



Romikgy, Да

PM MAIL   Вверх
Romikgy
Дата 2.6.2014, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



пример файла выложи


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
woolf24
Дата 3.6.2014, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.6.2014

Репутация: нет
Всего: нет



Цитата(Romikgy @ 2.6.2014,  15:27)
пример файла выложи

http://yadi.sk/d/vIcYRISURhaGi
PM MAIL   Вверх
Romikgy
Дата 3.6.2014, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Код

 void split(TStringList* lout, char* str, const char* separator) {
      for(char* tok = strtok(str, separator); tok; tok = strtok(NULL, separator))
          lout->Add(tok);
}

....

    FILE * fi = fopen("test.txt" ,"r");
    char s[2048]={0};
    TStringList * sl=new TStringList();

    while (fgets(s,2000,fi) != NULL)
    {

   split(sl,s,"&");

    ListBox1->Items->Add(sl->Values["D-Date"]+" "+
    sl->Values["User-Name"]+" "+
    sl->Values["NAS-IP-Address"]
    );
    sl->Clear();
    Application->ProcessMessages();
    }

    fclose(fi);
    delete sl;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
woolf24
Дата 3.6.2014, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.6.2014

Репутация: нет
Всего: нет



Цитата(Romikgy @ 3.6.2014,  10:25)
Код

 void split(TStringList* lout, char* str, const char* separator) {
      for(char* tok = strtok(str, separator); tok; tok = strtok(NULL, separator))
          lout->Add(tok);
}

....

    FILE * fi = fopen("test.txt" ,"r");
    char s[2048]={0};
    TStringList * sl=new TStringList();

    while (fgets(s,2000,fi) != NULL)
    {

   split(sl,s,"&");

    ListBox1->Items->Add(sl->Values["D-Date"]+" "+
    sl->Values["User-Name"]+" "+
    sl->Values["NAS-IP-Address"]
    );
    sl->Clear();
    Application->ProcessMessages();
    }

    fclose(fi);
    delete sl;



Это сообщение отредактировал(а) woolf24 - 3.6.2014, 14:41
PM MAIL   Вверх
Romikgy
Дата 3.6.2014, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



никакие ... стандартные stdio.h и все


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
woolf24
Дата 3.6.2014, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.6.2014

Репутация: нет
Всего: нет



Цитата(Romikgy @ 3.6.2014,  14:39)
никакие ... стандартные stdio.h и все

Спасибо большое!Жалко что руку не могу пожать *(
PM MAIL   Вверх
Romikgy
Дата 3.6.2014, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



ногу пожми))))... хотя бы свою))))


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
xvr
Дата 18.6.2014, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(woolf24 @  3.6.2014,  15:19 Найти цитируемый пост)
Жалко что руку не могу пожать

За тебя пожмем - не жалко  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0802 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.