Hi Capo,
ich hatte nicht verstanden, dass am Beginn deiner Zeilen eine Zeitangabe steht, deshalb ist mein Lösungsansatz etwas generisch. Du kannst ihn aber etwa so an deine Bedürfnisse anpassen:
Delphi-Quellcode:
procedure TDemoForm.DoLine(lineCount: Integer; line: String);
begin
KeepMemo.Lines.Add(line);
end;
procedure TDemoForm.DoEmptyLine(lineCount: Integer);
begin
LogMemo.Lines.Add(Format('Zeile %d ist leer', [lineCount]));
end;
procedure TDemoForm.DoSameLine(lineCount: Integer; line: String);
begin
LogMemo.Lines.Add(Format('Zeile %d ist doppelt: %s', [lineCount, line]));
end;
procedure TDemoForm.CheckText(fn: TFileName);
var
tf: TextFile;
index, lineCount: Integer;
lines: array [0..1] of String;
begin
lines[0] := '';
lines[1] := '';
lineCount := 0;
index := 0;
KeepMemo.Clear;
LogMemo.Clear;
AssignFile(tf, fn);
Reset(tf);
while not Eof(tf) do
begin
Inc(lineCount);
ReadLn(tf, lines[index]);
// Test auf Leere
if line[index] = '' then
DoEmptyLine(lineCount) else
// Test auf Gleichheit
if Copy(lines[0], 1, 8) = Copy(lines[1], 1, 8) then
DoSameLine(lineCount, lines[index]) else
// Sonst
DoLine(lineCount, lines[index]);
index := 1 - index;
end;
CloseFile(tf);
end;
Der Ansatz unterscheidet sich geringfügig von Hawkeyes Ansatz.
Besser du findest die Bedeutung des lines array selbst heraus - andernfalls wird dir sicher noch geholfen.
Gute Nacht
marabu
Edit: Fehlendes ELSE eingefügt - danke Hawkeye