Ale小兄弟:
我首先声明,我不是学计算机专业的,我只是一名工作在祖国西部的地质工作者。
我所有的计算机知识都是通过自学得来的,DELPHI也不例外。7年前,大哥我也是一名和你一样张狂的大学生(你是不是大学生我目前还不清楚,索性先这样称呼),初来单位,总是这也看不惯,那也瞧不顺,可真的让你来完成一份现在看来很简单的工作,你还真的什么都不会,这种尴尬的境地基本维持了1-2年。工作7年,接触的人多了,见的世面广了,才发现真的是山外有山,人外有人。我为什么这样说呢,因为我们工作性质的原因,经常有老专家,老教授来我们单位指导工作,看着那些貌不起眼,语不惊人的教授级高工和我们一起探讨工作,一起指定方案,自己都觉的很汗颜,现在真的为自己当年的轻狂而羞愧。我们当时有什么资格来看不起这个,看不起那个,有什么资格觉的自己很了不起!!何况自己还是个刚毕业的学生,一个什么都不懂,基本什么都不会的学生。
大哥我工作7年,从一个技术员直到现在的项目负责(不是计算机行业,是水文地质工程地质环境地质行业),每年都有大学生到我们单位工作,他们刚来的时候都是挺目空一切的,总觉的自己不应该来这样的生产单位,而应该去大城市,好单位,我可以理解他们,毕竟我当年的想法跟他们一样。如果有些人工作一段时间后,还总觉的自己了不起,那作为项目负责,我会采取一些方法来打击他爆棚的自信心。过不了多久,一个个都老实了。我的方法很简单,你不是觉的自己很牛么,安排他写上一份工作设计,等总工,副总把他的设计批的一文不值的时候,他就老实了!
我说这么多,只想说明两点。1:学会谦虚。2:我是如何收拾菜鸟的。
好了,回到问题上来。
1:1.何为静态变量?使用中需要注意什么?
使用const 创建静态变量。过程中的变量是在栈上分配内存的,当过程调用或者退出时,内存空间会来回做出栈入栈动作,并且该变量的作用域是该过程,外部是不可见的。为了达到c/c++静态变量的效果,DELPHI一样可以做。
procedure abc;
const
i:integer=0;
begin
inc(i);
showmessage(inttostr(i));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to 3 do abc;
end;
默认情况下,类型化常数是不可赋值的。可以通过$j+编译器指令进行改变,或者在project options对话框中的compiler标签页中通过选择assignable typed constants复选框而产生此效果。
2:派生类中保护字段是否可以引用?这样做的优势是什么?
当然可以引用了。知道了友类的概念就懂了为什么可以引用。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TA=class
protected
x:integer;
end;
TB=class(TA)
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure abc;
var
a:TA;
b:TB;
begin
a:=TA.create;
a.x:=5;
b:=TB.Create;
b.x:=10;
showmessage(inttostr(b.x));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
abc;
end;
end.
希望能说详细点,越详细越能保脸,万一没保住老脸,分是不会给你的,万一我问死了你,
也要节哀,毕竟是在 Delphi 闯荡了 7 年的老江湖,跳楼也要跳出飞翔的样子。
/////
你说这话不觉得很可笑么?还是很张狂啊。我上面的回答,不知道你理解了没有。
就拿我这个不是计算机毕业的人一样可以问的你东倒西歪。不信,还需要我继续问你么?