Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Erkennen von Bereichskonflikten bei doppelten Adressen

  Alt 14. Apr 2008, 20:40
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.
  Mit Zitat antworten Zitat