TSdfDataSet

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TSdfDataSet

Сообщение Vadim » 06.09.2014 11:56:51

Кто-нибудь работал с этим компонентом?
У меня такая проблема. Есть текстовый файл с данными, где поля разделены символом табуляции. Соответственно для просмотра и редактирования его использую TSdfDataSet + DBGrid. Однако если в строке записи идут несколько пустых полей, т.е. подряд идут несколько штук табуляций, то компонент их благополучно пропускает, пустое поле не выводит и поэтому получается, что в одном столбце идут несколько разных данных, которые, в оригинале, расположены каждый в своём столбце.
Кто-нибудь сталкивался с таким? Может быть можно какое-то свойство задать, чтобы он пустые поля тоже за поля считал?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: TSdfDataSet

Сообщение Ism » 06.09.2014 13:35:19

Да, есть у него такой глюк, я вылечит не смог, чтоб все работало я в текстовом файле Таб заменял на ; , тогда все работало
На самом деле данный компонент не соответствует стандарту csv
Используйте
http://wiki.freepascal.org/CsvDocument
http://wiki.freepascal.org/JCSV_(Jans_CSV_Components)
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: TSdfDataSet

Сообщение Vadim » 06.09.2014 13:55:54

Спасибо, посмотрю.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: TSdfDataSet

Сообщение pupsik » 06.09.2014 19:05:23

На самом деле данный компонент не соответствует стандарту csv
не совсем верно. Он соответствует стандарту. А вот иногда файлы нет.
CsvDocument и TSdfDataSet парсят идентично (согласно стандартов). Только скорость отличается. TSdfDataSet грузит все и сразу, а CsvDocument воспринимает файл как ячейки. Поэтому скорость загрузки в CsvDocument меньше. Зато можно красивенький доступ организовать (частичная загрузка, выборка отдельного диапазона и т.д.). CsvDocument сильно восприимчив к не стандартным файлам .

В TSdfDataSet есть пару существенных "проблем". Кол-во записей не всегда верно. И "поход" к конкретной записи (Recno, кажись) затруднителен. т.е. необходим цикл While...

Jans_CSV_Components не котируется по уровню к предыдущим...

где поля разделены символом табуляции
а в чем проблема добавить его в парсер....
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: TSdfDataSet

Сообщение Vadim » 07.09.2014 18:48:45

pupsik писал(а):а в чем проблема добавить его в парсер....

Дружище, у меня создалось впечатление, что первый пост Вы прочитали, но заметили только отдельные слова. ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: TSdfDataSet

Сообщение pupsik » 07.09.2014 20:06:59

Ха... не нид холивара на тему что я прочитал, что нет.
Ответ, к сожалению (счастию) извесен... Править под свои нужды. Я не понимаю: в чем отличие символа ТАБ от других знаков? В чем сложность подправить логику парсера?

Повторюсь: компонент соответствует стандартам (хотя, стандарт - понятие растяжимоееее).

п.с.
мне вот интересно: в чем отличие сивола ТАБ от других символов (окромя разделителя строк в ОС)? И почему не подправить парсер компонента. Я более чем уверен что аналогичные компоненты будут себя вести подобным, как вами описано, образом...

интересно:
я вылечит не смог
а как вы его лечили? Ведь это
Таб заменял на ;
мне подсказывает (применялось нечто подобное replaceall в строке) что лечение поверхносное было. Оно ведь заменялось как-то, а вот компонент не вылечился. По идее оно и заменяться не должно, хотя, может, добрые (злые) силы подмогли...

Ссори за сарказм....
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: TSdfDataSet

Сообщение Ism » 07.09.2014 21:43:27

Судя по всему некоторые программы воспринимают Таб, как очередной пробел. Поэтому когда встречаются 2 таба оно думает, что это пространство разделитель
Также есть различие в восприятии двойных кавычек, гдето они считаются ограничителями строк, гдето частью строки

Указанный мною компонент соответствует стандартам и ведет себя правильно
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: TSdfDataSet

Сообщение pupsik » 07.09.2014 21:55:02

Решил проверить данный вариант, созданием похожей проблемы.

ошибка в самом парсере. В момент добавления значения разрабы перемудрили (не домудрили). Необходимо сто грамм для барабана :). Проблема решима путем перелопачивания сорца (на что я намекал ранее :twisted: ). (В простейшем понимании огромный недочет, ведущий на ппц. Т.е. крики похожие на АААА Лазарь глючит :))

различие в восприятии двойных кавычек
это как раз гре.. стандарт ... У себя я его вымарал полностью. Там отдельную функцию для данной каки выделили. Кстати: CsvDocument падает при подобных "прелестях".

п.с.
неужели ТАБ и Пробел считаются де факто в стандарте свс-а ? :lol:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: TSdfDataSet

Сообщение Vadim » 08.09.2014 05:46:59

Если заглянуть в каталог SDF, где лежат исходники этого компонента, то там один из тестовых файлов как раз содержит табуляцию в виде разделителя. Т.е. разработчики на табуляции и тестировали свой компонент. Недотестировали...

Добавлено спустя 1 минуту 49 секунд:
pupsik писал(а):неужели ТАБ и Пробел считаются де факто в стандарте свс-а ?

Про пробел - не знаю, а вот ТАВ - как раз очень популярный разделитель, наряду с точкой с запятой. Особенно там, где текстовые данные не обрамлены кавычками.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: TSdfDataSet

Сообщение Ism » 08.09.2014 13:37:48

На самом деле все веселее
Кавычки почвляются в тех записях, где надо экранировать пробел или нечитаемые символы типа прерноса. То есть полноценныйт csv исключает ошибки при распознавании файла
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: TSdfDataSet

Сообщение pupsik » 09.09.2014 20:08:38

где надо экранировать пробел или нечитаемые символы типа прерноса

т.е., не врубилсо :oops: Символ в виде символа или его значение.... ?
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 221

Рейтинг@Mail.ru