CsvDocument/ru: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: CsvDocument/ru
| Old | New | Line | |
|---|---|---|---|
| 1 | + | > **Warning:** ЭТОТ ДОКУМЕНТ УСТАРЕЛ. CSVDOCUMENT ВХОДИТ В СОСТАВ FPC, НАЧИНАЯ С ВЕРСИИ 3.0. CCR ВЕРСИЯ БУДЕТ УПРАЗДНЕНА. | |
| 2 | + | ||
| 3 | + | ### О библиотеке | |
| 4 | + | ||
| 5 | + | Библиотека CsvDocument - это модуль Free Pascal, содержащий набор классов для работы с файлами в [формате CSV](http://ru.wikipedia.org/wiki/CSV). Библиотека была разработана для обмена табличными данными с OpenOffice Calc / MS Office Excel с использованием CSV в качестве промежуточного формата. | |
| 6 | + | ||
| 7 | + | Возможности: | |
| 8 | + | ||
| 9 | + | - Чтение/запись произвольного поля с помощью объектной модели CSV-документа (класс TCSVDocument). Данный подход требует предварительной загрузки CSV-файла в память. | |
| 10 | + | - Последовательное чтение файла CSV (поле за полем) с помощью класса TCSVParser. Позволяет читать содержимое файла CSV напрямую, без предварительной загрузки всего файла в память. | |
| 11 | + | - Последовательная запись файла CSV (поле за полем) с помощью класса TCSVBuilder. Позволяет записывать содержимое документа напрямую в файл, без буферизации в памяти. Реализована в версии 0.4 и выше. | |
| 12 | + | - Реализация CSV совместима с реализацией в OpenOffice Calc / MS Office Excel, т.е. CSV-файлы, сохранённые из Calc/Excel, можно читать с помощью CsvDocument, и наоборот. | |
| 13 | + | - Поддерживается как кодировка UTF-8, так и кодовые страницы windows-xxx. Библиотека использует тип *string* для всех строковых операций и сама не осуществляет каких-либо преобразований. Следует помнить, что Excel не поддерживает CSV-файлы в кодировке UTF-8. | |
| 14 | + | - Поддержка переводов строки внутри полей CSV. В том числе из-за этого пришлось изобретать велосипед. Следует помнить, что из пары OO Calc / MS Excel переводы строки в полях поддерживает только Calc. | |
| 15 | + | - Доступ к полям по аналогии с компонентом StringGrid: TCsvDocument.Cells\[ACol, ARow\]. Доступ к полям безопасен, т.е. при чтении несуществующего поля возвращается пустая строка, а не вызывается исключение типа "Index out of bounds". Для того, чтобы отличить пустое поле от несуществующего, можно воспользоваться методами HasRow/HasCell и свойствами RowCount/ColCount. | |
| 16 | + | - Поддержка поиска по строке/столбцу с помощью методов IndexOfRow(AString, ACol) / IndexOfCol(AString, ARow). Реализована в версии 0.3 и выше. | |
| 17 | + | - Нет искусственных ограничений на длину поля, число строк/столбцов, и т.д. Естественные ограничения сохраняются: производительность системы, объём свободной памяти, ограничение в 2 Гб на длину строки типа *string*, и ограничение на максимальное значение 32-разрядного знакового целого типа. | |
| 18 | + | - Соответствие RFC 4180 (http://tools.ietf.org/html/rfc4180#section-2) при использовании настроек по умолчанию. Реализовано в версии 0.4 и выше. | |
| 19 | + | - Соответствие неофициальной спецификации формата CSV (http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm#FileFormat). Реализовано в версии 0.3 и выше. Начиная с версии 0.4, требует установки свойства IgnoreOuterWhitespace в True. | |
| 20 | + | ||
| 21 | + | ### Автор | |
| 22 | + | ||
| 23 | + | Владимир Жиров | |
| 24 | + | ||
| 25 | + | ### Участники, внесшие вклад в развитие библитеки | |
| 26 | + | ||
| 27 | + | Luiz Américo Pereira Câmara | |
| 28 | + | ||
| 29 | + | Mattias Gärtner | |
| 30 | + | ||
| 31 | + | Reinier Olislagers | |
| 32 | + | ||
| 33 | + | ### Лицензия | |
| 34 | + | ||
| 35 | + | [Modified](http://svn.freepascal.org/svn/lazarus/trunk/COPYING.modifiedLGPL.txt) [LGPL](http://svn.freepascal.org/svn/lazarus/trunk/COPYING.LGPL.txt) (та же, что у FPC RTL и Lazarus LCL). | |
| 36 | + | ||
| 37 | + | ### Зависимости | |
| 38 | + | ||
| 39 | + | Библиотека представляет собой один файл с исходным кодом и зависит только от FPC RTL и FCL. | |
| 40 | + | ||
| 41 | + | ### Изменения | |
| 42 | + | ||
| 43 | + | #### Версия 0.1 (22.01.2010) | |
| 44 | + | ||
| 45 | + | - первый выпуск | |
| 46 | + | ||
| 47 | + | #### Версия 0.2 (31.05.2010) | |
| 48 | + | ||
| 49 | + | - исправлено некорректное преобразование символов конца строки | |
| 50 | + | - исправлена компиляция со включенными проверками диапазона (Range checks) | |
| 51 | + | - стала доступна функция QuoteCSVString, упрощающая генерацию CSV без использования класса TCsvDocument | |
| 52 | + | - выполнена небольшая чистка кода | |
| 53 | + | ||
| 54 | + | #### Версия 0.3 (14.01.2011) | |
| 55 | + | ||
| 56 | + | - изменён API CsvParser: callback-методы заменены на пару методов ResetParser/ParseNextCell, чтобы библиотеку можно было использовать без создания вспомогательных классов. Пример использования нового API можно посмотреть в методе TCSVDocument.LoadFromStream. | |
| 57 | + | - изменён API CsvDocument: метод TrimEmptyCells переименован в RemoveTrailingEmptyCells. | |
| 58 | + | - поддерживается удаление пробельных символов в начале и конце поля. Добавлено новое свойство TrimWhitespace. **Внимание**: TrimWhitespace по умолчанию включено. | |
| 59 | + | - поддерживается поиск по строке/столбцу с помощью методов IndexOfRow(AString, ACol) / IndexOfCol(AString, ARow) | |
| 60 | + | - улучшена производительность | |
| 61 | + | - выполнена чистка кода | |
| 62 | + | - добавлен набор простых тестов | |
| 63 | + | ||
| 64 | + | #### Версия 0.4 (10.05.2011) | |
| 65 | + | ||
| 66 | + | - функция QuoteCSVString заменена классом TCSVBuilder. Пример его использования можно посмотреть в методе TCSVDocument.SaveToStream. | |
| 67 | + | - свойство TrimWhitespace переименовано в IgnoreOuterWhitespace (для единообразия с новым свойством QuoteOuterWhitespace). | |
| 68 | + | - поддержка одинакового числа столбцов во всём документе (требуется для соответствия RFC 4180). См. свойство EqualColCountPerRow. | |
| 69 | + | - настройки по умолчанию изменены на соответствующие RFC 4180 (Delimiter - запятая, QuoteChar - двойная кавычка, окончания строк - CRLF, удаление пробельных символов в начале и конце поля выключено, одинаковое число столбцов во всём документе включено). | |
| 70 | + | - реализовано преобразование окончаний строк, включенных в содержимое полей, при разборе и генерации CSV-файла. Это позволяет избежать смешения различных окончаний строк в выходном файле при использовании принятых в ОС окончаний строк и работе с одним и тем же документом под разными ОС. | |
| 71 | + | - параметры формата CSV перемещены в класс TCSVHandler (предка классов TCSVParser, TCSVBuilder и TCSVDocument). | |
| 72 | + | - набор тестов обновлён для соответствия RFC 4180. | |
| 73 | + | - исправлены мелкие недоработки в demo-приложении. | |
| 74 | + | - включен оптимизированный вариант функции ChangeLineEndings, созданный Mattias Gärtner. | |
| 75 | + | - оптимизации по скорости, улучшения в demo-приложении и пакет для Lazarus от Luiz Américo Pereira Câmara. | |
| 76 | + | ||
| 77 | + | #### Версия 0.5 (25.10.2014) | |
| 78 | + | ||
| 79 | + | - исправлена ошибка в методе TrimEmptyCells, метод удалял пустые ячейки не только в конце, но и в середине строки (патч от Reinier Olislagers) | |
| 80 | + | - добавлено свойство TCSVParser.MaxColCount: максимальное число столбцов, определяемое в процессе чтения CSV-файла (патч от Reinier Olislagers) | |
| 81 | + | - добавлены комментарии к процедурам, функциям и свойствам (на основе патча от Reinier Olislagers) | |
| 82 | + | - исправления в demo-приложении (обновление интерфейса после загрузки документа, отдельные файлы проекта для Lazarus 0.9.30) | |
| 83 | + | ||
| 84 | + | ### Статус | |
| 85 | + | ||
| 86 | + | Beta | |
| 87 | + | ||
| 88 | + | ### Загрузка | |
| 89 | + | ||
| 90 | + | Новый выпуск библиотеки можно загрузить с Lazarus-CCR или Bitbucket: | |
| 91 | + | ||
| 92 | + | <http://sourceforge.net/projects/lazarus-ccr/files/CsvDocument/CsvDocument%200.5/csvdocument-0.5.zip/download> | |
| 93 | + | ||
| 94 | + | <https://bitbucket.org/vvzh/csvdocument/downloads/csvdocument-0.5.zip> | |
| 95 | + | ||
| 96 | + | Архив содержит саму библиотеку, демонстрационное приложение и набор тестов. | |
| 97 | + | ||
| 98 | + | Разрабатываемую версию можно получить: | |
| 99 | + | ||
| 100 | + | - Из Mercurial-репозитория на Bitbucket: | |
| 101 | + | ||
| 102 | + | ``` bash | |
| 103 | + | hg clone https://bitbucket.org/vvzh/csvdocument csvdocument | |
| 104 | + | ``` | |
| 105 | + | ||
| 106 | + | - Из Subversion-репозитория Lazarus-CCR: | |
| 107 | + | ||
| 108 | + | ``` bash | |
| 109 | + | svn co svn://svn.code.sf.net/p/lazarus-ccr/svn/components/csvdocument csvdocument | |
| 110 | + | ``` | |
| 111 | + | ||
| 112 | + | ### Установка и использование | |
| 113 | + | ||
| 114 | + | Достаточно добавить модуль CsvDocument в секцию *uses*. Если необходимо, можно установить путь к модулю в свойствах проекта. Другой вариант: | |
| 115 | + | ||
| 116 | + | 1\. Откройте файл "csvdocument_package.lpk" из Lazarus IDE, используя меню: "Пакет -\> Открыть файл пакета (.lpk) ...". | |
| 117 | + | ||
| 118 | + | 2\. Скомпилируйте пакет. | |
| 119 | + | ||
| 120 | + | 3\. Откройте ваш проект. | |
| 121 | + | ||
| 122 | + | 4\. Добавьте пакет в качестве зависимости для вашего проекта с помощью Инспектора проекта. | |
| 123 | + | ||
| 124 | + | ### Обратная связь | |
| 125 | + | ||
| 126 | + | Просьба отправлять сообщения об ошибках и патчи по адресу, указанному в исходном коде библиотеки. | |
| 127 | + | ||
| 128 | + | ### См. также | |
| 129 | + | ||
| 130 | + | - [[CSV]] | |
| 131 | + | - [[FPSpreadsheet]] | |
| 132 | + | - [[JCSV (Jans CSV Components)]] | |
| 133 | + | ||
| 134 | + | --- | |
| 135 | + | *From the Free Pascal wiki, page "CsvDocument/ru", as it stood on 2020-07-10 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 136 | + | Category: Components/ru | |
| 137 | + | Category: Data import and export/ru | |
| 138 | + | Category: Lazarus-CCR/ru | |
| 139 | + | Category: Russian | |
| 140 | + | Category: Russian (unfinished translation) |
