AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dubikate in TStringGrid anzeigen (den Rest rausschmeißen)...
Thema durchsuchen
Ansicht
Themen-Optionen

Dubikate in TStringGrid anzeigen (den Rest rausschmeißen)...

Ein Thema von yankee · begonnen am 14. Aug 2005 · letzter Beitrag vom 14. Aug 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Dubikate in TStringGrid anzeigen (den Rest rausschmeißen

  Alt 14. Aug 2005, 15:09
Zitat von marabu:
... Was soll ich sagen, damit produzierte der Code in den ersten Durchläufen korrekte Ergebnisse. ...
Hai marabu,

auch beim ersten Durschlauf war das Ergebniss falsch im Sinne der Anforderung
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Dubikate in TStringGrid anzeigen (den Rest rausschmeißen

  Alt 14. Aug 2005, 15:15
@marabu: Auch wenn's völlig unwichtig ist: Ich bleib dabei, man 'kann', muss aber nicht;
Sei j0 der kleinste Index mit sl[j0] = KEY zu irgendeinem KEY und j1 der größte Index. Ziel ist es, j0 zu finden. Ob ich bei j1 anfange (so wie ich mit meiner Änderung) oder bei einem beliebigen j (j0<=j<=j1), so wie Du mit dem IndexOf, ist unerheblich. Allerdings ist meine Version schneller, insofern kann man müssen, muss aber nicht.

Ach, was ist das für ein Sonntag, an dem man sich über SOWAS auseinandersetzen kann. Dann geht's uns wohl doch ganz gut
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

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

Re: Dubikate in TStringGrid anzeigen (den Rest rausschmeißen

  Alt 14. Aug 2005, 17:14
@yankee: sorry, dein thread ist etwas entartet und ich bin wahrscheinlich der Schuldige. Hier der Code, der dein Problem lösen könnte. Er setzt die Idee von keldorn um, ohne den IndexOf()-Fehler. Hoffentlich korrekt:

Delphi-Quellcode:
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;
@keldorn: Bin auch drauf hereingefallen - dabei habe ich sogar älteren Code bei mir gefunden, der die Falle umgeht.

@sharky: Bist ein guter Tester. Selbst die ersten 3000 mit dem gezeigten Random-Code erzeugten Testfälle werden von meiner ersten / fehlerhaften Prozedur korrekt verarbeitet. Da musstest erst du kommen mit deinen wahrscheinlich handgeschmiedeten Testdaten.

@alzaimar: Hast heute als einziger so richtig den Überblick gehabt - kein Wunder, warst ja auch lange genug im Urlaub.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 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