Imagine something like this:

neoCSVReader := (NeoCSVReader on: stream).
neoCSVReader��
separator: $,;
recordClass: PriceRecord;
addIgnoredField; "<name>"
addField: ��#securityUniqueId: ; "<ticker>"
addField: #date: converter: [ :string | Date readFrom: string readStream pattern: 'yyyymmdd' ]; "<date>"
addFloatField: #open: ; "<open>"
addFloatField: #high: ; "<high>"
addFloatField: #low: ; "<low>"
addFloatField: #close: ; "<close>"
addIntegerField: #volume: . "<vol>"
neoCSVReader skipHeader.
priceRecords := neoCSVReader upToEnd.


The #recordClass: is optional. If not, you can get an array of arrays instead.��
You can add #addIgnoredField for all the ones you want to ignore, then add the #addNumber: etc for the number ones, etc. To write a default empty value, I would use my own converter. Something like:

addField: #stringcolumn: converter: [ :string | string isEmptyOrNil ifTrue: [ '' ] ��];��
addField: #numbercolumn: converter: [ :string | string isEmptyOrNil ifTrue: [ 0 ] ifFalse: [ NeoNumberParser parse: string ] ��];

Hope this helps.

Cheers,��



On Mon, Sep 28, 2015 at 9:06 AM, Nicolai Hess <nicolaihess@web.de> wrote:
Hi,

I have two problems I could not solve:

1. I would like to read only some columns: I have a large file with
������ ~30 colums, but I am only interested on ~5 columns
������ (not that important, I could pre-process the file) but anyway it would be
������ nice to do it in smalltalk.

2. some columns will contain only strings (quoted values) and some only numbers,
������ but the field may be empty, is it possible to define the default "emptyValue" as an
������ - empty string for empty fields in the "string column"
������ - 0 for empty fields in the "number column"?


thanks
��in advance

nicolai



--