Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#19

Re: Überprüfen ob alle Zeilen vorhanden sind

  Alt 7. Jul 2006, 21:16
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
  Mit Zitat antworten Zitat