Delphi7升级到Delphi2010总结 delphi 自动升级控件

Delphi7 升级到 Delphi 2010 总结

1字符串

>>string=unicodeString字母的处理要定义AnsiString了

>>PChar=PWidechar

>>str='普通汉字'str[1]='普',而不是str[1]+str[2]了

>>4字节的一个汉字,length=2,双字节的一个汉字,length=1

>>string和 shorstring 不能直接赋值了。需要类型转换。

2CharInSet

key in []要求替换为 CharInSet

3canvas.StretchRect

canvas.StretchRect多次画图,不能覆盖前一次画的图象,而是叠加在前一个图象上面。

临时处理:copyRect复制一个背景色过去,然后再画图

4 typerecord

可以使用property可能D7也有。

5webbrowser内容填充。使用流不好使了。汉字都变乱码了。用这个。

usesMSHTML,ActiveX,OleCtrls,SHDocVw;

procedureSetHtml2009(constWebBrowser: TWebBrowser; const Html: string);
var
htmDoc:IHTMLDocument2;
v:oleVariant;
begin
if not Assigned(WebBrowser.Document) then Exit;

try
htmDoc:=WebBrowser.Document as IHtmlDocument2;
v := VarArrayCreate([0,0], varVariant);
v[0]:=Html;
htmDoc.Write(PSafeArray(TVarData(v).VArray));
htmDoc.Close;
except
end;
end;

formCreate时,初始化webbrowser。若webbrowser是动态创建,创建之后初始化。代码如下:

var
v:oleVariant;
begin
//WebBrowser1:=TWebBrowser.Create(self.FOwnerForm);
//WebBrowser1.SetBounds(0,0,300,100);
//WebBrowser1.ParentWindow:=self.FOwnerForm.Handle;
v:='about:blank';//初始化 WebBrowser1
WebBrowser1.Navigate2(v);
end;

在initialization和finalization部分处理OLE初始化

initialization
OleInitialize(nil);
finalization
try
OleUninitialize;
except
end;

在用到webbrowser的地方,定义好需要显示的HTML字符串后,就可以调用函数setHtml2009显示。如

procedure TForm1.Button1Click(Sender:TObject);
var
str:string;
begin
Delphi7升级到Delphi2010总结 delphi 自动升级控件
str:='<html><head>dd</head><body>hereis</body></html>';
SetHtml2009(WebBrowser1,str);
end;

6 ord 和chr -------- 机内码和unicode-16的转化

ord('字')得到的unicode-16的值, chr(56932)能直接得到一个汉字了。

2009下,机内码和unicode-16的转化,可以不使用widechartoString等函数了。

//其中FC1 FC2 是机内码高字节和低字节,Funi是unicode-16编码
//根据机内码计算unicode编码
procedure SetUnicode;
var
xx:AnsiString;
xx2:string;
begin
xx:=AnsiChar(chr(FC1))+AnsiChar(chr(FC2)); //强制转换
xx2:=string(xx);//强制转换
self.Funi:=ord(xx2[1]);
end;


//根据unicode编码计算机内码, 其中procedure THanCode.SetFc12;
var
xx:AnsiString;
xx2:string;
begin
xx2:=chr(Funi);//2009 chr直接得到汉字 unicodestring
xx:=AnsiString(xx2); //强制转换
FC1:=ord(xx[1]);//按照单字节计算。
FC2:=ord(xx[2]);
end;

Key in['a'..'z','B','C']
这类代码最好替换成CharInSet(Key,['a'..'z','B','C'])不然会当作AnsiChar处理。

WideString
代码中的所有WideString都考虑替换成String,现在WideString只是为了与COM兼容而存在,且没有引用计数,性能低下

来自:http://hi.baidu.com/���Ե/blog/item/87f7efdb3efcd370d0164e30.html

  

爱华网本文地址 » http://www.413yy.cn/a/25101017/338958.html

更多阅读

delphi7 安装第三方控件 delphi7组件安装

第三方组件,就是由除Borland之外的程序员开发的供广大程序员用来开发新程序的组件。这些组件不在Delphi所有自带的组件包里,它们功能强大, 种类繁多,来自世界各地的程序员在不停地维护和升级他们的组件。有时候,你想实现一个特定功能,无奈

声明:《Delphi7升级到Delphi2010总结 delphi 自动升级控件》为网友愿无岁月可回头分享!如侵犯到您的合法权益请联系我们删除