有关类赋值的问题。

crackatom 2004-08-16 12:24:49
定义了一个类:
TClass1 = Class
Test1 : TClass2;
Test2 : TClass3;

大体过程如下:
procedure Test;
var Class1:TClass1;
Class2:TClass2;
begin
Class1:=TClass1.create;
Class2:=TClass2.create;

// 这里 Class2 赋值;

Class1.Test1:=Class2; //就在这里出错;

end;

应该如何修改?
...全文
192 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
crackatom 2004-08-16
  • 打赏
  • 举报
回复
补充:

Pack:TPack;
crackatom 2004-08-16
  • 打赏
  • 举报
回复
我觉得也是正确的,但发生地址访问冲突;

我定义一个数据包:

TPackHead = Class
cmd : word;
flag : word;

TPackContent = Class
PackLength : word;
PackContent : word;

TPack = Class
PackHead : TPackHead;
PackContent : TPackContent;

var TestPackHead:TPackHead;

......

//这里对TestPackHead赋值;

Pack.PackHead:=TestPackHead;//就在这里出错;

......
kaguo 2004-08-16
  • 打赏
  • 举报
回复
楼主,你的问题出在哪里?我建立了类似你的程序成功运行...
kaguo 2004-08-16
  • 打赏
  • 举报
回复

TClass2 = Class
Test2 : string;
end;

TClass1 = Class
Test1 : TClass2;
aaa:string;
end;


procedure TForm1.Button1Click(Sender: TObject);
var Class1:TClass1;
Class2:TClass2;
begin
Class1:=TClass1.create;
Class2:=TClass2.create;
Class2.Test2 :='asd';
// 这里 Class2 赋值;
Class1.Test1:=Class2;
edit1.Text := Class1.Test1.Test2;
end;
我测试,没错误的!

linzhengqun 2004-08-16
  • 打赏
  • 举报
回复
Class1.Test1:=Class2; //就在这里出错;
肯定会出错,你把一个类赋给一个字符类型。

问题是你要做什么,你写得好乱。
kaguo 2004-08-16
  • 打赏
  • 举报
回复
sorry sorry 错了地方...
kaguo 2004-08-16
  • 打赏
  • 举报
回复
frReport1.SavePreparedReport('d:\3.frp'); 先给他存了
chinaandys 2004-08-16
  • 打赏
  • 举报
回复
过程不能等一个类.
kaguo 2004-08-16
  • 打赏
  • 举报
回复
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;
TPackHead = Class
cmd : word;
flag : word;
end;

TPackContent = Class
PackLength : word;
PackContent : word;
end;

TPack = Class
PackHead : TPackHead;
PackContent : TPackContent;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var TestPackHead:TPackHead;
TestPackContent:TPackContent;
Pack:TPack;

begin
Pack:=TPack.Create;
TestPackHead:=TPackHead.Create;
TestPackHead.cmd := 123;
TestPackContent:=TPackContent.Create;
//这里对TestPackHead赋值;
Pack.PackHead:=TestPackHead;//就在这里出错;//没出错啊?
end;

end.
crackatom 2004-08-16
  • 打赏
  • 举报
回复
ding一下

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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