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.为什么不沿 ...
随机推荐
- SQL SERVER 实现分组合并实现列数据拼接
需求场景: SQL SERVER 中组织的数据结构是一个层级关系,现在需要抓出每个组织节点以上的全部组织信息,数据示例如下: ADOrg_ID--------------ParentID------- ...
- ISAPI在IIS7上的配置
主要介绍ISAPI的作用.ISAPI在IIS7上的配置.开发ISAPI的基本内容及使用VS 2008配置ISAPI DLL开发项目. 一.ISAPI介绍 缩写词=Internet Server App ...
- Delphi TRichEdit加载word内容
procedure TForm1.btn6Click(Sender: TObject);var WordApp: Variant; //声明一个word对象beginWordApp := Create ...
- xcode 怎么样在发布release版本的时候 不输出log
我们平时在开发应用的时候,经常会用到 NSLog 来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理. 发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统 ...
- IOCP模型
IOCP http://blog.csdn.net/zhongguoren666/article/details/7386592 Winsock IO模型之IOCP模型 http://blog.csd ...
- 【LeetCode 99】Recover Binary Search Tree
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- web自动化框架之四测试报告的搭建
现状: 看过前面的文章,楼主用的是python,所以在搭建测试报告这块的时候使用的是unittest+htmlTestRunner:然后发现生成出来的报告,总是有那么不完美的地方,比如想增加图片,比如 ...
- 提高Web页面性能的技巧
现在动辄几兆大小的页面加载量,让性能优化成了不可避免的热门话题.WEB 应用越流畅,用户体验就会越好,继而带来更多的访问量.这也就是说,我们应该反省一下那些过度美化的 CSS3 动画和多重操作的 DO ...
- 【九度OJ】题目1434贪心算法
题目 本题的贪心算法策略需要深入思考一下 看到题目,最初没有理解题目的要求:看尽量多的完整的节目.尽量多是指数量多,自己理解成观看的时间最长.这样想其实简化了这道题. 正确理解题意后,首先想到的想法是 ...
- nodejs 5.2.0文档自翻译——Path模块
模块方法概览 Path path.basename(p[, ext]) path.delimiter path.dirname(p) path.extname(p) path.format(pathO ...