unit uReferenciasUtils;

interface


{ Si ARef1 < ARef2 -> Result := -1
  Si ARef1 = ARef2 -> Result := 0
  Si ARef1 > ARef2 -> Result := 1 }

function CompararReferencias(const ARef1, ARef2 : String) : Integer;

implementation

uses
  JclAnsiStrings, cxVariants;

function CompararReferencias(const ARef1, ARef2 : String) : Integer;
var
  Aux1, Aux2 : String;
  AuxInt1, AuxInt2: Double;
  Rpl : Char;
begin
  Rpl := ' ';
  Aux1 := StrReplaceButChars(ARef1, AnsiDecDigits, Rpl);
  Aux1 := StrRemoveChars(Aux1, AnsiWhiteSpace);
  Aux2 := StrReplaceButChars(ARef2, AnsiDecDigits, Rpl);
  Aux2 := StrRemoveChars(Aux2, AnsiWhiteSpace);

  if StrIsDigit(Aux1) and StrIsDigit(Aux2) then
  begin
    AuxInt1 := StrToFloatSafe(Aux1);
    AuxInt2 := StrToFloatSafe(Aux2);
    Result := VarCompare(AuxInt1, AuxInt2)
  end
  else
    Result := VarCompare(Aux1, Aux2)
end;

end.
