Hallo zusammen,
ich habe eine Steuerung, welche eigentlich seit Jahren zuverlässig läuft.
Es müssen zwei dynamische und sich ändernde 3-dimensonale Arrays permanent miteinander verglichen werden. Also jeder Wert des einen Array mit jedem Wert des anderen. Und dies ohne unnötigen Zeitverlust.
Die Routine muss true zurückgeben, wenn ein Wert des einen Arrays im anderen vorhanden ist wärend eine Bedingung nicht erfüllt ist.
Meine derzeitige Prüfroutine welche in einem separaten Thread läuft sieht so aus:
Delphi-Quellcode:
function RaiseAlert(): Boolean;
var
liMapX,liMapY,liMapZ,liChaX,liChaY,liChaZ: Integer;
label
GotoLabel;
begin
GotoLabel:
while (ThrottleLoop) and not (Terminated) do
begin
for liMapX := 0 to Length(Map) - 1 do
begin
for liMapY := 0 to Length(Map[liMapX]) - 1 do
begin
for liMapZ := 0 to Length(Map[liMapX][liMapY]) - 1 do
begin
for liChaX := 0 to Length(Characteristics) - 1 do
begin
for liChaY := 0 to Length(Characteristics[liChaX]) - 1 do
begin
for liChaZ := 0 to Length(Characteristics[liChaX][liChaY]) - 1 do
begin
if Characteristics[liChaX][liChaY][liChaZ] = Map[liMapX][liMapY][liMapZ] then
begin
if (InjectionPass) then
begin
InjectionPass := false;
Goto GotoLabel;
end
else
begin
Result := true;
Exit;
end
end;
end;
end;
end;
end;
end;
end;
RenewData(Map);
end;
Result := false;
end;
Geht das noch schneller?
Ich bin mir sicher, das einer der Power-User hier dies bestimmt kann.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.