足让你打吃一惊:一小段奇异的代码

baseyueliang 2009-03-25 03:08:38
加精
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
function GetTrue: Boolean;
function GetValue1(var s: string): Variant;
function GetValue2(var s: string): Boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

function TForm1.GetTrue: Boolean;
begin
Result := True;
end;

function TForm1.GetValue1(var s: string): Variant;
begin
Result := True;
s := 'World';
end;

function TForm1.GetValue2(var s: string): Boolean;
begin
Result := True;
s := 'World';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
if GetTrue or GetValue1(s) then
ShowMessage('Hello ' + s);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
s: string;
begin
if GetTrue or GetValue2(s) then
ShowMessage('Hello ' + s);
end;

end.


//看看会Show什么出来?
...全文
10454 167 打赏 收藏 转发到动态 举报
写回复
用AI写文章
167 条回复
切换为时间正序
请发表友善的回复…
发表回复
spr2372 2011-09-05
  • 打赏
  • 举报
回复
MK MK
xixiyayaya 2011-08-27
  • 打赏
  • 举报
回复
看了看了,好奇,天书,晦涩,越来越晕
EmbarcaderoSC 2011-08-23
  • 打赏
  • 举报
回复
FireMonkey是Delphi的新一代框架,主要是加强2D,3D,动画等UI方面的开发,能轻松开发出炫酷的应用界面;据说FireMonkey更强的就是跨平台,使用该框架开发的应用可以部署到MAC,而且FireMonkey还有针对iOS的开发控件,结合freepascal可以编译生成iOS上的应用。

就delphi本身,我觉得64bit应该是一个大的进步.大家都拭目以待Delphi的复兴吧:)
山东蓝鸟贵薪 2011-06-28
  • 打赏
  • 举报
回复
谢谢分享,学习学习先..........
山东蓝鸟贵薪 2011-06-05
  • 打赏
  • 举报
回复
加入环境,运行一下,不就知道了结果了吗
wamm2144 2011-04-27
  • 打赏
  • 举报
回复
不懂最少你开头说明下,有什么问题
pandashare 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 69 楼 wangxinghe 的回复:]
如果没有完整细致的说明文档,这些小细节真会折腾死人。本人有个建议,不要书写太复杂的语句,
宁可啰嗦麻烦一点(保证程序确实按照思路去运行)。因为我们有时候真的不知道工具本身会如何去处理一些复杂的语句。
[/Quote]
认同...的确- -! 宁可啰嗦点有时候
illj1111 2010-11-18
  • 打赏
  • 举报
回复
高端哦,至今还没看明白什么是什么呢。
lvfei721 2010-11-18
  • 打赏
  • 举报
回复
受教了,我觉得还是定义数据的时候类型选择对于执行与否的影响
shenmepowangzhan 2010-09-27
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 forestdb 的回复:]
--!!看了半天就一shortcut的思想。
[/Quote]


是short-circuit吧,不是逻辑短路么?
woxinyongheng0801 2010-09-08
  • 打赏
  • 举报
回复
刚刚接触delphi。学习了。
Im17benteng 2010-08-24
  • 打赏
  • 举报
回复
这个没什么吧,把or改成and试试
运算符嘛
林石公 2010-08-23
  • 打赏
  • 举报
回复
我 打吃 一惊

震精了
rainychan2009 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lgx0914 的回复:]
Delphi(Pascal) code
function TForm1.GetValue2(var s: string): Boolean;
begin
Result := True;
ShowMessage('af');//加上这行再试试,会发现没有执行
s := 'World';
end;
[/Quote]
这个调试的思路挺有意思。不懂汇编,不看Windows窗口。。。
libingzhao 2010-06-06
  • 打赏
  • 举报
回复
看来Variant的却会引起意想不到的错误
gangzi002 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zswang 的回复:]
这都被楼主发现了!

Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
if GetTrue or Boolean(GetValue1(s)) then
ShowMessage('Hello ' + s);
end;

procedu……
[/Quote]
厉害,能详细说说么?
gangzi002 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 fengjssoft 的回复:]
第二個GetValue2(s)沒有執行,可能是因為if GetTrue or GetValue2(s) then
的函數GetTrue 得到真後,就不執行GetValue2(s)了,第一個GetValue1(s)因為返回值是
Variant,編譯器不直接認為是布爾類型,所以執行了GetValue1(s)。
ˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍ
不知道大家認同不?
[/Quote]
这个理论上应该是对的,但是从这个程序上来看,如果getValue2(s)不执行的话,那么在Button1Click()事件中getValue1(s)也是不会执行的,但结果getValue1(s)执行了,所以……
DelphiFuture 2009-10-17
  • 打赏
  • 举报
回复
第二个没执行是不是因为两个代码一样才忽略的啊
mjp1234airen4385 2009-10-13
  • 打赏
  • 举报
回复
看到24楼的时候,明白了。
justin_wkf 2009-09-21
  • 打赏
  • 举报
回复
都是高手学习学习
加载更多回复(147)
你将会学到:管理项目代码的工具,记录代码的历史变更,提升工作效率,协助团队成员协作开发适合人群:本课程专为程序员小白设计,不要再为GIT的复杂操作而烦恼,加入我们的课程,通过生动的实例和简洁的讲解,帮助你在短短一小时内轻松掌握GIT的核心概念和常用操作,更高效地管理代码、提升团队协作效率课程目标:将快速掌握GIT基础知识,包括版本控制,代码托管,协作开发,在本地进行代码管理课程简介:本课程专为性程序员小白设计,旨在通过简洁明了、实例丰富的教学方式,帮助初学者在短短一小时内快速掌握GIT的核心知识和常用操作。课程从GIT的基本概念讲起,逐步深入,引导学员了解版本控制的重要性以及GIT的工作原理。通过生动的案例和实操演练,学员将学会如何创建仓库、提交代码、分支管理、冲突解决等关键技能,轻松应对日常开发中的版本控制需求。无论你是编程新手,还是已经在职场中摸爬滚打的小能手,只要你想快速掌握GIT并提升代码管理效率,这门课程都将为你提供有力的支持。我们特别注重初学者的学习体验,课程内容简洁易懂,讲解方式亲切贴心,让你在轻松愉快的氛围中快速掌握GIT。通过本课程的学习,你将能够自信地运用GIT进行代码管理,提升团队协作效率,为职业生涯增添一笔宝贵的技能。加入我们的GIT入门课程,让编程之路更加顺畅无阻!

16,749

社区成员

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

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