AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sortieralgorithmen

Ein Thema von biby90 · begonnen am 15. Aug 2011 · letzter Beitrag vom 22. Aug 2011
Antwort Antwort
Seite 1 von 2  1 2      
biby90
(Gast)

n/a Beiträge
 
#1

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 10:51
habe jetzt in meinem button eingefügt, dass wenn ein leerstring vorhanden ist, die zeile gelöscht wird. aber irgendwie funktioniert das nicht ganz.... wenn er es sortiert hat fehlt ein wort und die obere zeile ist leer....
ich habe mir jetzt gedacht, dass ich die zeile um einen verschiebe, wenn eine zeile gelöscht wurde.
also entweder lasse ich ihn das ganze noch einmal prüfen ab der gelöschten zeile oder mache es so wie ich es probiert habe....
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lArray: array of String;
  i, j : Integer;
  A, B : String;
begin
  SetLength(lArray, Memo1.Lines.Count);

  for i := 0 to Memo1.Lines.Count -1 do
  begin
    //sicherstellen, dass der String min. ein Zeichen hat.
    if Memo1.Lines.Strings[i] = 'then
    begin
      Memo1.Lines.Delete(i);
      dec(j); //klappt trotzdem nicht
    end else
    begin
      lArray[i] := Memo1.Lines.Strings[i][1];
    end;
  end;

    //Array sortieren.
    ShellSort(lArray);

    //TODO: Array zurück ins Memo kopieren.
    Memo1.Lines.Clear;
    Memo1.Lines.Add('');
    for i := 0 to Length(lArray) - 1 do
    begin
      Memo1.Lines.Add(lArray[i]);
    end;
end;
naja es klappt aber irgendwie nicht.

Geändert von biby90 (19. Aug 2011 um 10:54 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 11:32
Das mußt du mit einer while Schleife machen, da sich Memo1.Lines.Count ändert, wenn eine Zeile gelöscht wurde.
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#3

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 11:37
ganz genau das hab ich gesucht... danke schöööön ich probiere es gleich ma aus....
ist nur noch die frage wie und wo ich sie einsetze aber das versuch ich alleine herauszufinden.... das kann ja nicht all zu schwer sein

Geändert von biby90 (19. Aug 2011 um 11:40 Uhr)
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#4

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 12:54
werde nicht ganz schlau daraus.... vielleicht ein kleiner hinweis wo ich den ungefähr hinsetzen muss?

Geändert von biby90 (19. Aug 2011 um 13:02 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 13:06
Pseudocode

Delphi-Quellcode:
  I:= 0;
  while I <= Count-1 do
  begin
    if Soll Zeile I Löschen then
    begin
      Lösche Zeile I
      Dec(I);
    end;
    Inc(I);
  end;

  array [0..count-1] = Memo.Lines[0..count-1]
  sort array

  Memo.Lines.BeginUpdate
  Memo.Lines[0..count-1] = array [0..count-1]
  Memo.Lines.EndUpdate
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#6

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 13:28
Mit einer absteigenden For-Schleife löscht man etwas einfacher.
Delphi-Quellcode:
for i := Memo1.Lines.Count - 1 downto 0 do
  if Memo1.Lines[i] = 'then
    Memo1.Lines.Delete(i);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#7

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 13:33
Deddyh.... das war schon das richtige nur jetzt lässt er in den ersten beiden zeilen einen leerstring... die sollen ja auch noch weg. zu mindest bleiben jetzt alle werte da
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 13:49
Länge des Array aktualisiern nicht vergessen.
SetLength (Array, Memo.Lines.count);
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#9

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 13:53
wenn ich das mache sind alle werte weg
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#10

AW: Sortieralgorithmen

  Alt 19. Aug 2011, 14:06
wenn ich SetLength(lArray, Memo1.Lines.Count) mit eingebe dann löscht er werte und behält die leerzeile.... er soll das doch umgekehrt machen!
och manno.... alles doof heute
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz