导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2010/3/18 17:05:44
标题:
lazarus 的 Label 不显示“德”字了
浏览:3080
加入我的收藏
楼主:
lazarus 的 Label 不显示“德”字了,变成 “??”,而按钮等等都可以显示。 版本 0.9.29 2010-03-03 编译到 WinCE,所有 Label 和 Image 都自己走到左上角了,乱套了。 现在就去下载今日的最新版。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
2010/3/18 18:53:30
1楼:
是个好消息,就是编译出来的东东大了点,wince上太耗内存了。一启动就是几兆的内存,有点吓人哇。
----------------------------------------------
没有做不到,只有想不到。 bolg:http://hi.baidu.com/lobtao Email:lobtao@qq.com QQ:369687916
作者:
2010/3/18 23:38:14
2楼:
有什么好消息呢? lazarus 现在就像出版日报那样,每24小时出一个新版,是世界上更新最快,最频密的软件,世界上也没那个软件比得上它了。 我下载今日的新版,结果没变,“道德”就变成“道?”“德国”反而正常。 按照我的研究精神,什么字体,编码都搞过,怎么搞都搞不来?连 TLabel 的代码都研究过了,而且在 WindowsXP 和 WinCE 里面效果都是一样,没什么好搞了,唯有自己去Paint喽。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
2010/3/19 9:47:48
3楼:
LZ lazarus 新版的在WINCE上是会错位. 我后来又换回旧的,就没问题了. 另外lazarus不显示'德'字,南岛就是传说中的缺德不成?
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
2010/3/19 10:42:17
4楼:
SL:=TStringList.Create; SL.LoadFromFile(***); S:=SL[I];//这里如果想 S 能取出中文,必须声明为 WideString,String和AnsiString取出的都是????? T:='汉字'; PaintBox1.Canvas.TextOut(X,Y,T); //这里 T 必须声明为 AnsiString,String 和 WideString 都会显示为???? 问题就来了 PaintBox1.Canvas.TextOut(X,Y,S);//S 无论是String,AnsiString,WideString统统都显示????。 如前面所说的,什么字体,编码,源代码都研究过,用 API 也是一样,没救了,难道要改写 lazarus 编译器?以我的水平,我放弃了。 现在觉得 lazarus 基本是向着垃圾方向狂奔去了。 不知道楼上老大用的是什么版本? lazarus 在 WinCE 占的内存不算大,以昨日的版本为例,在实机上面测试,纯窗体占内存 27K,虽然没几兆那么夸张,但是按性价比的思维,27K 的基本消耗确实大。文件更夸张,2M,其它语言编的 CE 程序,文件只要 6K,已经做了很多功能,2M 还是纯代码,没图片的,绝对是一个巨型软件了。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
loc (EvilIsNear)
★☆☆☆☆
-
普通会员
2010/3/19 11:35:19
5楼:
kinneg 甘愿成为objected pascal 社区的小白鼠,此敢于牺牲的精神实在是值得可歌可颂,顶礼膜拜 :)
----------------------------------------------
http://hi.baidu.com/focushine/home
作者:
2010/3/19 12:55:22
6楼:
可歌可泣,不求实用,只求折腾。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
2010/3/19 14:15:53
7楼:
lazarus 的源代码现在都是用UTF8. 用它的KCL函数画文字没问题.但是如果要是调API,在WINCE下就必须转一次
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
2010/3/19 14:24:47
7楼:
安装了去年的旧版本,结果 Label 可以显示“道德”了。 但是 SL:=TStringList.Create; SL.LoadFromFile(***); S:=SL[I];//中文不正确。 不过,终于研究出来,文件要保存为 UTF-8 格式!用记事本编辑之后,不要保存,而是另存为UTF-8格式,LoadFromFile就正确了。 但这和新版的 Label 不能显示“道德”的德字是无关,也无法给Caption指定文本格式的。 而且旧版是正常,不是人品问题,不是机品问题,是最新版lazarus缺“德”的问题。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
2010/3/19 14:39:08
8楼:
盒子也相当可以,两个7楼,跟贴时还看不到前面的7楼, 确实是 UTF 惹的祸,但是 Caption 还是没解决,另外同一份代码,在XP下正常,在WinCE下,Label 和 Image 统统跑到左上角也没解决。 这些都不管了,我用API自己绘图,自己写字,已经完全没问题了,少搞些控件可以节省多些内存,WinCE 的内存是无价的。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
2010/3/19 16:23:26
9楼:
什么也不管了,结果出来。
此帖子包含附件: 大小: 18.8K
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
2010/3/19 19:14:35
10楼:
记事本存 UTF-8 格式, SL:=TStringList.Create; SL.LoadFromFile(***); SL[0] 这个字串前面,会多加了3个字节。SL[1]以后就正常。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
2010/4/20 18:27:40
11楼:
今天下载了个最新的每日构建版本,测试了一下,没有再出现这种情况了。 版本 #: 0.0.29 日期: 2010-04-20 FPC版本: 2.4.1 SVN修订版本:24727 i386-win32-win32/win64 操作系统:Windows XP SP3 英文版
----------------------------------------------
-
作者:
2012/9/7 18:17:59
12楼:
庆祝Lazarus1.0发布!Delphi和Freepascal的性能比较例子 好久没有关注freepascal和lazarus,前两天一看,lazarus居然已经发布了1.0正式版,下载了一个windows版,一试,感觉比较爽,IDE好像已经强过DELPHI7(我一直用DELPHI7),中文的问题好像已经没有了。有关生成的可执行的文件太大的问题也试了一下,缺省的文件还是比较大的。试了它里面的几个例子,都是十几兆,把编译开关重新调整了一下,一个是除去调试信息,一个是作SMARTLINK,大小减少到2兆多,可以接受。不过有调试信息也是有意义的,出了问题可以知道是程序哪一行有问题。 我原来看过几年前有人写过的一篇关于DELPHI和Freepascal的性能比较文章,说是DELPHI比Freepascal快差不多10-30%,在有数学函数的运算中,差距超过30%,但昨天我作的测试结果完全颠覆了这个说法。在我的测试中发现除了显示部分,Freepascal性能已经超过了DELPHI。 现在我把我昨天晚上作的关于DELPHI和freepascal的几个性能测试例子发布一下: (1)平衡二叉树的创建 const cBase64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; cBase64Len=Length(cBase64); procedure TForm1.Button1Click(Sender: TObject); var i:Integer; Node:TAVLTreeNode; Image:TImage; T1,T2:TDateTime; begin T1:=Now; Tree.Clear; RandSeed:=1; DrawCount:=1; for i:=1 to 20*10000 do begin DrawCount:=(DrawCount+1) mod 2; Image:=TImage(FindComponent('Image'+IntToStr(DrawCount+1))); // Image.Canvas.FillRect(Image.ClientRect); // Tree.DrawTreeNode(Image.Canvas); Node:=TAVLTreeNode.Create; Node.Key:=cBase64[Random(cBase64Len)+1]; // ShowMessage('Button1: Begin'+IntToStr(i)+' '+Node.Key); Tree.Add(Node); DrawCount:=(DrawCount+1) mod 2; Image:=TImage(FindComponent('Image'+IntToStr(DrawCount+1))); // Image.Canvas.FillRect(Image.ClientRect); // Tree.DrawTreeNode(Image.Canvas); // ShowMessage('Button1: End'+IntToStr(i)); end; T2:=Now; ShowMessage(IntToStr(Round((t2-t1)*24*3600*1000))); end; 担心random产生不同的结果,我自己写了一个随机数发生函数,保证DELPHI和FREEPASCAL都产生相同的树。 运行结果是: DELPHI耗时234ms Freepascal耗时141ms (2)平衡二叉树的释放和创建 把上面的代码再执行一篇,相当于把上次的创建的树释放,然后重新创建一遍 第二次运行的是 DELPHI耗时328ms Freepascal耗时187ms (3)平衡二叉树的查找 var s:string; i:Integer; T1,T2:TDateTime; begin T1:=Now; for i:=1 to 1000*1000 do begin s:=cBase64[Random(cBase64Len)+1]; Tree.Find(s); end; T2:=Now; ShowMessage(IntToStr(Round((t2-t1)*24*3600*1000))); end; DELPHI耗时218ms Freepascal耗时141ms (4)数学运算 var s:string; i:Integer; T1,T2:TDateTime; begin T1:=Now; for i:=1 to 1000*1000 do begin RandSeed:=round(math.power(10.5,3.2)+log10(1000*25*123)+sqrt(22*55)+math.sinh(1.2)*100)*100; // s:=cBase64[Random(cBase64Len)+1]; // Tree.Find(s); end; T2:=Now; ShowMessage(IntToStr(Round((t2-t1)*24*3600*1000))); end; DELPHI耗时235ms Freepascal耗时218ms (5)在画布上显示 var i:Integer; Node:TAVLTreeNode; Image:TImage; T1,T2:TDateTime; begin T1:=Now; Tree.Clear; RandSeed:=1; DrawCount:=1; for i:=1 to 200 do begin DrawCount:=(DrawCount+1) mod 2; Image:=TImage(FindComponent('Image'+IntToStr(DrawCount+1))); Image.Canvas.FillRect(Image.ClientRect); Tree.DrawTreeNode(Image.Canvas); Node:=TAVLTreeNode.Create; Node.Key:=cBase64[Random(cBase64Len)+1]; // ShowMessage('Button1: Begin'+IntToStr(i)+' '+Node.Key); Tree.Add(Node); DrawCount:=(DrawCount+1) mod 2; Image:=TImage(FindComponent('Image'+IntToStr(DrawCount+1))); Image.Canvas.FillRect(Image.ClientRect); Tree.DrawTreeNode(Image.Canvas); // ShowMessage('Button1: End'+IntToStr(i)); end; T2:=Now; ShowMessage(IntToStr(Round((t2-t1)*24*3600*1000))); end; DELPHI耗时312ms Lazarus耗时688ms 以上使用的DELPHI版本是 Lite Edition v7.3.4.1(Build8.1),FreePascal版本是2.6 总结:Freepascal在编译效果上基本上不输DELPHI,并且还强不少,并且Freepascal已经64位很长时间了,特别是在多种硬件平台和多种操作系统上都能编译运行。不过DELPHI7在画布上的显示速度明显超过Lazarus,这可能是因为Lazarus支持多种显示平台(win32、gtk、gtk2、carbon、qt、wince、fpgui、cocoa、android),多包了一层。lanzarus上的基本控件和DELPHI相比,有多有少。可以说lazarus可以进入实用阶段了。 以后有一部分程序可能会考虑用Lanzarus进行开发。有可能会和DELPHI混用。至少服务器肯定考虑用Freepascal了,因为Freepascal原生提供了比DELPHI原生提供多得多的大量的函数和组件(包括我上面使用的平衡二叉树就是一个例子,其它还有链表,杂凑、加密、压缩、CGI等),并且写服务器软件,有关DELPHI代码转到Freepascal代码比较容易。DELPHI上大量的第三方比较好的报表和显示控件要转到Lazarus还是不太容易,如果不考虑第三方控件,Lazarus已经完全可以替换Delphi了,但这些优秀的第三方显示和报表控件还是很难割舍的。
----------------------------------------------
-