DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tkzcol
今日帖子: 15
在线用户: 19
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
2010/3/18 17:05:44
标题:
lazarus 的 Label 不显示“德”字了 浏览:3080
加入我的收藏
楼主:
lazarus 的 Label 不显示“德”字了,变成 “??”,而按钮等等都可以显示。

版本 0.9.29 2010-03-03 

编译到 WinCE,所有 Label 和 Image 都自己走到左上角了,乱套了。

现在就去下载今日的最新版。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
男 lobtao (lob) ★☆☆☆☆ -
普通会员
2010/3/18 18:53:30
1楼: 是个好消息,就是编译出来的东东大了点,wince上太耗内存了。一启动就是几兆的内存,有点吓人哇。
----------------------------------------------
没有做不到,只有想不到。
bolg:http://hi.baidu.com/lobtao
Email:lobtao@qq.com
QQ:369687916
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
2010/3/18 23:38:14
2楼: 有什么好消息呢?

lazarus 现在就像出版日报那样,每24小时出一个新版,是世界上更新最快,最频密的软件,世界上也没那个软件比得上它了。

我下载今日的新版,结果没变,“道德”就变成“道?”“德国”反而正常。

按照我的研究精神,什么字体,编码都搞过,怎么搞都搞不来?连 TLabel 的代码都研究过了,而且在 WindowsXP 和 WinCE 里面效果都是一样,没什么好搞了,唯有自己去Paint喽。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2010/3/19 9:47:48
3楼: LZ lazarus 新版的在WINCE上是会错位.
我后来又换回旧的,就没问题了.

 另外lazarus不显示'德'字,南岛就是传说中的缺德不成?
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
2010/3/19 12:55:22
6楼:
可歌可泣,不求实用,只求折腾。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2010/3/19 14:15:53
7楼: lazarus 的源代码现在都是用UTF8.
用它的KCL函数画文字没问题.但是如果要是调API,在WINCE下就必须转一次
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
2010/3/19 14:24:47
7楼: 安装了去年的旧版本,结果 Label 可以显示“道德”了。

但是
SL:=TStringList.Create;
SL.LoadFromFile(***);

S:=SL[I];//中文不正确。


不过,终于研究出来,文件要保存为 UTF-8 格式!用记事本编辑之后,不要保存,而是另存为UTF-8格式,LoadFromFile就正确了。

但这和新版的 Label 不能显示“道德”的德字是无关,也无法给Caption指定文本格式的。

而且旧版是正常,不是人品问题,不是机品问题,是最新版lazarus缺“德”的问题。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
2010/3/19 14:39:08
8楼: 盒子也相当可以,两个7楼,跟贴时还看不到前面的7楼,

确实是 UTF 惹的祸,但是 Caption 还是没解决,另外同一份代码,在XP下正常,在WinCE下,Label 和 Image 统统跑到左上角也没解决。


这些都不管了,我用API自己绘图,自己写字,已经完全没问题了,少搞些控件可以节省多些内存,WinCE 的内存是无价的。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
2010/3/19 16:23:26
9楼: 什么也不管了,结果出来。
此帖子包含附件:
JPEG 图像
大小:18.8K
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
男 kinneng (kinneng) ★☆☆☆☆ -
盒子活跃会员
2010/3/19 19:14:35
10楼: 记事本存 UTF-8 格式,
SL:=TStringList.Create;
SL.LoadFromFile(***);
SL[0] 这个字串前面,会多加了3个字节。SL[1]以后就正常。
----------------------------------------------
声明:本人不在论坛询问任何编程问题,请不要将我的帖子当成问题来回答。炒股一天,编程三年,不浪费时间了。 经常在外面,没空,不要找我..
作者:
男 szyourname (szyourname) ★☆☆☆☆ -
盒子活跃会员
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 英文版
----------------------------------------------
-
作者:
男 lmf888 (lmf888) ★☆☆☆☆ -
普通会员
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了,但这些优秀的第三方显示和报表控件还是很难割舍的。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行97.65625毫秒 RSS