Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2013, 13:57   #1
Craz
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 21
По умолчанию Считывание и обработка данных из текстового файла

Имеется текстовый файл, в котором есть данные, которые нужно считать, а также куча лишних символов. Данные которые необходимо считывать находятся на след. строке после строки из "***====...===". Между цифрами (нужными символами) есть пропуски и знаки препинания. Таких вот кусков с "***====...===" и необходимыми символами по файлу около 500 шт. Позже мне с ними нужно сделать мат. операции и выводить в таблицу.
У меня получилось считать первый такой вот кусок, но никак не могу додуматься как мне это запихнуть в цикл чтобы считать все куски.
Подскажите пожалуйста))
Вот кусок текста, который я считываю:

Код:
***================================ =================================== =================================== =========================
Код:

 00.00 2012-03-29 SM1 BR4 SNR222067 BNR 1:25.0:25.00:2700:52. 1:57.28: 8. 0: 0: 7: 991:   0: 850:   0:62.40: 2700:  4:   0.:13174.
 PNR  74 BKZ 2 STSORT354  250* 1550* 2300:25.0:25.00:2617:53. 4:59. 4: 1.49: 9: 0:1008: 724: 858: 834:    1:3678.:  1: 830.: 3678.
  
 :NSOV:  13:NAOV:   0:NSOF:  57:NAOF:  33:DSOV:2000.00:DAOV:1000.00:DSOF:2089.60:DAOF: 986.30:BBRG:
 :NSUV:  56:NAUV:   0:VSUF:  46:NAUF:  34:DSUV:2000.00:DAUV:1000.00:DSUF:2012.60:DAUF: 987.00:7.03:

***================================ =================================== =================================== =========================
00.01 2012-03-29 SM1 BR4 SNR222067 BNR 2:25.0:24.98:2700:53.22:58.50: 8. 0: 0: 7: 991: 0: 850: 0:62.65: 2700: 4: 0.:13182.
Вот код:
Код:

int i=0, n=0, s=0;
    char *t;
    char *hour;

    TStrings * slist =new TStringList;
    if ( OpenDialog1->Execute())
    {
        HANDLE hFile = CreateFile(OpenDialog1->FileName.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        if(hFile==0) return;
        unsigned long l;
        unsigned long size;
        size = GetFileSize(hFile, NULL);
        t = new char [size];
        ReadFile(hFile, t, size, &l, NULL);

        CloseHandle(hFile);
        //t[i][n]=LoadFromFile(OpenDialog1->FileName);
    }
    char temp[255];

    slist->LoadFromFile(OpenDialog1->FileName);
    s = slist->Count;
    hour = new char [s];
    Edit5->Text=s;

    for(int i; i < s; i++ )
    {
    ZeroMemory(&temp, 255);

    // Для часов
    char *sth = strstr(t, "***");
    char *del = strstr(sth, "\r\n");
    char *fh = del + 3;
    char *h = strstr(fh, ".");
    unsigned long lh = h - fh;
    temp[lh] = 0;
    strncpy(temp, fh, lh);

    hour[i]=StrToInt(temp);
    Edit6->Text=hour[i];

    StringGrid1->Cells[2][1] = StrToInt(temp);

    // Для минут
    char *fm = fh + 3;
    char *m = strstr(fm, " ");
    unsigned long lm = m - fm;
    temp[lm] = 0;
    strncpy(temp, fm, lm);
    StringGrid1->Cells[3][1] = StrToInt(temp);

    // Для года
    char *fy = fm + 3;
    char *y = strstr(fy, "-");
    unsigned long ly = y - fy;
    temp[ly] = 0;
    strncpy(temp, fy, ly);
    StringGrid1->Cells[6][1] = StrToInt(temp);

    // Для месяца
    char *fmnh = fy + 5;
    char *mnh = strstr(fmnh, "-");
    unsigned long lmnh = mnh - fmnh;
    temp[lmnh] = 0;
    strncpy(temp, fmnh, lmnh);
    StringGrid1->Cells[5][1] = StrToInt(temp);

     //Для дня
    char *fd = fmnh + 3;
    char *d = strstr(fd, " ");
    unsigned long ld = d - fd;
    temp[ld] = 0;
    strncpy(temp, fd, ld);
    StringGrid1->Cells[4][1] = StrToInt(temp);

    //Для смены
    char *fsm = fd + 5;
    char *sm = strstr(fsm, " ");
    unsigned long lsm = sm - fsm;
    temp[lsm] = 0;
    strncpy(temp, fsm, lsm);
    StringGrid1->Cells[7][1] = StrToInt(temp);

    //Для бригады
    char *fbr = fsm + 4;
    char *br = strstr(fbr, " ");
    unsigned long lbr = br - fbr;
    temp[lbr] = 0;
    strncpy(temp, fbr, lbr);
    StringGrid1->Cells[8][1] = StrToInt(temp);

    //Для плавки
    char *fpl = fbr + 5;
    char *pl = strstr(fpl, " ");
    unsigned long lpl = pl - fpl;
    temp[lpl] = 0;
    strncpy(temp, fpl, lpl);
    StringGrid1->Cells[1][1] = StrToInt(temp);

}
}
Ув. администраторы форума! Тема дублирует вот эту:
http://www.programmersforum.ru/showt...93#post1253593
Но я не могу удалить старую, а вопрос необходимо решить срочно, поэтому создал новую, удалите пожалуйста старую)
Craz вне форума Ответить с цитированием
Старый 14.07.2013, 15:57   #2
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

Для начала: выложите пример входящего файла, и конечную структуру данных одного блока. Только после этого можно уже будет давать какие либо советы по парсированию файлов этого типа. И чуть больше уточнений касательно, хотя бы, языка программирования.
BleStaR вне форума Ответить с цитированием
Старый 14.07.2013, 19:56   #3
Craz
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 21
По умолчанию

Вот архив, в котором и файл для чтения и сама программа. Делаю это в builder 6.0
Вложения
Тип файла: rar Proga2.rar (478.1 Кб, 8 просмотров)
Craz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считывание данных из текстового файла C++ de511 Общие вопросы C/C++ 1 02.01.2013 20:56
Считывание с текстового файла в с++! vlad_Gutov Общие вопросы C/C++ 6 27.10.2012 13:03
Считывание текстового файла Waqq Общие вопросы Delphi 4 24.01.2011 20:43
считывание данных из текстового файла Olejik Общие вопросы по Java, Java SE, Kotlin 3 03.10.2009 20:40
считывание с текстового файла ciaonataha Помощь студентам 0 20.04.2009 12:09