程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> TSpinEdit的漏洞

TSpinEdit的漏洞

編輯:Delphi

最近在使用Samples頁中的SpinEdit控件時,發現SpinEdit的最大值(MaxValue)和最小值(MinValue)的處理有漏洞。當最大值和最小值相等且不為零時,設置形同虛設;當最大值小於最小值時,SpinEdit的取值為最大值和最小值。查看Spin.pas時發現,SpinEdit的CheckValue函數如下:
function TSpinEdit.CheckValue (NewValue: LongInt): LongInt;
begin
  Result := NewValue;
  if (FMaxValue <> FMinValue) then
  begin
    if NewValue < FMinValue then
      Result := FMinValue
    else if NewValue > FMaxValue then
      Result := FMaxValue;
  end;
end;
可見沒有對MaxValue = MinValue 且MinValue <> 0 及 MaxValue < MinValue 進行處理。所以在使用SpinEdit控件時應該在程序中對上述兩種情況進行必要的處理。

我在發現這個問題的之前花費了不少時間調試程序,以為是代碼的問題。結果發現是個BUG。這個問題可能早就有人發現並提出來了,只不過我沒有看到而已。不過我還是把它貼出來,希望其他朋友不要在這個問題上浪費時間。呵呵,其實私底下還是想賺分的:)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved