Subject:
修改只读属性?
[Print This Page]
Author:
kendling
Time:
2007-1-24 10:39
Subject:
修改只读属性?
哈,最近发现一个修改只读属性的方法,就是通过指针。
不过还有条件
只能修改变量属性,如:
property ReadOnlyProperty: string
read FReadOnlyProperty
;
如果是方法属性则不能修改:
property ReadOnlyByFunc: string
read GetReadOnlyByFunc
;
例:
TMyClass = class
FProA: string;
public
property ProA: string read FProA;
end;
var
pp: ^string; //定义指针
begin
PP := @TestClass.ProA; //TestClass 是 TMyClass的实例
pp^ := 'This readonly property was modified!';
end;
其他类型的属性也可以噢。
[
本帖最后由 kendling 于 2007-1-24 11:02 编辑
]
Author:
Passion
Time:
2007-1-24 11:21
好点子,加精。
Author:
bahamut8348
Time:
2007-1-24 11:29
极度BS冬仔的头像,
竟然玩起RY来了
Author:
skyjacker
Time:
2007-1-24 16:17
顶。
小指针,大作用。
var
I: Integer;
S: string;
I 在内存中是个指针,指向存储变量内容的地址
S 在内存中是个指针的指针,存放指向S内容的指针的地址
指针既是地址。
如果可以获得了具体的内存地址,就可以修改了。
Author:
Passion
Time:
2007-1-24 17:07
SkyJacker这样说的指针比平常的指针概念多了一层,应该不太符合日常的理解。
C/Pascal等高级语言里头的指针其实是一个存储了地址的内存单元,其存储的内容(是一个地址)所指的地方才是这个指针所指的内容。
而I:Integer只是一个内存单元,I的内容是整型变量,没有地址的说法。
@I才能得到I的地址。
Author:
bahamut8348
Time:
2007-1-25 12:23
左值和右值
Author:
koalaone
Time:
2007-1-26 14:39
有点意思
Author:
skyjacker
Time:
2007-3-23 08:52
能不能修改全局常量的值?
用 P := @ConstA 获取指针不能编译.
我想将修改 ConstA 用于
Format(ConstA ,);
如果 ConstA 可以内部修改, 因此可以少不少 If 判断.
[
本帖最后由 skyjacker 于 2007-3-23 08:57 编辑
]
Author:
Passion
Time:
2007-3-23 09:03
那还用啥const,直接var了。
Author:
kendling
Time:
2007-3-28 11:59
哈哈,对,用var就好了。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0