products/Sources/formale Sprachen/VDM/VDMPP/CashDispenserPP image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: similarity.inc.~27~   Sprache: Unknown

rahmenlose Ansicht.~41~ DruckansichtText {Text[155] SPS[165] Ada[194]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

//-------------------------------------------------------
//
//-------------------------------------------------------
function issimilar(L, R: String): boolean;
var
  vl, vr: String;
  res: boolean;
  //---------------------------------------------------------------
  function leadingzeroes(S: String): String;
  begin
    while (length(S) > 1) and (S[1] = '0') do
      S := midstr(S, 2, length(S) - 1);
    result := S
  end;
//---------------------------------------------------------------
  function trailingzeroes(S: String): String;
  var
    pp: integer;
  begin
    pp := pos(opt.r.decimalpoint, S);
    if pp > 0 then
      while (length(S) > pp) and (S[length(S)] = '0') do
        S := midstr(S, 1, length(S) - 1);
    if (length(S) >= pp) and (S[pp] = opt.r.decimalpoint) then
      S := midstr(S, 1, length(S) - 1);
    result := S
  end;
//---------------------------------------------------------------
  function isPrefix(S1, S2: String): boolean;
  begin
    if (length(S1) < 3) or (length(S1) > length(S2)) then
      result := false
    else
      result := MidStr(S2, 1, length(S1)) = S1
  end;
//---------------------------------------------------------------
  function isnumber(S: String): boolean;
  var
    i, d, ll: integer;
    res: boolean;
  begin
    res := true;
    if length(S) = 0 then
      res := false;
    for i := 1 to length(S) do
      res := res and charinset(S[i], ['0' .. '9', opt.r.decimalpoint, '+', '-',
        '$', '€']);
    d := pos(opt.r.decimalpoint, S);
    if d > 0 then begin
      ll := length(S);
      d := pos(opt.r.decimalpoint, midstr(S, D + 1, ll));
      res := res and (d <= 0)
    end;
    result := res;
  end;
//---------------------------------------------------------------

begin
  //
  res := false;
  vl := L;
  vr := R;
  //remove separators
  vl := StringReplace(vl, FDB, '', [rfReplaceAll]);
  vr := StringReplace(vr, FDB, '', [rfReplaceAll]);
  //
  if isnumber(vl) and isnumber(vr) then begin
    //
    if charinset(vl[1], ['-', '+']) then
      vl := midstr(vr, 2, length(vr));
    if charinset(vr[1], ['-', '+']) then
      vr := midstr(vr, 2, length(vr));
    //leading 0's
    vl := leadingzeroes(vl);
    vr := leadingzeroes(vr);
    //trailing 0's
    vl := trailingzeroes(vl);
    vr := trailingzeroes(vr);
    //
    res := vl = vr;
  end;
  //
  result := res;
end;

[ Verzeichnis aufwärts0.667unsichere Verbindung  ]