Delphi 7 升级到 Delphi 2010 总结
1 字符串
>>string =unicodeString 字母的处理要定义AnsiString了
>>PChar =PWidechar
>>str='普通汉字' str[1]='普',而不是str[1]+str[2]了
>>4字节的一个汉字,length=2,双字节的一个汉字,length=1
>>string 和 shorstring 不能直接赋值了。需要类型转换。
2 CharInSet
key in [ ] 要求替换为 CharInSet
3 canvas.StretchRect
canvas.StretchRect 多次画图,不能覆盖前一次画的图象,而是叠加在前一个图象上面。
临时处理:copyRect复制一个背景色过去,然后再画图
4 type record
可以使用property 可能D7也有。
5 webbrowser内容填充。使用流不好使了。汉字都变乱码了。用这个。
uses MSHTML,ActiveX,OleCtrls, SHDocVw;
procedure SetHtml2009(const WebBrowser: 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
str:='<html><head>dd</head><body>here
is</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兼容而存在,且没有引用计数,性能低下
Delphi 7 升级到 Delphi 2010 总结的更多相关文章
- 从Delphi 7升级到Delphi XE
Delphi 7和XE中间有好几个版本号,可都不太流行,一是由于Delphi有些边缘化,二是7在XP环境下是近乎完美的版本号.市场上关于delphi的书越来越少,提供从7升级到XE介绍的资料差点儿没用 ...
- 我的 Delphi 学习之路 —— Delphi 的认识
标题:我的 Delphi 学习之路 -- Delphi 的认识 作者:断桥烟雨旧人伤 1. 什么是 Delphi Delphi 是 Windows 平台下著名的快速应用程序开发工具(Rapid App ...
- Delphi自定义消息应用及delphi托盘实现
Delphi自定义消息应用及delphi托盘实现interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...
- 我的 Delphi 学习之路 —— Delphi 助手的安装
标题:我的 Delphi 学习之路 -- Delphi 助手的安装 作者:断桥烟雨旧人伤 Delphi 助手的安装 CnWizards 类似于 VS 中的番茄助手,在编写 Delphi 代码时帮助极大 ...
- 我的 Delphi 学习之路 —— Delphi 的安装
标题:我的 Delphi 学习之路 -- Delphi 的安装 作者:断桥烟雨旧人伤 1. Delphi 版本的选择 Delphi 版本众多,我该选择哪一个,这确实是个问题,自从 Borland 公司 ...
- Delphi for Android (aka Delphi XE5 aka RAD Studio XE5) has appeared
Delphi for Android (aka Delphi XE5 aka RAD Studio XE5) has appeared Blimey, that took me by surpri ...
- Delphi 7以来的Delphi 2009测试版新语法特性
我晕,Delphi 7 以后增加了这么多有用的语法,我都不知道.真是越学越觉得自己浅薄,自己所作的Delphi项目所用的知识还不够Delphi知识储备体系的十分之一,更别说Delphi还在继续发展. ...
- Delphi XE2 升级项目编译ralease版本,无法添加UAC解决方法
我今天把一个原来是Delphi2007的工程升级到了Delphi XE2,在编译ralease版本时候,发现无法添加UAC,我觉得可能是升级的原因,随后我用XE2新建了一个工程,但是在编译raleas ...
- Delphi 7升级到XE2的字符串问题
原来的Delphi中有两种字符串:AnsiString和WideString.默认的string即AnsiString.而在Delphi 2009中,新增加了一种UnicodeString.为什么不沿 ...
随机推荐
- 基于Dubbo框架构建分布式服务
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- 【LR】版本问题
前台信息工作笔记本系统是: widows7 64位操作系统 (1)loadrunner11 软件 --兼容性问题的解决与环境配置要求 地址:http://bgwan.blog.163.com/blog ...
- web自动化框架之四测试报告的搭建
现状: 看过前面的文章,楼主用的是python,所以在搭建测试报告这块的时候使用的是unittest+htmlTestRunner:然后发现生成出来的报告,总是有那么不完美的地方,比如想增加图片,比如 ...
- Cadence关闭StartPage的方法
Cadence 16.5开始,打开原理图工具 Orcad Capture 时,总是会弹出startpage 页面,关闭它的方法: 解决方法如下: (1) View---Toolbar----Comma ...
- NGUI学习笔记-Label
属性说明 Overflow: ShrinkContent : 如果文本超出文本框宽度,会自动缩小文本size,使其显示完整 ClampContent : 文本大小固定,超出文本框的部分不会显示,也不会 ...
- LeetCode题解——4Sum
题目: 给定一个数组,找出其中和为0的所有4个数组合,每个组合内的4个数非递降. 解法: ①先排序,然后利用4个指针,前两个遍历,后两个在第二个指针之后的部分里夹逼,时间O(N3). ②或者利用一个哈 ...
- Motan学习开篇
你已经走到这里了,后面只要耐心的走下去就行了. --佚名 入职新公司以后,公司使用dubbo框架,简单的照葫芦画瓢之后,也算是入手了,但是其中内部的实现的机制一概不懂.我单纯的有种好奇心,觉得每个 ...
- bzoj 1419 Red is good(期望DP)
[题意] R红B蓝,选红得1选蓝失1,问最优状态下的期望得分. [思路] 设f[i][j]为i个Rj个B时的最优期望得分,则有转移式为: f[i][j]=max{ 0,(f[i-1][j]+1)*(i ...
- XNA Game Studio4.0 Programming 随便读,随便记。
一.精灵和2D图形 1.什么是2D ? 2D可以理解为 two-Dimentionanl , 2-dimentional 的缩写. 意就是两维的,比如 数学中的 直角坐标系 所能描述的就是一个2D的 ...
- SVM原理简介
本文只是简单介绍一下SVM的理论框架,想要详细了解当中细节问题处理可以参看后续章节或者网上各种详细资料.推荐Andrew Ng的斯坦福大学机器学习课程. 年代中期发展起来的基于统计学习理论的一种机器学 ...