• 全部
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

有关类赋值的问题。

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;

应该如何修改?
...全文
127 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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一下
回复
发帖
Delphi
创建于2007-08-02

4871

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2004-08-16 12:24
社区公告
暂无公告