这几天不知道是不是人品出了问题,老是遇上一些小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(''''Software\Microsoft\Internet Explorer\PageSetup'''', 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;