You are here

TStringList/TWideStringList Trim Functions in Delphi

Submitted by Asif Nowaj, Last Modified on 2019-11-22

Removing blank lines from list of strings that is from TStringList which is widely used for an array of strings.
We have reused the IsStringEmpty function from other article called Different String type verification functions in Delphi.
To remove the trailing blank lines from a TStringList, use the below function. This function can be used for TWideStringList too by writing a overloaded version of this function using a TWideStringList as parameter.

procedure TStringListTrimTrailBlankLines(t: TStringList);
begin
  while true do
  begin
    if t.Count = 0 then exit;
    if IsStringEmpty(t[t.Count - 1]) = false then exit;
    t.Delete(t.Count - 1);
  end;
end;


To delete the leading blank lines from a TStringList, use the below function. This function can be used for TWideStringList too by writing a overloaded version of this function using a TWideStringList as parameter.

procedure TStringListTrimLeadBlankLines(t: TStringList);
begin
  while true do
  begin
    if t.Count = 0 then exit;
    if IsStringEmpty(t[0]) = false then exit;
    t.Delete(0);
  end;
end;


To strip of blank lines from whole list of strings, use below function. This function can be used for TWideStringList too by writing a overloaded version of this function using a TWideStringList as parameter.

procedure TStringListStripBlankLines(t: TStringList);
var
  i: integer;
begin
  for i := t.Count - 1 downto 0 do
    if IsStringEmpty(t[i]) then
      t.Delete(i);
end;


To delete a specified number of blank lines from a list of strings, use below function. The same can used for TWideStringList by overloading the function.

procedure TStringListStripMultipleBlankLines(t: TStringList; NumberOfLines: integer);
var
  idx, count: integer;
begin
  idx := 0;
  Count := 0;
  while (idx = NumberOfLines) then
      begin
        t.delete(idx);
        dec(Count);
      end
      else
        inc(idx);
    end
    else
    begin
      Count := 0;
      inc(idx);
    end;
end;



Discussion or Comment

If you have anything in mind to share, please bring it in the discussion forum here.

https://forum.everyething.com/delphi-f39/