LCL, arguments rename and parameter SkipEmptyLines in LoadFromCSVxxx function, modified patch from wp, issue #28582

git-svn-id: trunk@49754 -
This commit is contained in:
jesus 2015-09-03 23:49:43 +00:00
parent 9a14589341
commit 3a209ed467

View File

@ -1625,12 +1625,14 @@ type
procedure Clean(StartCol,StartRow,EndCol,EndRow: integer; CleanOptions: TGridZoneSet); overload;
procedure CopyToClipboard(AUseSelection: boolean = false);
procedure InsertRowWithValues(Index: Integer; Values: array of String);
procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true; SkipLines: Integer=0);
procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=','; WithHeader: boolean=true; SkipLines: Integer=0);
procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true;
VisibleColumnsOnly: boolean=false);
procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=','; WithHeader: boolean=true;
VisibleColumnsOnly: boolean=false);
procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=',';
UseTitles: boolean=true; FromLine: Integer=0; SkipEmptyLines: Boolean=true);
procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=',';
UseTitles: boolean=true; FromLine: Integer=0; SkipEmptyLines: Boolean=true);
procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=',';
WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false);
procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=',';
WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false);
property Cells[ACol, ARow: Integer]: string read GetCells write SetCells;
property Cols[index: Integer]: TStrings read GetCols write SetCols;
@ -10853,7 +10855,8 @@ begin
end;
procedure TCustomStringGrid.LoadFromCSVStream(AStream: TStream;
ADelimiter: Char=','; WithHeader: boolean=true; SkipLines: Integer=0);
ADelimiter: Char=','; UseTitles: boolean=true; FromLine: Integer=0;
SkipEmptyLines: Boolean=true);
var
MaxCols: Integer = 0;
MaxRows: Integer = 0;
@ -10862,7 +10865,7 @@ var
function RowOffset: Integer;
begin
// return row offset of current CSV record (MaxRows) which is 1 based
if withHeader then
if UseTitles then
result := Max(0, FixedRows-1) + Max(MaxRows-1, 0)
else
result := FixedRows + Max(MaxRows-1, 0);
@ -10873,12 +10876,15 @@ var
i, aRow: Integer;
begin
inc(LineCounter);
if (LineCounter < SkipLines) then
if (LineCounter < FromLine) then
exit;
if Fields.Count=0 then
exit;
if SkipEmptyLines and (Fields.Count=1) and (Fields[0]='') then
exit;
// make sure we have enough columns
if MaxCols<Fields.Count then
MaxCols := Fields.Count;
@ -10891,9 +10897,9 @@ var
ColCount := MaxCols;
end;
// setup columns captions of custom columns if they are enabled
// setup columns captions if enabled by UseTitles
if (MaxRows = 0) then
if WithHeader then
if UseTitles then
begin
if Columns.Enabled then
for i:=0 to Fields.Count-1 do Columns[i].Title.Caption:=Fields[i]
@ -10934,20 +10940,21 @@ begin
end;
procedure TCustomStringGrid.LoadFromCSVFile(AFilename: string;
ADelimiter: Char=','; WithHeader: boolean=true; SkipLines: Integer=0);
ADelimiter: Char=','; UseTitles: boolean=true; FromLine: Integer=0;
SkipEmptyLines: Boolean=true);
var
TheStream: TFileStreamUtf8;
begin
TheStream:=TFileStreamUtf8.Create(AFileName,fmOpenRead or fmShareDenyWrite);
try
LoadFromCSVStream(TheStream, ADelimiter, WithHeader, SkipLines);
LoadFromCSVStream(TheStream, ADelimiter, UseTitles, FromLine, SkipEmptyLines);
finally
TheStream.Free;
end;
end;
procedure TCustomStringGrid.SaveToCSVStream(AStream: TStream; ADelimiter: Char;
WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false);
var
i,j,StartRow: Integer;
HeaderL, Lines: TStringList;
@ -10957,7 +10964,7 @@ begin
exit;
Lines := TStringList.Create;
try
if WithHeader then begin
if WriteTitles then begin
if Columns.Enabled then begin
if FixedRows>0 then begin
HeaderL := TStringList.Create;
@ -11019,13 +11026,13 @@ begin
end;
procedure TCustomStringGrid.SaveToCSVFile(AFileName: string; ADelimiter: Char;
WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false);
var
TheStream: TFileStreamUtf8;
begin
TheStream:=TFileStreamUtf8.Create(AFileName,fmCreate);
try
SaveToCSVStream(TheStream, ADelimiter, WithHeader);
SaveToCSVStream(TheStream, ADelimiter, WriteTitles, VisibleColumnsOnly);
finally
TheStream.Free;
end;