Sign in Join
Wiki copytemporary

CsvDocument/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: CsvDocument/ru

OldNewLine
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)

Back to history