📄 120.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://bbs.tsinghua.edu.cn"><font face="黑体"><big><big>水木清华★</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> Delphi编程 (BM: strayli FlyingBoy) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="454"> <p align="center">[<a href="index.htm">回到开始</a>][<a href="4.htm">上一层</a>][<a href="121.htm">下一篇</a>]
<hr><p align="left"><small>发信人: lidan10 (信誓旦旦), 信区: Delphi <br>
标 题: Re: 关于指针动态分配的问题 <br>
发信站: BBS 水木清华站 (Thu Oct 22 20:03:52 1998) WWW-POST <br>
<br>
<br>
【 在 QUYAN (QUYAN) 的大作中提到: 】 <br>
: 我定义了一个记录型指针: <br>
: <br>
: type FileType=Record <br>
: TypeID:string[4]; <br>
: TypeName:string[20]; <br>
: end; <br>
: <br>
: PFileType:^FileType; <br>
: <br>
: 因为记录个数事先未知,所以我想根据情况动态分配内存。比如现在知道有5条记录。 <br>
: <br>
: <br>
: TypeNum:=5; <br>
: ReallocMem(PFileType,SizeOf(FileType)*TypeNum); <br>
: <br>
: 分配完之后,PFileType应为首地址,但访问各条记录时,只能这样写: <br>
: PFileType^.TypeID:=...; <br>
: PFileType^.TypeName:=...; <br>
: 这样只能访问第一条记录,其他记录不知怎样访问. <br>
: PFileType[1]^.TypeID 或 (PFileType+1)^.TypeID都不合法. <br>
: <br>
: 请各位大仙指点!!! <br>
<br>
你应该这样写: <br>
/************************************************************ <br>
type FileRecord=Record <br>
TypeID:string[4]; <br>
TypeName:string[20]; <br>
End <br>
<br>
FileArray:array [0..0] of FileRecord; <br>
FilePoint:^FileArray <br>
<br>
end; <br>
<br>
<br>
Function YourFunction; <br>
Var YourPoint: FilePoint <br>
i:integer; <br>
i:integer; <br>
Begin <br>
TypeNum:=5; <br>
<br>
GetMem(YourPoint,Sizeof(FileRecord)*TypeNum) ; <br>
Try <br>
For i:=0 to TypeNum-1 do <br>
Begin YourPoint^[i].TypeID:=???; <br>
YourPoint^[i].TypeName:=???; <br>
End; <br>
Finally <br>
FreeMem(YourPoint,Sizeof(FileRecord)*TypeNum) ; <br>
End; <br>
End; <br>
//*************************************************************** <br>
也就是说,要先声明一个空数组,再用指针指向数组就可以了。 <br>
注意,在声明数组时,长度和起始下标是可以任意的,并可以通过下标变量进行访问,但 <br>
是如果你要显式的用数字下标访问变量,编译时会报错的。 <br>
<br>
如 <br>
FileArray:array [0..2] of FileRecord; <br>
FilePoint:^FileArray <br>
<br>
Var YourPoint:FilePoint <br>
i:integer; <br>
Begin <br>
GetMem(YourPoint,Sizeof(...)*10); <br>
YourPoint^[0].TypeID:='aaa'; <br>
YourPoint^[1].TypeID:='aaa'; <br>
YourPoint^[2].TypeID:='aaa'; <br>
i:=7; <br>
YourPoint^[i].TypeID:='aaa'; <br>
//以上这样写都可以 <br>
YourPoint^[3].TypeID:='aaa';//这样写会报错,因为声明的数组下标没有3 <br>
<br>
End; <br>
<br>
注意,千万别忘了FreeMem;具体的看帮助吧 <br>
<br>
<br>
<br>
-- <br>
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.204.88.130] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="4.htm">上一层</a>][<a href="121.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -