|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.08.2013, 12:37 | #1 |
Пользователь
Регистрация: 10.12.2012
Сообщений: 64
|
Как обработать txt c разделителем и убрать лишнее
Добрый день! Есть файл txt c данными такого вида:
15;432156;name1;13,30;;;;12345;;; 26;323257;name2;27,67;;56;;;56;; Мне нужно подготовить файл для экспорта в бд, убрав все лишнее, т.е. все данные в строке после 4-го разделителя, например. Получится должно так: 15;432156;name1;13,30; 26;323257;name2;27,67; И сохранить результат в файл txt. Можно в исходный файл, можно в новый. Спасибо! |
08.08.2013, 13:33 | #2 |
Форумчанин
Регистрация: 04.06.2009
Сообщений: 351
|
Как вариант:
1. Загнать файл в StringList (LoadFromFile) 2. Пройтись по каждой строке функцией StringReplace (StringReplace('26;323257;name2;27, 67;;56;;;56;;',';;',';',[rfReplaceAll] ) ; ) 3. Перезаписать файл из StringList (SaveToFile)
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
|
08.08.2013, 13:46 | #3 | |
Пользователь
Регистрация: 10.12.2012
Сообщений: 64
|
Цитата:
Я себе это представляю так: нужно пробежать по строке, считая по пути количество разделителей, когда счетчик будет равным четырем, очистить строку с этой позиции до конца строки. Вот как это написать на delphi? Последний раз редактировалось Kerby666; 08.08.2013 в 13:50. |
|
08.08.2013, 14:19 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
тоже мне, "бином Ньютона"...
ловите код: Код:
p.s. ещё эту же задачу можно решить банальным циклом по всем символам строки с подсчётом точек с запятой. а ещё, эту же задачу можно решить через использование PosEx (я, в принципе, в своём примере моделировал именно поведение функции PosEx) |
08.08.2013, 15:03 | #5 | |
Пользователь
Регистрация: 10.12.2012
Сообщений: 64
|
Цитата:
|
|
08.08.2013, 15:19 | #6 | |
Форумчанин
Регистрация: 04.06.2009
Сообщений: 351
|
Цитата:
1. Бежим по всей строке циклом (for i:=1 to Length('строка')) 2. Проверяем каждый символ на вылидность символу (if copy('строка',i,1 = ';')) 3. Увелисиваем счетчик 4. Если счетчик равен 4 сопируем нужную часть строки (copy('строка',1,i))
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
|
|
08.08.2013, 15:25 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ноу проблем.
держите исходники проекта: TransformDataFileExample_SOURCES.rar exe-шник: TransformDataFileExample_EXE.rar код там такой: Код:
разумеется, открытие файла нужно делать через TOpenDialog, но мне лень и некогда. Оставляю косметические доработки на вашей совести! |
08.08.2013, 15:37 | #8 | |
Пользователь
Регистрация: 10.12.2012
Сообщений: 64
|
Цитата:
|
|
09.08.2013, 23:44 | #9 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 225
|
а я бы использовал PosEX было бы красии и меньше переменных использовалось...
|
12.08.2013, 16:08 | #10 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
формат стандартного csv файла. нафига его как то обрезать? если он сделан культурно по столбцам.
вообще любая уважающая себя база данных позволяет сделать этот экспорт и импорт, потом только колонки переименовать. или можно в ручную например с помощью exel или его аналога опен офиса. и работать потом только с нужными столбцами. так что либо 5 кликов в офисе либо куча проверок в дельфи. Прежде чем чего то писать, лучше подумать 30 мин, нет ли уже готовых решений данного действия.(с) основы планирования
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Убрать лишнее | pruf | PHP | 24 | 06.09.2011 19:06 |
Нужно убрать лишнее!!! | Less1 | Помощь студентам | 10 | 26.06.2011 19:15 |
ColorBox - убрать лишнее | MyLastHit | Общие вопросы Delphi | 1 | 08.12.2010 08:49 |
Убрать лишнее | Айдар | Общие вопросы C/C++ | 1 | 17.09.2010 01:08 |
убрать лишнее из программы | dragun4ik | Помощь студентам | 2 | 30.01.2010 17:33 |