Delphi-Quellcode:
var
myArray : Array of Integer;
begin
myList := TList<integer>.Create;
setLength(myArray,0);
// Anfügen eines Wertes
// 2. An ein Array
SetLength(myArray, Length(myArray) + 1);
myArray [Length(myArray)] := Value;
@Dejan Vu:
Besser so, sonst schepperts.
Delphi-Quellcode:
SetLength(myArray, Length(myArray) + 1);
myArray [High(myArray)] := Value;
@rebellxsky:
Ein kleines Beispiel Projekt:
Ins Edit gibst du eine Zahl ein, mit Return wird die Zahl in die Liste übernommen.
Mit Escape wird die Liste gelöscht (Das Edit muß hierbei den Fokus haben).
Die Eingabe und Ausgabe wird im ebNumberKeyPress gesteuert.
Ich vermute, mit "Sortieren mit direktem Auswahlort" ist ein sog. SelectionSort gemeint.
Eine Übersicht mit diversen Sortierverfahren findest du hier
http://www.delphipraxis.net/72182-sortieren.html
Delphi-Quellcode:
unit AS_Main;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls;
type
TNumbers=Array
of Integer;
TMain =
class(TForm)
ebNumber: TEdit;
lbUnsorted: TListBox;
lbSorted: TListBox;
lblUnsorted: TLabel;
lblSorted: TLabel;
procedure ebNumberKeyPress(Sender: TObject;
var Key: Char);
private
fInput:TNumbers;
fOutput:TNumbers;
PROCEDURE Sort(List:TNumbers);
PROCEDURE TransferToListBox(LB:TListBox; List:TNumbers);
public
{ Public-Deklarationen }
end;
var
Main: TMain;
implementation
{$R *.dfm}
procedure TMain.ebNumberKeyPress(Sender: TObject;
var Key: Char);
begin
case Ord(Key)
of
VK_Escape:
begin
fInput:=Nil;
fOutput:=Nil;
lbUnsorted.Clear;
lbSorted.Clear;
ebNumber.Text:='
';
end;
VK_Return:
if ebNumber.Text<>'
'
then begin
SetLength(fInput,Length(fInput)+1);
fInput[High(fInput)]:=StrToInt(ebNumber.Text);
fOutput:=Copy(fInput);
Sort(fOutput);
TransferToListBox(lbUnsorted,fInput);
TransferToListBox(lbSorted,fOutput);
ebNumber.Text:='
';
end;
VK_Back,Ord('
0')..Ord('
9'):
Exit;
else
Key:=#0;
end;
end;
PROCEDURE TMain.Sort(List:TNumbers);
var I,J,K,H:Integer;
begin
for I:=0
to High(List)-1
do begin
K:=I;
for J:=I+1
to High(List)
do
if List[J]<List[K]
then K:=J;
H:=List[I];
List[I]:=List[K];
List[K]:=H;
end;
end;
PROCEDURE TMain.TransferToListBox(LB:TListBox; List:TNumbers);
var I:Integer;
begin
LB.Clear;
LB.Items.BeginUpdate;
for I:=0
to High(List)
do
LB.Items.Add(IntToStr(List[I]));
LB.Items.EndUpdate;
end;
end.