Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Doppelte Einträge im Stringgrid ausgeben (https://www.delphipraxis.net/107283-doppelte-eintraege-im-stringgrid-ausgeben.html)

Overburn 25. Jan 2008 09:11


Doppelte Einträge im Stringgrid ausgeben
 
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

marabu 25. Jan 2008 09:59

Re: Doppelte Einträge im Stringgrid ausgeben
 
Hallo Stefan,

ich erinnere mich an diesen Thread: Duplikate in StringGrid anzeigen und den Rest rausschmeissen

Vielleicht hilft er dir ein wenig.

Freundliche Grüße

Overburn 25. Jan 2008 10:00

Re: Doppelte Einträge im Stringgrid ausgeben
 
Moin marabu,

danke. Den hatt ich auch schon ausgegraben und mit ein wenig umdneke hat er mir zur Lösung verholfen. :)
Danke!

Gruß,
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz