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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2013, 16:40   #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);

}
}

Последний раз редактировалось Stilet; 13.07.2013 в 17:16.
Craz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка csv файла (С++) lenwe Помощь студентам 3 25.12.2012 08:45
Обработка текстового файла Dimabara Помощь студентам 0 19.11.2012 15:09
Обработка текстового файла MrGreen Помощь студентам 0 07.05.2012 13:18
Обработка файла на Турбо Паскаль - Удалить из файла файл вещественных чисел максимальную компоненту chudo*** Паскаль, Turbo Pascal, PascalABC.NET 1 24.12.2011 22:51
Обработка файла [C++] [CODER] Помощь студентам 4 18.03.2010 23:53