delphi很基础的问题,高来进来答(100分)

  • 主题发起人 ch_yahuu
  • 开始时间
C

ch_yahuu

Unregistered / Unconfirmed
GUEST, unregistred user!
1 对象的相等问题,什么相等(地址还是值)?基本类型同理吗?
如 Query1 := Query2;
这里是把Query2的值给Query1还是将地址给Query1?
i,k:Integer;

i:=5;
k:=i;
这里又是什么相等呢?
2 java中可以用equals和==号来进行引用和值的比较,delphi如何实现这两种不同的比较呢?
3 Delphi中单态模式的实现,如何实现单态呢?
在java中有static的静态变量,很容易就实现对象的单例了,delphi中又如何做到呢?

4 delphi中给一个单元文件里的变量给值以后,如不手动消除,这个变量的值就会一直存在吗?

3 class关键字的作用
 
L

lisa1002

Unregistered / Unconfirmed
GUEST, unregistred user!
1. delphi中没有这种写法,也没有必要那样写
2.delphi中用 if a > b then
来比较两个数的大小,用 if b is a 来比较两个对象
3.java中用 static delphi中用 class. eg : class function GetSum();
4.在当前窗口关闭前消失
5.class 指类和java中一样,另一种用法就是过程 或函数前面加上class后在别的单无里就可以直接调用函数
 

地质灾害

Unregistered / Unconfirmed
GUEST, unregistred user!
对象变量是指针。对象变量的赋值跟指针一样。对象变量指向类的VMT指针,也就是“指向指针的指针。这点祖先类TObject的方法ClassType可以看出来:
function TObject.ClassType: TClass;
begin
Pointer(Result) := PPointer(Self)^;
end;

Integer的赋值当然是直接复制内存了。
我没用过JAVA。不知道equals进行的是什么比较。不过目前Delphi只能利用RTTI来比较published属性。TPersistent的DefineProperties另当别论。
static成员的说法我听过,不过好像跟对象单例没联系吧?倒是设计模式里有个单例模式Singleton,搞JAVA的理论一套一套,可惜都是人云亦云,不会看代码的。Delphi2009也支持类的static成员,不过之前for WIN32版本都不支持。for .NET我不知道,没用过。不过static的效果也可以用其它方法实现的。在implementation节下定义一个变量,并通过那个类来访问跟static没什么两样。写法不同而已。
对于第四个问题。我想你有必要去学习一下堆和栈的知识。
class关键字的作用,我知道的有以下:
定义类 type T***** = class
定义类方法 class function 或 class procedure
以上所有都可以从普通书籍里找到。对于LZ此种问题。表示深深地鄙夷。
 

吴三桂

Unregistered / Unconfirmed
GUEST, unregistred user!
老大,你在CSDN人家给你的回答相当正确了。
 
H

hanpengshan_00

Unregistered / Unconfirmed
GUEST, unregistred user!
看来楼主熟悉java
1 跟java的赋值一样
2 java的equals在不覆盖此方法的时候,比较的是对象的句柄,覆盖此方法重新实现可以比较对象的内容而不是比较句柄,跟delphi的=判断没有什么不一样
3 单态在delphi中的实现,把变量定义在单元的implemetation下面即可
4 是
5 就是java中的static的意思
 
B

bsense

Unregistered / Unconfirmed
GUEST, unregistred user!
既然是基础,我这个低手肥答下:
1.对象相等,可以比较地址 ,但前提是比较对象类型
if (query1 is tquery) then
if (query2 is tquery) then
if query1 = query2 then

delphi的比较是 = 一般只能在条件语句出现
:= 才是 赋值 ,所谓 赋值 就是给值 ,不是相等的意思
i:= 5;
表示 i 取值 5 而不是 等于5 这和java/c 的 i=5;
相同
和 basic 的 let i=5;
一样

i:= 5;
k:= i;
之后 if k=i then
,if k=5 then
,if i=5 then
都是为真的
2. 如 1楼
java 的 == delphi是 =
is 判断 相同类的对象都是true eg
var a,b,c:tform;
if a is tform then
if b = a then

3. 如1楼
4. 如果一个单元的变量 在 implementation 前声明 ,生命周期是
整个单元(相当于全局变量) 在uses 了这个单元的代码里面都可以读写
在implementation 后面声明 ,就只有本unit里面代码可以访问。
5. 如1楼
 
C

ch_yahuu

Unregistered / Unconfirmed
GUEST, unregistred user!
csdn的回答已经很正确了,感谢各位参与
 
顶部