Vorschlag 1:
Delphi-Quellcode:
const
coBaseX = -339;
coBaseY = -718;
function IsUp(y: integer): boolean;
begin
result := ( y > coBaseY );
end;
function IsDown(y: integer): boolean;
begin
result := ( y < coBaseY );
end;
function IsLeft(x: integer): boolean;
begin
result := ( x < coBaseX );
end;
function IsRight(x: integer): boolean;
begin
result := ( x > coBaseX );
end;
begin
if IsUp(y) then
begin
if IsLeft(x) then
result := UpLeft
else if IsRight(x) then
result := UpRight
else
result := Up;
end
else if IsDown(y) then
begin
if IsLeft(x) then
result := DownLeft
else if IsRight(x) then
result := DownRight
else
result := Down;
end
else if IsLeft(x) then
result := Left
else if IsRight(x) then
result := Right
else
result := Nothing
end;
Vorschlag 2:
Delphi-Quellcode:
begin
if ( y > -718 ) then
begin
if ( x < -339 ) then
result := UpLeft
else if ( x > -339 ) then
result := UpRight
else
result := Up;
end
else if ( y < -718 ) then
begin
if ( x < -339 ) then
result := DownLeft
else if ( x > -339 ) then
result := DownRight
else
result := Down;
end
else if ( x < -339 ) then
result := Left
else if ( x > -339 ) then
result := Right
else
result := Nothing
end;
Wieso aus dem Speicher entfernt? Wenn es Variablen innerhalb der Klassendeklaration sind, dann gibt es den Speicher über die Lebzeit der jeweiligen Instanz. Ist eine globale Variable, dann über Lebzeit der App. Ist es eine lokale Variable über die Dauer der Ausführung der jeweiligen Routine.
Aber wieso überhaupt die Frage? Ich kann dir versichern, der Delphi Speichermanager gibt nicht freiwillig Speicher den er nicht mehr benötigt an Windows zurück.