Ver código fonte

清单汇总,识别桩号调整

MaiXinRong 7 anos atrás
pai
commit
fcde1bf230
1 arquivos alterados com 26 adições e 8 exclusões
  1. 26 8
      Units/UtilMethods.pas

+ 26 - 8
Units/UtilMethods.pas

@@ -644,15 +644,33 @@ function CheckPeg(const AStr: string): Boolean;
       Result := Pos(AStrSpare, AName);
   end;
 
-var
-  iPosK, iPosPlus: Integer;
-  fNum: Double;
+  function CheckPlusPeg(const AStr: string): Boolean;
+  var
+    iPosK, iPosPlus: Integer;
+    fNum: Double;
+  begin
+    Result := False;
+    iPosK := GetPosition(AStr, 'K', 'k');
+    iPosPlus := GetPosition(AStr, '+', '£«');
+    if (iPosK = 0) or (iPosPlus = 0) or (iPosPlus < iPosK) then Exit;
+    Result := TryStrToFloat(Copy(AStr, iPosK + 1, iPosPlus - iPosK - 1), fNum) and (fNum > 0);
+  end;
+
+  // K0-134.5 pass; k-2-134.5 fail;
+  function CheckMinusPeg(const AStr: string): Boolean;
+  var
+    iPosK, iPosMinus: Integer;
+    fNum: Double;
+  begin
+    Result := False;
+    iPosK := GetPosition(AStr, 'K', 'k');
+    iPosMinus := GetPosition(AStr, '-', '£­');
+    if (iPosK = 0) or (iPosMinus = 0) or (iPosMinus < iPosK) then Exit;
+    Result := TryStrToFloat(Copy(AStr, iPosK + 1, iPosMinus - iPosK - 1), fNum) and (fNum < 0);
+  end;
+
 begin
-  Result := False;
-  iPosK := GetPosition(AStr, 'K', 'k');
-  iPosPlus := GetPosition(AStr, '+', '£«');
-  if (iPosK = 0) or (iPosPlus = 0) or (iPosPlus < iPosK) then Exit;
-  Result := TryStrToFloat(Copy(AStr, iPosK + 1, iPosPlus - iPosK - 1), fNum);
+  Result := CheckPlusPeg(AStr) or CheckMinusPeg(AStr);
 end;
 
 function CheckValidPassword(APassword: string): Boolean;