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