说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在线求助,请高手帮忙!

编辑:说三道四文库 发布时间:2018-04-27 02:54
HTML文档下载 WORD文档下载 PDF文档下载
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  end;

  TMyClass = class
  Public
      FMember1 : Integer;
      FMember2 : Integer;
      FMember3 : WORD;
      FMember4 : Integer;
      Procedure Method();
  End;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
    Obj : TMyClass;
begin
    Obj := TMyClass.Create();

    with memo1.Lines do
    begin
        Add('对象大小:' + IntToStr(Obj.InstanceSize));
        Add('对象所在地址    :' + IntToStr(Integer(Obj)));
        Add('FMember1所在地址:' + IntToStr(Integer(@Obj.FMember1)));
        Add('FMember2所在地址:' + IntToStr(Integer(@Obj.FMember2)));
        Add('FMember3所在地址:' + IntToStr(Integer(@Obj.FMember3)));
        Add('FMember4所在地址:' + IntToStr(Integer(@Obj.FMember4)));
    end;

    Obj.Free();
end;

{ TMyClass }

procedure TMyClass.Method;
begin
    //no code
end;

end.


上面这段代码是《delphi高手突破》光盘上的一个例子

可是我在delphi7.0上不能运行
错误信息是

 [Warning] Unit1.pas(42): Unsafe typecast of 'TMyClass' to 'Integer'
  [Warning] Unit1.pas(43): Unsafe code '@ operator'
  [Warning] Unit1.pas(44): Unsafe code '@ operator'
  [Warning] Unit1.pas(45): Unsafe code '@ operator'
  [Warning] Unit1.pas(46): Unsafe code '@ operator'


请问,这是为什么?????能不能解决??怎么解决??
谢谢,我刚开始学这个,不大懂,请各位大哥大姐帮忙!!!!谢谢
帮帮忙啊
没有人来??自己顶一下,帮帮忙啊
在D7上没有问题;显示结果是:
对象大小:20
对象所在地址    :10125044
FMember1所在地址:10125048
FMember2所在地址:10125052
FMember3所在地址:10125056
FMember4所在地址:10125060
是不是你别的地方有问题!
难道是我的系统问题??????????
你重新创建一个工程试一试!如果还有问题!可能是你的delphi有问题!
可以运行于D7
好的
我试试,谢谢啊
确实可以了,非常感谢
我想是我在某个地方搞错了
那能不能帮我解释一下unsafe code在d7里是个什么概念??????
应该是你系统的问题
不安全的操作!!!

嘻嘻!~~~~~~~~

我的英语不太好!!!
以什么标准来衡量是不是不安全操作???
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘