TA的每日心情 | 开心 2024-11-4 22:10 |
---|
英勇青铜
- 积分
- 77
|
本帖最后由 武汉有毒 于 2023-3-3 21:18 编辑
不知道花多长时间能将传奇私服的源代码看懂呢
早期的老毒版,完全找不到头绪。用了半年时间看了delphi的基础入门,现在看了一个wil文件查看器的源码,跟着敲了一遍。对于wil文件结构有些了解了,奇怪的是里面每个图片结构的长宽,坐标偏移后都是一个pbyte指针,它指向了哪里??看了下源码,是用的流写入模式,在坐标偏移数据之后直接写入图片的像素数据。读出却是读到一个pbyte里面。这是我对指针没有正确的理解吗。或者说记录和它的实际存储,例如在文件流中的存储不是一个概念。
这里指针是系统分配的,而不是用户可以强制指定的?。它的值是一个地址,可以说是一个房间号,这个房间里面住的几个人,什么人可能是什么指针类型?
而变量,这里说的是简单的变量,最后实际也是一个地址吧,对一个二进制的地址起了一个便于记号的名字。
所以这个wil文件记录,
用一个指针来指向图片的像素数据,
仅仅是一个表示,
而不是在流中读取这个记录
指针的具体值是从流中得不到的。
可以根据图片长宽建立数组做buffer,在长宽,偏移后就读取数据到数组中。
而后将这数组的地址给pbyte ,来构成一个图片的信息记录。
TWMImageInfo = record //图片信息
Width: smallint; // 宽
Height: smallint; // 高
px: smallint; //X 偏移
py: smallint; // Y 偏移
bits: PByte; // 字节指针? 内容?
end;
PTWMImageInfo = ^TWMImageInfo;
|
|