Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5

Обработка форматной строки

26.05.2015, 09:05. Показов 2047. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую ребята!
Имеется файл, в файле строки такого типа:
101105001110107340173401072103000 4.2014 3.0
101105001110107340173401073104000 4.2014 3.2
101105001110107340173401073106000 3.2014 2.1 1.5
101105001110107340173401073106000 4.2014 2.7
101105001110107340173401073203000 2.2014 2.7 2.0 1.3
101105001110107340173401074104000 4.2014 6.1
101105001110107340173401074105000 4.2014 3.0
101105001110107340173401074108000 2.2014 1.7 1.2 0.7
101105001110107340173401075103000 2.2014 2.3 1.6 1.0
Т.е. по сути, данные разделены каким-то "пробелом" вернее табуляцией (походу)
У меня вопрос возник, как обработать данные такой строки, т.е., например, мне нужно обработать данные из предпоследнего столбика. Что-то не могу сообразить, как мне достучаться до этих данных, именно на этой позиции(позиции предпоследнего столбика).
Предполагаю что нужно как-то обработать эти служебные символы - "табуляции".
Ребят, пните в нужном направлении, не могу догнать, что к чему
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2015, 09:05
Ответы с готовыми решениями:

Обработка txt от одной строки до определенной
Добро всем! :senor: Мне одна организация выгружает реестр и так случилось что у них очень слабый специалист по 1с всвязи с чем они мне с...

Параметры форматной строки
Доброго времени суток. У меня возникла проблема при работе с форматной строкой, а именно с параметром %n. Пишу в Codeblocks. Результат не...

[NASM] Ошибка при выводе форматной строки
Если не сложно посмотрите код, вроде все сделал как надо, но программа не выдает мне нужного результата global _main extern _scanf ...

33
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33459 / 21559 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 12
26.05.2015, 12:52
Студворк — интернет-сервис помощи студентам
demon_7, ну, и зачем проход по всем ячейкам?
C++
1
2
3
4
5
6
7
    std::auto_ptr<TStringList>L(new TStringList);
    L->LoadFromFile("D:\\test\\parse-txt.txt");
    for (int i = 0; i < L->Count; i++)
    {
        String s = L->Strings[i];
        StringGrid1->Rows[i]->CommaText = StringReplace(L->Strings[i], "\t", ",", TReplaceFlags() << rfReplaceAll);
    }
прекрасно заполняет грид...
1
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
26.05.2015, 12:59
volvo, Вы оптимизируете все на лету :3
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
26.05.2015, 13:11  [ТС]
Спасибо большое, так и делал. Но есть один косяк, появляются лишние пустые строки
Но я думаю это решаемо. Все-равно, большое спасибо.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33459 / 21559 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 12
26.05.2015, 13:14
Цитата Сообщение от Почтальен Посмотреть сообщение
появляются лишние пустые строки
Где именно они? txt-файл взял прикрепленный, ничего в нем не изменял.
Миниатюры
Обработка форматной строки  
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
26.05.2015, 13:35  [ТС]
Использовал этот файл:
553.txt

И код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
TStringList *SL = new TStringList;
        SL->LoadFromFile("553.txt");
 
        StringGrid1->ColCount = 7;
        StringGrid1->RowCount = SL->Count;
 
        SL->Text = StringReplace(SL->Text,"\t", ";", TReplaceFlags() << rfReplaceAll);
    SL->Delimiter=';';
    SL->DelimitedText=SL->Text;
 
        int i = 0;
 
        for(int x=0; x<StringGrid1->RowCount; x++)
        {
            for(int y=0; y<=6; y++)
                {
 
                        StringGrid1->Cells[y][x] = SL->Strings[i];
 
                    i++;
                }
        }
 
        SL->Clear();
        delete SL;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33459 / 21559 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 12
26.05.2015, 13:42
Лучший ответ Сообщение было отмечено Почтальон как решение

Решение

Мой код обрабатывает этот файл безо всяких пустых строк...
1
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
26.05.2015, 13:44
Почтальен, проверил код volvo, результат ни чем не отличим от моего.
Не знаю с чем у Вас возникли проблемы
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
26.05.2015, 13:56  [ТС]
Спасибо еще разок, код теперь работает как нужно. Теперь еще один гемор появился, как посчитать значения в столбце ?
Пишу:
C++
1
sum = sum + StrToFloat(StringGrid1->Cells[5][i]);
выдает ошибку. видимо нужно сначала заменить все "." на "," чтоб можно было оперировать данными.
Что-то не нашел функцию по замене
Может StringReplace() подойдет ?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
26.05.2015, 13:57
Цитата Сообщение от Почтальен Посмотреть сообщение
Может StringReplace() подойдет ?
подойдет
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
26.05.2015, 14:32
Цитата Сообщение от Почтальен Посмотреть сообщение
выдает ошибку
Можно, также, вначале цикла написать длинное слово DecimalSeparator = '.';
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
26.05.2015, 15:13  [ТС]
С выводом разобрался. Теперь задача стоит удалить строку из этой таблицы. Метод есть по удалению по индексу ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33459 / 21559 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 12
26.05.2015, 15:15
Есть. DeleteRow, правда он защищенный, и для доступа к нему нужно унаследоваться от грида. Но оно того стоит...

Вот пример: Удаление заданной строки в StringGrid
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
26.05.2015, 15:25  [ТС]
Метод конечно хороший, но что-то туплю как его использовать, естественно StringGrid1->DeleteRow не прокатывает
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33459 / 21559 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 12
26.05.2015, 15:26
Я дал ссылку на пример...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2015, 15:26

Из форматной строки и символа требуется получать все ASCII символы
Есть &quot;{0}&quot;,(char)AscCode требуется получить, пропустив через String.Format(), массив байтов (всех ASCII символов 0-255). Премного...

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

Принудительная постановка знака в форматной строке
Вопрос такой: в сях можно было в форматной строке указать что-нибудь вида printf(&quot;%+i&quot;, myInt); , что приводило к...

Обработка строки. Как вырезать из имеющейся строки определенные символы
Имеется строка {текст} Как получить текст без {}?

Обработка строки. Как скопировать из строки определенный кусочек
Господа программисты. Я с очередной проблемой.... Имеем строку большой длины, а именно 42 символа. Как скопировать часть этой строки,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru