|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
Опять о *.csv29.10.2013, 23:00. Показов 8965. Ответов 44
Метки нет (Все метки)
Доброго времени суток!
Было прочитано много постов о о проблемах работы с .csv, но конкретных рекомендаций нет. Сама задача, создать некий простенький редактор .csv. В нем пока планируется сделать редактирование значений и комбинированные фильтры. Связи с этим у меня созрело 3 вопроса: 1.Можно ли отображать *.csv в DBGrid как таблицу ? Сейчас использую ADO и в DBGride отображается как столбец, наполненный построчно вместе с разделителями. 2. Каким способом можно редактировать *.csv файл ? Сейчас если менять в строке любое значение (не трогая разделители) то пишет что драйвер не поддерживает редактирование данного типа таблиц. 3. Если все так ужасно, может лучше перед открытием файла его конвертировать в exel или что нибудь другое, что можно будет в последствии легко редактировать, а после всех работ с файлом опять cохранять в .csv ? Заранее спасибо, буду рад прочитать ваши мненния.
1
|
|
| 29.10.2013, 23:00 | |
|
Ответы с готовыми решениями:
44
Опять MDI и опять нет активной формы
Обратиться к файлу в папке через CSV модуль и Параметры CSV |
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
||
| 30.10.2013, 22:23 | ||
|
0
|
||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
| 03.11.2013, 16:19 [ТС] | |
|
еще один вопросик. При сохранении StringList в файл, SaveToFile, идет изменение формата записи файла.
Допустим: До сохранения набор данных выглядел так- 1;1;тест;;;текст;1;; После сохранения выглядит так- 1;1;тест;" ";" ";текст;1;" "; это как то можно исправить? Заранее спасибо.
0
|
|
|
|
||
| 03.11.2013, 16:30 | ||
|
Я уже не говорю что задача действительно детская, и ничего не стоит написать свою функцию сплитирования и объединения строк.
0
|
||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
||
| 03.11.2013, 17:25 [ТС] | ||
|
из- 1;1;;;1;текст из нескольких слов;1;2;текст получается- 1;1;;;1;текст,из,нескольких,слов;1;2;тек ст
0
|
||
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 03.11.2013, 17:55 | |
|
Если "текст из нескольких слов" в одной ячейке таблицы, то он и будет выглядеть, как я написал, то-есть в кавычках, а не каждое слово через запятую. Проверено.
0
|
|
|
Супер-модератор
|
||
| 03.11.2013, 18:08 | ||
|
2
|
||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|||||||
| 03.11.2013, 21:47 [ТС] | |||||||
|
Правда вот сохраняет так же с пробелами, если между разделителями ничего не было, надеюсь это не повлияет при подгрузке файла в другое ПО. Добавлено через 3 часа 10 минут Ребят, столкнулся с очень не приятной проблемой. Может кто знает как ее побороть... Дело в том что те .csv файлы с которыми надо работать объемные- к примеру мой тестовый экземпляр на 15 с половиной тысяч строк. Проблема заключается в сохранении...он то сохраняет...но около 8 минут..может как то можно сохранять только то что изменилось а не переписывать файл заново. сохраняю кодом с примера Avazart
0
|
|||||||
|
|
|||
| 03.11.2013, 21:51 | |||
|
Попробуй сохранять через fstream Добавлено через 1 минуту
0
|
|||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
| 03.11.2013, 21:55 [ТС] | |
|
ну это не самый большой файл...подгружал файл в 26к строк, открывает за секунд 5, что изначально удивило...ну чтож будем пытаться теперь сохранить по человечески.
0
|
|
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|||||||||||
| 03.11.2013, 22:47 [ТС] | |||||||||||
|
Сразу скажу что с потоками не работал поэтому не много путаюсь в коде.
вот нашел такой примерчик
Извиняюсь что возвращаюсь к старому, но как тут прописать разделитель? Добавлено через 11 минут Вроде разобрался... сделал так-
0
|
|||||||||||
|
Супер-модератор
|
||
| 03.11.2013, 23:13 | ||
|
Где-то в другом месте у тебя тормоза...
1
|
||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
||
| 04.11.2013, 16:21 [ТС] | ||
|
Действительно Ваша наблюдательность и опыт опять победили доводы нуба ), SaveToFile был в for'е что и приводило к постоянным перезаписям файла) ну теперь я знаю 2 способа сохранения...век нуби, век учись...Всем огромное спасибо за помощь, правда я подозреваю это мои отнюдь не последние "тупые" вопросы...вы уж извините заранее.. Добавлено через 16 часов 51 минуту Дошел до создания комбинированного фильтра.Возникли некоторые проблемы...большинство примеров сортируют StringGrid по возрастанию\убыванию и Алфавиту. Мне же надо сортировать по заданным параметрам. Например: На форме есть несколько ComboBox (равные количествам столбцов). В них содержатся значения столбцов в единственном экземпляре (то есть повторяющиеся значения заносятся в combobox 1 позицией). Сортировка должна происходить из значений выбранных в combobox. То есть некая комбинированная сортировка строк по нескольким значениям с разных столбцов. Надеюсь написал доступно. Может у кого то есть мысли? Заранее спасибо.
0
|
||
|
Супер-модератор
|
||
| 04.11.2013, 16:46 | ||
|
0
|
||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
| 04.11.2013, 17:38 [ТС] | |
|
Собственно таблица.
http://rghost.ru/private/49928... ea543.view Сортировка должна идти по нескольким полям(пока фиксировано назвать по каким именно не могу) но точно по: Inv (там только значения будут 0 и 1) GroupName (имя протокола) OIKType (Тип параметра) Category (категория) BlockName (опер зона) Примерно столько же будет ComboBox для каждого столбца, в них будут содержаться данные из столбцов в единственном числе. То есть будет Набор имен протоколов, набор имен типов параметра, набор имен категорий и т.д. ComboBox еще не создавал...пытаюсь разобраться с сортировкой..
0
|
|
|
Супер-модератор
|
|
| 04.11.2013, 17:44 | |
|
И что? Вот выбрал я в комбобоксе INV значение 0, а в Category - значение "Внешнее ТИ". Что должно произойти? сначала сортировать по INV, а если INV-ы равны - то по Category? Я ж говорю, это обычная CustomSort. Сейчас покажу пример...
0
|
|
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
| 04.11.2013, 17:48 [ТС] | |
|
Саму сортировку примерно вижу так..
Сверху строки, в которых есть те значения, которые выбраны в combobox.думаю основная работа будет происходить именно с ними, поэтому как будет ниже пока не важно. При выборе первого combobox происходит сортировка по выбранному параметру, (если выбираются следующие, то уже сортировка ведется относительно выбранного параметра) Допустим выбрали Category - первичное ТИ. Вверх ушли все с строки в которых в столбце Category есть значение "первичное ТИ" Дальше выбрали OIKType "U", теперь сверху все строки у которых Category "первичное ТИ"; OIKType "U". Ну и так далее. Если выбрано значение в ComboBox которое в своей сумме не дает результата. Например Category "первичное ТИ"; OIKType "U"; Inv "1" (Строки с данным набором имен нет в таблице)...То сообщенько или просто ничего не делать.
0
|
|
|
Супер-модератор
|
|
| 04.11.2013, 17:57 | |
|
Так это не сортировка у тебя, а фильтрация получается... Хотя нет... Опять же, вопрос остается в силе: если в таблице есть содержимое нескольких комбобоксов, то как они должны сортироваться МЕЖДУ СОБОЙ?
0
|
|
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
| 04.11.2013, 18:04 [ТС] | |
|
как бы так правильнее написать.
Следующая сортировка, сортирует данные из предыдущих сортировок. Думаю так правильнее будет. Пример: Выбрали Category "Первичное ТИ", при выборе OIK Type "U" уже сортирует(ищет) только строки в которых есть Category "Первичное ТИ", дальше выбрали Inv "0", сортировка(поиск) идет только в строках с значениями Category "Первичное ТИ", OIK Type "U" ну и так далее.
0
|
|
|
Супер-модератор
|
|
| 06.11.2013, 18:28 | |
|
В общем, дело темное с твоими объяснениями...
Думал я думал - решил предложить тебе способ, который будет работать гораздо быстрее, чем со StringGrid-ом. Предлагаю убрать СтрингГрид из проекта, и заменить его на DrawGrid. Объясняю, чем это лучше: StringGrid - он хранит в себе данные, которые отображает. Поэтому в любом случае для переупорядочивания этих данных приходится все содержимое грида сливать в какой-то временный буфер, переупорядочивать его, и уже потом возвращать новое содержимое. Это долго. Тем дольше, чем больше строк/столбцов в гриде. В свою очередь, TDrawGrid никаких данных не хранит, только отображает. Поэтому можно один раз при старте приложения записать данные в любую структуру, с которой будет удобно работать (я в качестве этой структуры выбрал стандартный std::vector, ибо его сортировка делается в одну строку, когда нужно, тем же std::sort-ом), и потом уже оперировать с данными, без их постоянного копирования с места на место, при необходимости просто перерисовывая DrawGrid, и он уже будет отображать обновленные данные. Эдакий "виртуальный грид" (а чего: ListBox, значит, виртуальным делать можно, а StringGrid почему-то нельзя?)... В аттаче - реализация (я особо заморачиваться не стал, сделал для 5 строк, но повторяю: это неважно, можно было бы и на десятке тысяч проверить, на скорости обработки это бы не особо сказалось). Да, по поводу сортировки: я сделал так, что если в комбобоксе что-то выбрано (отличное от <...>), то строки, которые содержат все выбранные значения, поднимаются наверх, остальные остаются на местах...
3
|
|
| 06.11.2013, 18:28 | |
|
Запись в CSV-файл из массива. Не является форматом csv! Конвертировать CSV ANSI в CSV UTF-8 или шо делать Разбиение CSV файла на много csv файлов по разделителю Опять БАН опять Яндекс... Gameorplay Опять и опять Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|