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

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

26.05.2015, 09:05. Показов 1840. Ответов 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
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
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
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
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
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
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
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
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
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru