Der Intervalltest ist die Grundlage für die Konflikterkennung. Ein Konflikt wird durch das Ergebnis True signalisiert und das Überschneidungsintervall wird durch min3 und max3 angegeben.
Hier noch eine Vereinfachung - auch ungetestet:
Delphi-Quellcode:
function IntersectRange(min1, max1, min2, max2: Int64; var min3, max3: Int64): Boolean;
begin
Result := not ( (max1 < min2) or (max2 < min1) );
if Result then
begin
min3 := {Math.}Max(min1, min2);
max3 := {Math.}Min(max1, max2);
end;
end;
Im vorliegenden Anwendungsfall würde ich Konfliktfreiheit als Annahme voraussetzen. Wenn man die Adressbereiche aufsteigend ordnet und für jeden Bereich prüft, dass max[n] < min[n+1], dann hat man den Nachweis. Der Intervalltest wird nur benötigt, wenn man die Überdeckung der Intervalle angeben will.