Delphi-PRAXiS
Seite 8 von 8   « Erste     678   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Sortieralgorithmen (https://www.delphipraxis.net/162274-sortieralgorithmen.html)

shmia 19. Aug 2011 14:48

AW: Sortieralgorithmen
 
Ja, ja das kommt davon, wenn man keine sauberen Funktionen schreibt!
Hier kommt mal eine ausgereifte Funktion:
Delphi-Quellcode:
{**************************************************************************
 * NAME:   RemoveEmptyStrings
 * DESC:   lösche leere Zeilen aus TStrings Objekt
 * PARAMS: [-]
 * RESULT: Anzahl der Löschungen
 *************************************************************************}
function RemoveEmptyStrings(list : TStrings):Integer;
var
   i : Integer;
begin
   Assert(Assigned(list));
   Result := 0;
   for i := list.Count-1 downto 0 do
   begin
      if list[i] = '' then
      begin
         list.Delete(i);
         Inc(Result);
      end;
   end;
end;
Und der Aufruf wäre dann
Delphi-Quellcode:
RemoveEmptyStrings(Memo1.Lines);

biby90 19. Aug 2011 14:56

AW: Sortieralgorithmen
 
unsauber mag vielleicht ja sein.... entschuldigung dass ich nicht als programmiererin geboren bin sondern jetzt meine zweite woche in der ausbildung verbringe




soo und jetzt an die lieben hier^^ bin jetzt so weit gekommen.... es funktioniert so weit auch gut nur muss ich das array rückwärts befüllen damit auch die letzte leerzeile die entsteht verschwindet.... hat dazu jemand einen kleinen tipp?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lArray: array of String;
  i : Integer;
  A : String;
begin
  SetLength(lArray, Memo1.Lines.Count);

  for i := Memo1.Lines.Count -1 downto 0 do
  begin
    //sicherstellen, dass der String min. ein Zeichen hat.
    if Memo1.Lines.Strings[i] = '' then
    begin
      Memo1.Lines.Delete(i);
      SetLength(lArray, Length(lArray) -1);
    end else
    begin
      lArray[i] := Memo1.Lines.Strings[i][1]; //Array rückwärts befüllen
    end;
  end;

    //Array sortieren.
    ShellSort(lArray);

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

DeddyH 19. Aug 2011 17:00

AW: Sortieralgorithmen
 
Meinst Du nicht, dass es sinnvoller wäre, zuerst die Leerzeilen aus dem Memo zu löschen und dann erst das Array entsprechend zu dimensionieren?

shmia 19. Aug 2011 17:22

AW: Sortieralgorithmen
 
Zitat:

Zitat von biby90 (Beitrag 1118078)
unsauber mag vielleicht ja sein.... entschuldigung dass ich nicht als programmiererin geboren bin

Das war mehr an meine Kollegen die beruflich programmieren gerichtet, nicht an dich.:wink:
Trotzdem kann du die Funktion so nehmen wie sie ist (natürlich nicht wenn deine Programmierleistung von einem Lehrer benotet wird).

biby90 22. Aug 2011 09:42

AW: Sortieralgorithmen
 
Zitat:

Das war mehr an meine Kollegen die beruflich programmieren gerichtet, nicht an dich
ok denn hab ichs faösch verstanden. habe es jetzt hinbekommen und habe eine neue aufgabe weil mein ausbilder 2 wochen auf lehrgang ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr.
Seite 8 von 8   « Erste     678   

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