Delphi中返回类型为string的函数的一个陷阱
来源:互联网 发布:面向对象的数据库 编辑:程序博客网 时间:2024/05/18 10:13
如果类的一个成员函数的返回值是string类型,需要注意一个问题
其返回值可能是错误的
例如函数的实现如下
function GetString( s: string ): string;
begin
Result := Result + s;
end;
调用方式如下:
procedure test();
var
i: Integer;
s: string;
begin
s := '';
s := GetString( IntToStr( 1 ) );
s := GetString( IntToStr( 2 ) );
end;
那么s的值是什么呢?
答案是“12”,不是“2”
原因是:第一次调用GetString方法,把s和GetString的result指向了同一个地址,第二次调用GetString方法,result指向的仍然是之前的地址,其值仍然为'1',所以结果是'1' + '2' = '12'
当然其中一个问题就是这个函数的返回值没有初始化,当返回值的类型为string时,而delphi并不会进行警告或提示
所以我们一定要养成良好的习惯,如上述实现不应该在初始化result前使用它
==============================================
另一个例子
function GetNumberType( n: Integer ): string;
begin
if n mod 2 = 0 then
Result := '偶数';
end;
procedure TF_Main.btnTestClick(Sender: TObject);
var
i: Integer;
begin
//
for i := 1 to 4 do
AddMsg( '结果:' + GetNumberType( i ) );
end;
结果是:
结果:
结果:偶数
结果:偶数
结果:偶数
- Delphi中返回类型为string的函数的一个陷阱
- 网络通信中,DELPHI的string类型数据转换为C++字符串发送的一个陷阱
- 函数返回值为指针的一个陷阱(使用inet_ntoa函数时遇到的问题)
- 当C++函数的返回类型为一个类时
- 做一个返回数组的函数 DELPHI
- 返回栈中成员变量引用类型的陷阱
- jni实现返回值为java类型的String[]和List<E>的函数
- SpringMVC中controller中方法返回类型为ResponseEntity<String>乱码的问题
- 再说Delphi的String类型
- 函数返回类型为指针类型时的一些问题
- 函数返回类型为指针类型时的一些问题
- 函数返回类型为指针类型时的一些问题
- 函数返回类型为指针类型时的一些问题
- 函数返回类型为指针类型的一些问题
- 函数返回类型为指针类型的一些问题
- 函数返回类型为指针类型时的一些问题
- 函数返回类型为指针类型时的一些问题
- 一个string类型转换为float类型的类
- 2008年研究生入学考试西医综合真题及其答案
- linux下JAVA环境变量的设置
- 正则表达式--元字符
- 很好,很棒,很有感触的文章,年轻人进来看看吧,,,,,,
- 30而立
- Delphi中返回类型为string的函数的一个陷阱
- 有关在FireFox中上层高度不影响下层的解决办法
- dataGridView
- label
- [RIA]HTML5怎么就成了RIA“杀手”?
- 医学考研院校链接
- 郑州大学09年医学影像专业研究生招生情况
- Linux Shell学习笔记 (一)
- 6月