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 总结的更多相关文章

  1. 从Delphi 7升级到Delphi XE

    Delphi 7和XE中间有好几个版本号,可都不太流行,一是由于Delphi有些边缘化,二是7在XP环境下是近乎完美的版本号.市场上关于delphi的书越来越少,提供从7升级到XE介绍的资料差点儿没用 ...

  2. 我的 Delphi 学习之路 —— Delphi 的认识

    标题:我的 Delphi 学习之路 -- Delphi 的认识 作者:断桥烟雨旧人伤 1. 什么是 Delphi Delphi 是 Windows 平台下著名的快速应用程序开发工具(Rapid App ...

  3. Delphi自定义消息应用及delphi托盘实现

    Delphi自定义消息应用及delphi托盘实现interfaceuses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...

  4. 我的 Delphi 学习之路 —— Delphi 助手的安装

    标题:我的 Delphi 学习之路 -- Delphi 助手的安装 作者:断桥烟雨旧人伤 Delphi 助手的安装 CnWizards 类似于 VS 中的番茄助手,在编写 Delphi 代码时帮助极大 ...

  5. 我的 Delphi 学习之路 —— Delphi 的安装

    标题:我的 Delphi 学习之路 -- Delphi 的安装 作者:断桥烟雨旧人伤 1. Delphi 版本的选择 Delphi 版本众多,我该选择哪一个,这确实是个问题,自从 Borland 公司 ...

  6. 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 ...

  7. Delphi 7以来的Delphi 2009测试版新语法特性

    我晕,Delphi 7 以后增加了这么多有用的语法,我都不知道.真是越学越觉得自己浅薄,自己所作的Delphi项目所用的知识还不够Delphi知识储备体系的十分之一,更别说Delphi还在继续发展. ...

  8. Delphi XE2 升级项目编译ralease版本,无法添加UAC解决方法

    我今天把一个原来是Delphi2007的工程升级到了Delphi XE2,在编译ralease版本时候,发现无法添加UAC,我觉得可能是升级的原因,随后我用XE2新建了一个工程,但是在编译raleas ...

  9. Delphi 7升级到XE2的字符串问题

    原来的Delphi中有两种字符串:AnsiString和WideString.默认的string即AnsiString.而在Delphi 2009中,新增加了一种UnicodeString.为什么不沿 ...

随机推荐

  1. HDU 5881 Tea

    Tea Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  2. 怎样在 Ubuntu 中修改默认程序

    导读 作为一个新手,你需要知道如何在 Ubuntu 中修改任何默认程序,这也是我今天在这篇指南中所要讲的. 对于我来说,安装 VLC 多媒体播放器是安装完 Ubuntu 16.04 该做的事中最先做的 ...

  3. Object类介绍

    一.Object类介绍

  4. java web 学习十三(使用session防止表单重复提交)

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  5. 类装载器ClassLoader

    类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导入Class文件: [2.]链接 ...

  6. python中List的sort方法的用法

    python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东 ...

  7. jedis连接池详解(Redis)

    转自:http://tianxingzhe.blog.51cto.com/3390077/1684306 原子性(atomicity): 一个事务是一个不可分割的最小工作单位,事务中包括的诸操作要么都 ...

  8. Codeforces Round #364 (Div.2) C:They Are Everywhere(双指针/尺取法)

    题目链接: http://codeforces.com/contest/701/problem/C 题意: 给出一个长度为n的字符串,要我们找出最小的子字符串包含所有的不同字符. 分析: 1.尺取法, ...

  9. 转】Maven学习总结(七)——eclipse中使用Maven创建Web项目

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4054814.html 感谢! 一.创建Web项目 1.1 选择建立Maven Project 选择File -& ...

  10. HIVE删除表数据

    HIVE只有INSERT,没有UPDATE跟DELETE,所以通过其他的语句产生DETELE效果. 在HDFS上或者本地服务器上新建空的文件XXXXX, 然后执行: LOAD DATA LOCAL I ...