ListBox, wenn gleiche Strings, dann überzählige löschen

Für Fragen von Einsteigern und Programmieranfängern...
MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: ListBox, wenn gleiche Strings, dann überzählige löschen

Beitrag von MAC »

mir auch, aber lanes hat recht

Code: Alles auswählen

var
  i,a:integer;
begin
i := 0;
a := 1000;
for i := 0 to a do
    begin
    dec(a);
    end;
Form1.Caption:=inttoStr(i);
eigentlich müsse sich das irgendwo in der mitte treffen- am ende ist i aber 1000...

Code: Alles auswählen

Signatur := nil;

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: ListBox, wenn gleiche Strings, dann überzählige löschen

Beitrag von Maik81ftl »

MAC hat geschrieben:mir auch, aber lanes hat recht

Code: Alles auswählen

var
  i,a:integer;
begin
i := 0;
a := 1000;
for i := 0 to a do
    begin
    dec(a);
    end;
Form1.Caption:=inttoStr(i);
eigentlich müsse sich das irgendwo in der mitte treffen- am ende ist i aber 1000...
Ähmmm gegenfrage? warum nicht eine Repeat Until-Schleife???

Code: Alles auswählen

var
  i,a:integer;
begin
i := 0;
a := 1000;
Repeat
      dec(a);
      inc(i);
      until i = a;
Form1.Caption:=inttoStr(i);
sollte doch sicherer Sein oder?
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: ListBox, wenn gleiche Strings, dann überzählige löschen

Beitrag von pluto »

sollte doch sicherer Sein oder?
Jetzt weiß ich auch, warum ich in der Regel keine Forschleifen einsetzte, wenn sich die Reihenfolge der Elemente ändert *G*. Darauf stoße ich jedes mal, also nutzte ich praktisch dafür keine For-Schleife mehr. *G*.... Repet oder While schleifen sind auch besser Steuerbar, als eine For-Schleife.
MFG
Michael Springwald

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: ListBox, wenn gleiche Strings, dann überzählige löschen

Beitrag von MAC »

@maik81ftl: weil ich das gegenbeispiel zeigen wollte, welches "nicht funktioniert". :)

Code: Alles auswählen

Signatur := nil;

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: ListBox, wenn gleiche Strings, dann überzählige löschen

Beitrag von carli »

Code: Alles auswählen

var i: integer;
list: TStrings;
begin
 list:=meine_liste; 
 list.sort;
 i:=list.count-1;
 while i>0 do begin
  if list[i]=list[i-1] then list.delete(i);
  dec(i);
 end;
end;
Ich behaupte mal, dass diese Variante eins der besten Laufzeitverhalten hat.

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: ListBox, wenn gleiche Strings, dann überzählige löschen

Beitrag von Maik81ftl »

Hmmm mal ro genau überlegt, sollte dies ja auch bei String laufen, welche keinen Text enthalten. bzw nur ein
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Antworten