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

TEmbeddedwb的一個小bug

編輯:Delphi
 這幾天不知道是不是人品出了問題,老是遇上一些小bug。
      昨天在公司裡寫了一個有浏覽網頁代碼的小程序,圖方便,使用的是TEmbeddedwb控件,這個控件在Delphi自帶的TWebBrowser控件上又提供了一些選項和方法。
      拿回家以後打開這個工程,在打開浏覽頁面窗口的時候卻出錯了:“Error Creating Form:'' is not a valid floating point value”。這個窗口上沒有其他控件,就只有TEmbeddedWB控件,看情況應該是打開窗口時裝載該控件時出的錯,而錯誤應該是發生在作字符轉換到float型時出現的。
      新建一個工程,放上一個TEmbeddedWB控件,滅有問題啊。關掉後再打開,問題重現了。
      打開EmbeddedWB.pas單元,首先查找StrToFloat函數,呵,還好,只有兩個地方用到,一看都是在GetPrintValues函數用的,函數內容如下:
  procedure TembeddedWB.GetPrintValues;
  var
    S: string;
    regWinRegistry: TRegistry;

    function ReadMargin(key: string): Real;
    begin
      S := RegwinRegistry.ReadString(key);
      S := Stringreplace(S, ' ', '', [rfReplaceAll]);
      if DecimalSeparator <> '.' then
        S := Stringreplace(S, '.', DecimalSeparator, []);
      if Printoptions.Measure = mMetric then
        result := StrtoFloat(S) * InchToMetric else
        result := StrtoFloat(S);
    end;

  begin
    regWinRegistry := TRegistry.Create;
    try
      with regWinRegistry do begin
        RootKey := HKEY_CURRENT_USER;
        if OpenKey('SoftwareMicrosoftInternet ExplorerPageSetup', False) then
        begin
          PrintOptions.Header := Readstring('header');
          PrintOptions.Footer := ReadString('footer');
          PrintOptions.Margins.left := ReadMargin('margin_left');
          PrintOptions.Margins.right := ReadMargin('margin_right');
          PrintOptions.Margins.top := ReadMargin('margin_top');
          PrintOptions.Margins.bottom := ReadMargin('margin_bottom');
        end;
      end;
    finally
      regWinRegistry.Free;
    end;
  end;
  
      這個函數是在注冊表中去取IE的打印設置,打開注冊表一看,果然沒有'margin_left'這四個項,加上這四個字符串值,並賦上初值0。打開窗口。OK。高興之余也不禁感慨,這個xp的操作系統裝上以後還滅怎麼摧殘過,照理這四個鍵不是偶搞掉的,也就說系統裝上就沒有的,到底是microsoft人品有問題還是偶人品有問題已經不重要了,可是偶現在才明白,原來大師的程序也有bug啊,為什麼不用StrToFloatDef函數哩?
      今天在公司機器上一看,果然有這四個鍵,每個值為0.75。
  
      小bug一個,僅作記錄,以供有同樣情形的同志參考

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