mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-09 03:52:49 +02:00
81 lines
1.5 KiB
ObjectPascal
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.
|
|
|