Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

CSV Enable Quotes

Explains the EnableQuotes property for the CSV class.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Csv;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  csv: TCsv;
  csv2: TCsv;

begin
  success := False;

  //  The CSV in this example contains this:   test;"123;abc";xyz

  csv := TCsv.Create;

  //  EnableQuotes is True by default, but we'll explicitly set to True here:
  csv.EnableQuotes := True;
  success := csv.LoadFile('qa_data/csv/enableQuotes.csv');

  //  Show row 0, column 0
  WriteLn(csv.GetCell(0,0));
  //  Show row 0, column 1
  WriteLn(csv.GetCell(0,1));
  //  Show row 0, column 2
  WriteLn(csv.GetCell(0,2));

  //  Output is: 
  //   test
  //   123;abc
  //   xyz

  //  -------------------------------------------
  //  Turn off EnableQuotes and see what happens:

  csv2 := TCsv.Create;
  csv2.EnableQuotes := False;

  success := csv2.LoadFile('qa_data/csv/enableQuotes.csv');

  WriteLn(csv2.GetCell(0,0));
  WriteLn(csv2.GetCell(0,1));
  WriteLn(csv2.GetCell(0,2));
  WriteLn(csv2.GetCell(0,3));

  //  Output is:

  //   test
  //   "123
  //   abc"
  //   xyz


  csv.Free;
  csv2.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.