delphi7中的例子也出错!!!是版本有漏洞吗?(100分)

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

csld

Unregistered / Unconfirmed
GUEST, unregistred user!
关于pointer操作的例子,因为类似的程序段老出错,所以拿这个来试了一试,结果果然出错,在button2click事件代码中出变量存取错,还给出内存地址,怎么回事啊??例子如下:

The following code defines a record type of TMyRec and a record pointer type of PMyRec.

type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;

Assuming these types are used, the following code adds a node to TreeView1 as the last sibling of a specified node. A TMyRec record is associated with the added item. The FName and LName fields are obtained from edit boxes Edit1 and Edit2. The Index parameter is obtained from edit box Edit3. The item is added only if the Index is a valid value.

procedure TForm1.Button1Click(Sender: TObject);

var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then

Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
end;
end;

After an item containing a TMyRec record has been added, the following code retrieves the FName and LName values associated with the item and displays the values in a label.

procedure TForm1.Button2Click(Sender: TObject);

begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName
{出错语句!!!}
end;
 
我已经找到问题所在了,如果treeview1没有节点被选中就会出错,应该加上判断语句。问题解决,呵呵
 
接受答案了。

例子也有不严密的地方啊。
 
知道了,谢谢
 
恩 这个问题看过了
更郁闷的是 帮助里也有错的
 
不要总期望别人是完美的。
这可以提高自己的水平
 
他有问题不要紧,可是耽误了我许多时间的。
不过问题发现了,提高了之后还是很欣慰的。

大家给点有用的信息,经验把,我好分分,反正这100分挂在这里我是收不回去啦,虽然我也解决了。
 
嫁给我吧,恭喜恭喜啊,解决了问题
 
delphi 调试功能还是比较强的。 可以好好利用
 
多人接受答案了。
 
后退
顶部