趣味题:考考你的Delphi基础

阿发伯 2009-10-27 08:29:42
加精
活跃一下D版的气氛,出个趣味只是题。

下面的代码中,定义了一个记录类型,定义了2个同名的方法(同不同名无所谓),v1和v2的x字段都初始化为10,分别调用2个方法后。提问:
1、v1.x与v2.x的值分别为多少?(要求不要在机上测试)
2、加入从记录定义中去掉y字段,v1.x与v2.x的值又分别为多少?(要求不要在机上测试)
3、为什么会是这样的结果?希望大家讨论。


type
TTest = record
x: Integer;
y: Integer;
end;

procedure IncX(var v: TTest); overload;
begin
Inc(v.x);
end;

function IncX: TTest; overload;
begin
Inc(Result.x);
end;

var
v1, v2: TTest;
begin
v1.x := 10;
v2.x := 10;
v1 := IncX;
IncX(v2);
end;
...全文
2529 103 打赏 收藏 转发到动态 举报
写回复
用AI写文章
103 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangbenchun 2009-11-02
  • 打赏
  • 举报
回复
不懂delphi,路过
luoyanqing119 2009-10-31
  • 打赏
  • 举报
回复
把前100全部顶完。---------------不过加了PACKET,编译器以经做过了压缩处理,解开时不能按正常的字节处理
Harryfin 2009-10-30
  • 打赏
  • 举报
回复
学习....
babycry627 2009-10-30
  • 打赏
  • 举报
回复
不懂。。。
donil 2009-10-30
  • 打赏
  • 举报
回复
阿发伯不用介意,这种帖子我喜欢,虽然我不太懂,不过看了总能学到不少东西。
zwzgood 2009-10-30
  • 打赏
  • 举报
回复
建议大家学习一下汇编,这类问题就容易理解了。
xcplates 2009-10-30
  • 打赏
  • 举报
回复
v1.x不确定,v2.x=11。
Inc(Result.x);相当于引用了一个没初始化的变量,其值应该不确定,以前遇到过。
IncX(v2); 这个传进来的是地址,函数内的操作将影响到函数外的变量。
第二种方法本人经常用到:
procedure ReagSrvInfo(var v:TSrvInfo);
var
IniFile:TiniFile;
CrFileName:string;
begin
CrFileName:=GetExePath+IniFileName;
try
IniFile:=TiniFile.Create(CrFileName);
v.IP:=IniFile.ReadString('SqlSrvInfo','IP','');
try
v.DBName:=IniFile.ReadString('SqlSrvInfo','DBName','');
if v.DBName<>'' then
v.DBName:=Decrypt(v.DBName,MyKey);
v.UserName:=IniFile.ReadString('SqlSrvInfo','UserName','');
if v.UserName<>'' then
v.UserName:=Decrypt(v.UserName,MyKey);
v.UserPWD:=IniFile.ReadString('SqlSrvInfo','UserPWD','');
if v.UserPWD<>'' then
v.UserPWD:=Decrypt(v.UserPWD,MyKey);
except
v.UserName:='';
v.UserPWD:='';
end;
finally
FreeAndNil(IniFile);
end;
end;
xwpeng 2009-10-30
  • 打赏
  • 举报
回复
再顶一下,刚好100楼!
xwpeng 2009-10-30
  • 打赏
  • 举报
回复
顶一下,对于这个传指针和传值,编译器做的事情太多了,反倒让别人不好理解.......
78hgdong 2009-10-30
  • 打赏
  • 举报
回复
受教,受教
jiujiang88 2009-10-30
  • 打赏
  • 举报
回复
路过,问题就是大家探讨出来的,阿发伯不用这样噻,不存在嘛,是不是嘛.
brain360 2009-10-29
  • 打赏
  • 举报
回复
i don't know~
tyffdj 2009-10-29
  • 打赏
  • 举报
回复
学习了!
ddhqa 2009-10-29
  • 打赏
  • 举报
回复
学习
xujl_1979 2009-10-29
  • 打赏
  • 举报
回复
支持一下
Pascal快忘光了
vanisa 2009-10-29
  • 打赏
  • 举报
回复
还是可以的嘛
Bear_hx 2009-10-29
  • 打赏
  • 举报
回复
支持阿发伯,目前正在研究这些,你讲的对我非常有用,受教了。
glx9918 2009-10-29
  • 打赏
  • 举报
回复
9999999
caonimarangwozhuce 2009-10-29
  • 打赏
  • 举报
回复
不懂Delphi 帮你们顶出100楼
iseekcode 2009-10-29
  • 打赏
  • 举报
回复
昨天看到一篇小文章,说记录元素如果不赋初值,其初始值是随机值.
加载更多回复(80)

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧