blob: a16adf582afaa83434ce07338bcd34988cda431a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
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.
|