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;