Einzelnen Beitrag anzeigen

Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#1

Doppelte Einträge im Stringgrid ausgeben

  Alt 25. Jan 2008, 09:11
Moin Leute,

ich hab ein Problem bzw stecke fest..
Ich lade eine CSV datei in ein Stringgrid. Diese CSV-Datei muss ich in einer Spalte nach Duplikate durchsuchen. Dann möchte ich nur die Zeilen mit den Duplikaten anzeigen lassen.
Folgenden Code hab ich als Ansatz gefunden aber leider lässt der bei mir den Speicher überlaufen. Habt ihr ne Idee?
Code:
   procedure TDemoForm.DeleteRow(iRow: integer);
var
  i: integer;
begin
  with StringGrid do begin
    if iRow < FixedRows then
      raise Exception.Create('you cannot delete a fixed row');
    for i := Succ(iRow) to RowCount - 1 do
      Rows[i-1].Assign(Rows[i]);
    RowCount := RowCount - 1;
  end;
end;

procedure TDemoForm.KillButtonClick(Sender: TObject);
var
  i, iDup, iCol, iDist: integer;
  allDuplicates: boolean;
begin
  iCol := 1; // column to check
  allDuplicates := false;
  with StringGrid do
  for i := RowCount - 1 downto 0 do begin
    iDup := i;
    while (iDup > 0)
    and (cells[iCol, iDup - 1] = cells[iCol, iDup]) do
      Dec(iDup);
    iDist := i - iDup;
    if (iDist = 0) or (not allDuplicates and (iDist > 1)) then
      DeleteRow(i);
  end;
end;
Gruß,
Stefan
  Mit Zitat antworten Zitat