Dein Fehler ist ganz einfach: Die Deklaration der Prozedur Sortieren enthält einen 'Call by Value' Parameter, nämlich die Liste. 'Call by Value' bedeutet, das der gesamte Wert übergeben wird, quasi eine Kopie. Diese Kopie wird sortiert, und ... weggeworfen.
Du benötigst ein 'Call by Reference', denn Du willst die Liste im Original übergeben. Diese Liste ist ja irgendwo im Speicher (wo, ist egal). Du übergibst also die Referenz an die Sortierfunktion. Pascal / Delphi ist hier sehr freundlich. Alles, was Du tun musst, ist die Deklaration so zu ändern:
Delphi-Quelltext
1:
| procedure sortieren(Var Liste: TNamensliste); |
Das 'Var' deklariert den formalen Parameter als Referenz. Wenn du nun die Routine aufrufst, z.B. so:
Delphi-Quelltext
1: 2: 3: 4: 5:
| Var a : TNamensListe; ... Sortieren (a); ... |
dann ist 'a'
identisch mit der 'Liste' innerhalb der Prozedur.
Na denn, dann. Bis dann, denn.