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