How to print the log line containing a specific date from a text block in Pascal

1 Answer

0 votes
program FindLogByDate;

{$mode objfpc}

uses
  Classes;

procedure PrintLogByDate(const Logs, TargetDate: string);
var
  List: TStringList;
  I: Integer;
begin
  List := TStringList.Create;
  try
    List.Text := Logs;  // automatically splits on line breaks

    for I := 0 to List.Count - 1 do
    begin
      if Pos(TargetDate, List[I]) > 0 then
      begin
        WriteLn(List[I]);
        Exit;  // stop after first match
      end;
    end;

    WriteLn('Date not found.');
  finally
    List.Free;
  end;
end;

var
  Logs: AnsiString;

begin
  Logs :=
    '01/12/2023 - Log entry one.' + LineEnding +
    '17/03/2021 - Log entry two.' + LineEnding +
    '29/07/2019 - Log entry three.' + LineEnding +
    '05/11/2024 - Log entry four.' + LineEnding +
    '22/08/2020 - Log entry five.' + LineEnding +
    '14/02/2018 - Log entry six.' + LineEnding +
    '30/09/2022 - Log entry seven.' + LineEnding +
    '11/06/2017 - Log entry eight.' + LineEnding +
    '03/04/2025 - Log entry nine.' + LineEnding +
    '26/01/2016 - Log entry ten.' + LineEnding;

  PrintLogByDate(Logs, '05/11/2024');
end.



(* 
run:

05/11/2024 - Log entry four.

*)

 



answered 11 hours ago by avibootz

Related questions

...