定义类的时候这两句放到这是什么意思

jmxb123 2008-08-26 10:39:52
type
Tbuf = array [0..1024] of byte;
Tmax = array [0..20000] of byte;

Tfindtext = class(TThread)
private

public
Constructor Create(connid:integer;pi:Thandle);
protected
procedure execute;override;
end;

定义类的时候这两句放到这是什么意思
Tbuf = array [0..1024] of byte;
Tmax = array [0..Bigbufsize] of byte;
...全文
69 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmxb123 2008-08-26
  • 打赏
  • 举报
回复
多谢小兔兔
lihuasoft 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jmxb123 的回复:]
明白了 type下面不但可以定义类 还可以定义枚举 子界这样的东东(类型,而非对象或变量
[/Quote]

正确!
jmxb123 2008-08-26
  • 打赏
  • 举报
回复
明白了 type下面不但可以定义类 还可以定义枚举 子界这样的东东 看了几天书 没用过 差点给忘了
lihuasoft 2008-08-26
  • 打赏
  • 举报
回复
对不起,上面倒数第5行的:应为=
lihuasoft 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jmxb123 的回复:]
我只是想知道这两句干嘛非放到这,type下面不是定义类吗
[/Quote]

我尽可能说得详细一些:

type下面是定义类型,而不仅限于类类型,比如,

type
x = y;
Tz = class
end;

可以分解为:

type
x = y;

type
Tz = class
end;

对于
type
x = array of char;来讲,
你可以理解为,给array of char取了另一个名字

下一步,在真正声明array of char类型的变量时,可以这样:
var
v1 : array of char;
也可以
var
v1 : x;

而这种“别名”的用处之一,常常在以下的场合:

有时声明一个函数,需要返回值是一个数组:

function func1(): array[1..3]of char;
但这样编译会报错
于是
type
TArr : array[1..3] of char;

然后
function func1(): TArr;
就可以了

讲这些,对您有一些帮助了吗?
jmxb123 2008-08-26
  • 打赏
  • 举报
回复
我只是想知道这两句干嘛非放到这,type下面不是定义类吗
lihuasoft 2008-08-26
  • 打赏
  • 举报
回复
to 楼主:type 是定义类型,而var是声明变量,完全不是一回事。这是基础

[Quote=引用 2 楼 hawksoft 的回复:]
type
Tbuf = array [0..1024] of byte;
Tmax = array [0..20000] of byte;
====
定义新的数据类型。var a : TBuf 相当于 var a : array [0..1024] of byte;
[/Quote]

to hawksoft:

嗯,确切地说,“别名”也是不准确的(但这样认为也未尝不可,并且理解起来直观),应该正如2楼所说:定义新的类型

但2楼在最后举的例子,又回到了“别名”的认识上,其实,从严格意义上来说,二者不是同一类型,这是由于Delphi编译器严格的语法检查。

例如:


{PInteger = ^Integer;}

procedure TForm1.Button1Click(Sender: TObject);
var
a: ^integer;
b: ^integer;
c: PInteger;
d: PInteger;
e,f: ^integer;
begin
a := b; {编译报错:Incompatible types}
c := d; {OK}
e := f; {OK}
end;
jmxb123 2008-08-26
  • 打赏
  • 举报
回复
把这两句放到type外 再换成var这样的,效果是不是一样?
lihuasoft 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fenger8293 的回复:]
这个定义不属于类的定义的范围.
只是定义了一个1维的字节类型的数组.
[/Quote]

不是数组,而是数组类型
定义“数组”已经是“对象”“变量”了,而这只是定义两个数组类型的“别名”
广州接入 2008-08-26
  • 打赏
  • 举报
回复
type
Tbuf = array [0..1024] of byte;
Tmax = array [0..20000] of byte;
====
定义新的数据类型。var a : TBuf 相当于 var a : array [0..1024] of byte;
手指风 2008-08-26
  • 打赏
  • 举报
回复
这个定义不属于类的定义的范围.
只是定义了一个1维的字节类型的数组.

16,748

社区成员

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

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