lazarus/components/lazreport/source/lr_e_csv.pas
2009-07-06 20:19:38 +00:00

81 lines
1.5 KiB
ObjectPascal

{*****************************************}
{ }
{ FastReport v2.3 }
{ CSV export filter }
{ }
{ Copyright (c) 1998-99 by Tzyganenko A. }
{ }
{*****************************************}
unit LR_E_CSV;
interface
{$I lr_vers.inc}
uses
Classes, SysUtils, LResources,
Graphics,GraphType, Controls, Forms, Dialogs,LR_E_TXT,
LCLType,LCLIntf,LR_Class;
type
TfrCSVExport = class(TComponent)
public
Constructor Create(aOwner : TComponent); override;
end;
TfrCSVExportFilter = class(TfrTextExportFilter)
public
procedure OnEndPage; override;
end;
implementation
uses LR_Const;
procedure TfrCSVExportFilter.OnEndPage;
var
i, j, n, tc1, tc2: Integer;
p: PfrTextRec;
s: String;
begin
n := Lines.Count - 1;
while n >= 0 do
begin
if Lines[n] <> nil then break;
Dec(n);
end;
for i := 0 to n do
begin
s := '';
tc1 := 0;
p := PfrTextRec(Lines[i]);
while p <> nil do
begin
tc2 := p^.X div 64;
for j := 0 to tc2 - tc1 - 1 do
s := s + ';';
s := s + p^.Text;
tc1 := tc2;
p := p^.Next;
end;
s := s + #13#10;
Stream.Write(s[1], Length(s));
end;
end;
constructor TfrCSVExport.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
frRegisterExportFilter(TfrCSVExportFilter, sCSVFile + ' (*.csv)', '*.csv');
end;
end.