fpc/packages/fcl-base/examples/csvbom.pp
2016-11-11 10:03:14 +00:00

54 lines
1.2 KiB
ObjectPascal

program csvbom;
{$APPTYPE Console}
{$mode objfpc}{$H+}
uses
sysutils, classes, dateutils, csvreadwrite;
type
TDataRec = record
FDate: TDate;
FNumber: Integer;
FText: String;
end;
const
FILENAME = 'databom.txt';
var
parser: TCSVParser;
stream: TFileStream;
data: array of TDataRec;
s: String;
i: Integer;
begin
parser := TCSVParser.Create;
try
parser.Delimiter := ',';
parser.DetectBOM := true; // uncomment for running with patched version
stream := TFileStream.Create(FILENAME, fmOpenRead);
parser.SetSource(stream);
SetLength(data, 0);
while parser.ParseNextCell do begin
if parser.CurrentRow > High(data) then
SetLength(data, parser.CurrentRow + 1);
s := parser.CurrentCellText;
case parser.CurrentCol of
0: data[High(data)].FDate := ScanDateTime('yyyy-mm-dd', s);
1: data[High(data)].FNumber := StrToInt(s);
2: data[High(data)].FText := s;
end;
end;
for i:=0 to High(data) do
WriteLn(DateToStr(data[i].FDate), '; ', data[i].FNumber, '; ', data[i].FText);
Writeln('Press enter to quit program');
Readln;
finally
stream.Free;
parser.Free;
end;
end.