Hallo,
wir machen gerade im Leistungskurs Informatik eine Array-Klasse. Sprich eine Klasse mit allen möglichen Funktionen, die ein Array gebrauchen kann.
Ich habe das in meinen Augen etwas eleganter gelöst.
Delphi-Quellcode:
unit uMyArray;
interface
type
MyType = Integer;
TMyArray =
class(TObject)
private
MyArr:
Array of MyType;
MyPointer: Integer;
public
procedure Initialize;
function GetPointer: Integer;
function GetRow(Row: Integer): MyType;
procedure SetRow(Value: MyType);
procedure DelRow(Row: Integer);
function GetFile(Path:
String): Boolean;
function SetFile(Path:
String): Boolean;
procedure Swap(Pos1, Pos2: Integer);
procedure SortSlow(Column: Integer; Asc: Boolean);
procedure SortQuick(Column: Integer; Asc: Boolean);
function Search(Keyword:
String): Integer;
end;
Da wir noch nicht wissen von welchem Typ das DYNAMISCHE Array sein soll, habe ich den Typen "MyType" erstellt, habe ihn von Vorne herein auf Integer gesetzt. Vorteil: Wenn ich die mal auf String änder, brauche ich bei einigen Funktionen die Typen der Rückgabewerte (aus dem Array) nicht auch ändern, da sie ebenfalls vom Typen MyType sind.
Jetzt möchte ich das Array initialisieren, sprich löschen. Aber woher soll das Programm vorher wissen, welcher Typ es ist?
Ich könnte es so machen:
Delphi-Quellcode:
If MyType = Integer then
For I := 1 to ... do
Arr[I] := 0;
If MyType = String then
For I := 1 to ... do
Arr[I] := '';
Aber ich möchte das gerne ohne If-Konstrukt machen, sondern mit einer eleganteren Lösung. Ich hoffe ihr wisst was ich meine. Könnte ich vielleicht machen:
Delphi-Quellcode:
For I := 1 to ... do
Arr[I] := Nil;
Das sieht aber ein bisschen komisch aus.
Hat jemand eine Idee?