CSVDocument is a library for processing CSV (comma-separated values) files. It includes CSV parser and document model.
Very good idea to have something like this. CSV is a great format for certain types of data primarily because it's so easy to create. For example, most users can create a CSV file with Excel ("just enter your data in columns, put a row of headers at the top, the save it to CSV"). With a row of known headers, this means the file is practically standalone and the column order is not important as long as the data items are in the same order as the header items.
Try asking ordinary users to create an XML file - that's usually where the conversation ends.
I've used something like this for years, both as a file format and as a generic import format, although with the Creativyst (Repici?) variation of escaping the comma if it appears within any data item. If you escape the comma, then you don't need to quote an item unless you want to preserve trailing/leading spaces _and_ ignore spaces between items.
Not sure if I like the idea of a record spanning more than one line - then the line number doesn't mean anything. Whereas if you escape the newline (another of their variations), then line number = record number + 1.
Do you support their variations? Also, does your package work with Delphi? Unfortunately I don't currently use Lazarus for production work.
For readers who haven't looked at this closely, note that this is practically an in-memory database (IMDB) that he's provided in CSVDocument.
And don't forget it's a great data exchange format for certain types of data. Recently I was looking into importing data from commercial software that records data from personal weather stations. The software stored the data in a Sqlite database, using a different schema for each manufacturer. No way I was going to try to figure that out. But the author was quite agreeable to exporting the data I was interested in to CSV - almost no overhead for either of us.
Thanks.
-Phil