Delphi 2009 开发 .Net 程序的一些问题(100分)

  • 主题发起人 主题发起人 龙丹
  • 开始时间 开始时间

龙丹

Unregistered / Unconfirmed
GUEST, unregistred user!
最近一段时间用 Delphi 2009 开发一个.Net 程序,发现问题不少,主要
有三类:
1.开发理念的转变,比如.Net强类型带来的诸多限制
2.项目中遇到的难题
3.可能是DELPHI2009存在的Bug或者规约改变带来的隐患
本贴主要是列出部分第3类问题,已经解决的大家可以作个参考,没有解决
的请大家帮助解决,也欢迎大家把你遇到的问题说出来。
 
问题:字节比较,结果荒唐
代码说话:
procedure TestGeneric.TestByteNot1;
var
C1,C2: Byte;
begin
C1 := $F0;
//Random(255)+1;
C2 := not C1;
CheckEquals($F0, C1);
CheckEquals($0F, C2);
CheckEquals(C2, not C1, '恐怕做梦都没想到这个也会失败');
end;

procedure TestGeneric.TestByteNot2;
var
C1,C2: Byte;
begin
C1 := $F0;
//Random(255)+1;
C2 := not C1;
Check(C2 = not C1, '恐怕做梦都没想到这个也会失败');
end;

procedure TestGeneric.TestByteNot3;
var
C1,C2,C3: Byte;
begin
C1 := $F0;
//Random(255)+1;
C2 := not C1;
C3 := not C2;
CheckEquals(C2, C3);
//通过
end;

运行了N年的代码
if C2 = not C1 then

....
而今出错了,害老汉我找了很久才发现问题在这里,有限的生命又浪费些许
 
问题:调试信息不对,某些代码行无法设置断点
现象:某些代码行左边没有蓝点,无法设置断点,但是,有个奇怪的现象,在接口部分有这样的代码:
Type
...
THexBytes = array[0..15] of Byte;
...
实现部分的某个过程的第一行没有蓝点,在上面类型定义的前后增加其它内容,比如空行、注释、其它类型定义等,那个过程的调试信息始终不变,然而,如果把上面的类型定义改为
THexBytes = array of Byte;
那个过程中的调试信息就正常,而那个过程与THexBytes并无任何关系。
显然,这不是因为调试信息文件和代码文件不匹配以及编译优化一类的原因造成的,目前还没有找到好的解决办法,后来,我只好把这些类型定义搬出来放到一个单独的单元中,这样做也是非常痛苦的,因为有这是一个基础单元,有大约200个文件都用到...
 
后退
顶部