网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Delphi中创建MIDAS服务器并注册(.
.在文件夹添加菜单删除临时文件.
.从delphi6,kylix看borland的未来.
.利用剪贴板实现高速导出数据到Ex.
.数据表的二维表存储及定位.
.讲述如何开发一个控件,很有价值.
.只允许建立一次子窗体的MDI程序.
.Delphi编程规范1.0.0.0.
.在delphi中如何限制鼠标的移动区.
.最好的数据导出组件SMExport.
.隐藏我的电脑中驱动器.
.DLL文件中Form的使用.
.Delphi与Excel的亲密接触.
.设计模式、用Delphi实现---->Str.
.开发设计图文并茂的报表的组件.
.Delphi中获取打印机设备名和端口.
.项目迭代开发手记--文件分割存储.
.通用Delphi数据库输入控件DBPane.
.增强MIDAS的安全性.
.Delphi+MapX5中使用自定义字体符.

TEmbeddedwb的一个小bug

发表日期:2006-2-4


 这几天不知道是不是人品出了问题,老是遇上一些小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;

    这个函数是在注册表中去取IE的打印设置,打开注册表一看,果然没有'margin_left'这四个项,加上这四个字符串值,并赋上初值0。打开窗口。OK。高兴之余也不禁感慨,这个xp的操作系统装上以后还灭怎么摧残过,照理这四个键不是偶搞掉的,也就说系统装上就没有的,到底是microsoft人品有问题还是偶人品有问题已经不重要了,可是偶现在才明白,原来大师的程序也有bug啊,为什么不用StrToFloatDef函数哩?
    今天在公司机器上一看,果然有这四个键,每个值为0.75。

    小bug一个,仅作记录,以供有同样情形的同志参考。

上一篇:一個可以顯示CheckBox或RadioButtons的StringGrid類. 人气:4199
下一篇:FAQ:如何访问WebBrowser的滚动条 人气:5403
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐