Thema: Delphi Array sortieren

Einzelnen Beitrag anzeigen

Michael S.

Registriert seit: 5. Mär 2006
3 Beiträge
 
#1

Array sortieren

  Alt 5. Mär 2006, 14:53
Hallo,
eins vorweg: Ich weiß, dass es eine Suchfunktion gibt und es bereits viele Threads zum Thema Sortieren gibt. Da ich mich aber selber an einem Algorithmus versuchen will, wäre es nett, wenn ihr euch meinen Quelltext mal angucken könntet, da ich bis jetzt auch nach dem lesen verschiedenster anderer Threads keine Lösung gefunden habe. Wie gesagt ich möchte einen Array (MyAdress) ordnen, der von mir erstellte Datentypen (TMyAdress) enthält. Das Ganze soll alphabetisch sortiert werden. Anhaltspunkt soll dabei TMyAdress.Name sein.

Hat nicht wirklich was mit dem Sortieren zu tun, sondern findet lediglich die Anzahl der belegten Array Felder raus:
Delphi-Quellcode:
function Anzahlfinden:integer;
var x:integer;
begin
x:=1;
While MyAdress[x].Name<>'Do x:=x+1;
Result:=x;
end;
Eigentlicher Sortier Vorgang! Es wird immer das kleinste (zweitkleinste, drittkleinste. usw.) gesucht und mit dem Ersten, Zweiten, Dritten usw. ausgetauscht. ich erhalte keinen Fehler beim Kompilieren, aber er sortiert es einfach nicht richtig:
Delphi-Quellcode:
procedure Arrayordnen;
var Anzahl:integer;
x,y:integer;
min:tmyadress;
minposition:integer;
begin
anzahl:=anzahlfinden;
for y:=1 to (Anzahl-1) Do
    begin
    For x:=y to (Anzahl-1) do
        if MyAdress[x].Name < MyAdress[x+1].Name
        Then
            begin
            Min:= MyAdress[x];
            MinPosition:= x;
            end
        else
            begin
            Min:= MyAdress[x+1];
            minPosition:=x+1;
            end;
    MyAdress[MinPosition]:=MyAdress[y];
    MyAdress[y]:=min;
    end;
end;
Ich programmier noch nicht lange und es wäre nett, wenn ihr mir helfen könntet!
Vielen Dank im Vorraus!

Gruß
Michael

Edit: Hier die Typen und globalen Variablen:
Type:
Delphi-Quellcode:
type
TMyAdress=record
    Name:String;
    Vorname:String;
    Strasse:String;
    PLZ:String;
    Ort:String;
    end;
Globale Variablen:
Delphi-Quellcode:
var
  Form1: TForm1;
  MyAdress:array[1..10] of TMyAdress;
  i:integer =1;
  Mit Zitat antworten Zitat