最近在分析代码中的一些发现,以前没有注意到。
2009-02-05 18:19
351 查看
1、delphi 下的STRING类型
在delphi下如果直接赋值常量字符串长度仅仅为255
例如 var a :string
a := 'aaaaaaaaaaaaaaa';
上边的‘’内仅仅可以拥有255个字符。但是如果进行运算操作后,STRING的长度就变了
例如
a := '222222'+'2222'
这个时候A的长度就可以超过255了。
2、动态数组:A:Array of integer,B:integer;
我们声明一个动态数组:
SetLength(A,10);
A[0] := 1;
A[1] := 1;
FillChar(A,sizeof(A),#0);
B:= A[1];
这个时候程序会出现违法访问地址的错误。
这就说明了,动态数组,当FILLCHAR的时候从新设置了动态数组的长度。调整了FILLCHAR的位置,只要FILLCHAR在SetLength的下边的时候
就会出现异常。
上边的分析得出一个结论 当动态数组设置完长度后不需要FILLCHAR,如果需要重置动态数组到初始状态的时候,那么我们可以利用FILLCHAR长度的sizeof(A);
但是注意如果这样写
FillChar(A[1],sizeof(Integer),#0);
这样是完全正确的。
在delphi下如果直接赋值常量字符串长度仅仅为255
例如 var a :string
a := 'aaaaaaaaaaaaaaa';
上边的‘’内仅仅可以拥有255个字符。但是如果进行运算操作后,STRING的长度就变了
例如
a := '222222'+'2222'
这个时候A的长度就可以超过255了。
2、动态数组:A:Array of integer,B:integer;
我们声明一个动态数组:
SetLength(A,10);
A[0] := 1;
A[1] := 1;
FillChar(A,sizeof(A),#0);
B:= A[1];
这个时候程序会出现违法访问地址的错误。
这就说明了,动态数组,当FILLCHAR的时候从新设置了动态数组的长度。调整了FILLCHAR的位置,只要FILLCHAR在SetLength的下边的时候
就会出现异常。
上边的分析得出一个结论 当动态数组设置完长度后不需要FILLCHAR,如果需要重置动态数组到初始状态的时候,那么我们可以利用FILLCHAR长度的sizeof(A);
但是注意如果这样写
FillChar(A[1],sizeof(Integer),#0);
这样是完全正确的。
相关文章推荐
- Eclipse自动补全设置与Eclipse源代码下载 以前使用VisualStudio和Sublime写代码的时候有很完善的代码提示,但是最近开始使用Eclipse弄JAVA的时候发现它的代码提示不
- 最近用到的一些以前没有用过的SQL Server函数
- 你有没有注意到vs2008右击设计视图有时没有【查看代码】?
- 最近在做多媒体播放器时发现VC里没有ActiveMovieControl Object这个控件,可进行如下操作:
- Maven详解 一.前言 以前做过的项目中,没有真正的使用过Maven,只知道其名声很大,其作用是用来管理jar 包的。最近一段时间在项目过程中使用Maven,用Maven构建的web项目
- 测试时钟显示程序通过, 点阵显示 碰到一些困难 发现调试比写代码更纠结。代码没错 烧到板子里就是打不到想要的现象
- 最近发现的几个好.net代码
- tensorflow的一些代码分析(一) tensorflow基本流程和基本概念
- tensorflow的一些代码分析(四) tensorflow常用函数介绍
- GoAhead2.5源代码分析之4-用户管理用到的一些函数(uemf.c misc.c)
- 我以前写的一些delphi程序原代码
- 最近项目上没有很忙的事情,想利用这段时间来写写这几年来在项目开发上的一些心得体会,乐于跟大家分享
- C语言系列(一):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序
- 收集了一些支持COBOL语言的代码分析工具
- Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
- Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
- [战略]最近整理代码的一些总结和未来规划
- 最近遇到的一些问题及发现
- ITEXT实例学习与研究(三) 发现了ITEXT问题 没有WATERMARK以及一些其他的问题
- 原来java的正则也支持后置引用的,以前一直没有注意到。