fork download
  1. program CSVParser;
  2. uses
  3. Classes;
  4. var
  5. CSVData: TStringList;
  6. Buffer, Element: String;
  7. StartFrom, I: Integer;
  8. begin
  9. CSVData := TStringList.Create;
  10. repeat
  11. ReadLn(Buffer);
  12. StartFrom := 1;
  13. for I := 1 to Length(Buffer) do
  14. if Buffer[I] = ',' then
  15. begin
  16. Element := Copy(Buffer, StartFrom, I - StartFrom);
  17. if Length(Element) > 0 then
  18. CSVData.Add(Element);
  19. StartFrom := I + 1;
  20. end;
  21. until EoF(Input);
  22.  
  23. WriteLn('Всего элементов: ', CSVData.Count);
  24. for Element in CSVData do
  25. WriteLn(Element + ';');
  26. CSVData.Free;
  27. end.
Success #stdin #stdout 0s 4528KB
stdin
раз,два,три,
ёлочка гори,
следующий элемент - пробел,
 ,
пустые элементы игнорируются,

,
,,

строка завершается запятой,
строка запятой не завершается

1,2,3,4,
5,6,7,8,
9
stdout
Всего элементов: 16
раз;
два;
три;
ёлочка гори;
следующий элемент - пробел;
 ;
пустые элементы игнорируются;
строка завершается запятой;
1;
2;
3;
4;
5;
6;
7;
8;