unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TMeinFeld = array of integer; // Das array wird als Typ MeinFeld eingeführt, ohne genaue Aussage über
  TForm1 = class(TForm)         // seine Größe zu machen (= dynamisches Array).
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  test:TMeinFeld; //Das array "test" wird als Instanz(= Beispiel) des Typs MeinFeld erzeugt.

implementation

{$R *.DFM}

procedure fuellen(var feld:TMeinFeld; n:integer);   // Dies ist eine allgemeine Prozedur zum Füllen
var i:integer;                                      // von arrays. Als Variable muss der Name des zu füllenden 
begin                                               // arrays abgegeben werden. Über n kann ich angeben, wie 
setlength(feld,n);                                  // groß das array sein soll.
randomize;
for i:=0 to n-1 do
feld[i]:=random(100);
end;

procedure sortieren( var feld:TMeinFeld; n:integer); // Die entsprechende allgemeine Prozedur zum
var i,j,buffer:integer;                              // Sortieren eines Arrays. Wieder müssen die
begin                                                // Parameter Name und Größe angegeben werden.
for j:=0 to n-1 do begin
for i:=0 to n-1 do begin
if feld[i]>feld[i+1] then begin
buffer:=feld[i];
feld[i]:=feld[i+1];
feld[i+1]:=buffer;
end;
end;
end;
end;

procedure ausgeben( var feld: TMeinFeld; n:integer; Ausgabe:TMemo); // Allgemeine Prozedur zur Ausgabe
var i:integer;                                                      // eines arrays. Hier muss zusätzlich
zeile:string;                                                       // noch der Name des Memos angegeben
begin                                                               // werden.
for i:=0 to n-1 do
zeile:=zeile+'  '+inttostr(feld[i]);

Ausgabe.lines.add(zeile);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
fuellen(test,10); // Aufruf der Prozedur "fuellen" im Programm. Dahinter die tatsächlichen
end;              // Parameter: Name des arrays(test) und Größe n (10 Stellen).

procedure TForm1.Button2Click(Sender: TObject);

begin
ausgeben(test,10, memo1);// Aufruf der Prozedur "ausgeben" im Programm. Dahinter die tatsächlichen
end;                     // Parameter: Name des arrays, Größe, Name des Memos.

procedure TForm1.Button3Click(Sender: TObject);
begin
sortieren(test,10);// Aufruf der Prozedur "sortieren" im Programm. Dahinter die tatsächlichen
end;               // Parameter: Name des arrays, Größe.

end.
