Delphi 指针大全
- 5 -
var
fn : PVFN;
//也可以直接在此处定义,如:fn : function (para:Integer):Integer;
hm : HMODULE;
begin
hm := LoadLibrary(’test.dll’);
fn := GetProcAddress(hm, ’Function1’);
fn(2);
FreeLibrary(hm);
end;
附:
Delphi 中指针功能非常强大,所有 c 中能实现的指针 Delphi 中都能实现. 上面认为 Delphi
指针不是强项的只是一种误解(或者对指针的机制一知半解).
由于 Pascal 语言的限制, 用 Delphi 的指针时很多情况下需要强制类型转换. Delphi 中提供
了很多指针类型, 而且非常方便的是你可以自定义自己的指针类型.
一个经验: 要掌握一种数据类型并且能够灵活应用,一个比较好的办法是别考虑什么类型是
什么名字, 而只需要考虑这种类型的变量将占用多少字节. 凡是字节数相同的类型都可以
认为是同一类型 :-), 提供不同类型只是为了编译器能够更方便的查找错误而已. 比如:
Integer, Pointer, PChar, TSmallPoint 甚至 array [0..4] of Char
你都可以把他们当成是同一类型加以使用(有了这种思路, 可以实现很大的程序灵活性和代
码高效性). 所以我很不理解的是 JAVA 中不支持指针(因此我也认为用 JAVA 绝对不可能写
出很高效的程序, 而且会有很多 C/C++/DELPHI 中用一句话可以完成的工作在 JAVA 中需
要用一个复杂过程, 消耗很多额外内存才能达到相同目的). 就事论事, 根据你的问题在
Delphi 中和 C 中的解决方案没什么两样.
http://hi.baidu.com/sswanglei/blog/item/3b55d88bcab41d14c8fc7a94.html
2 delphi 的“引用/值”模型
D 中简单的数据类型(如 integer,char,record 等)无论作为参数还是变量都是按值传递和
使用的,通常称为值类型。值类型也是直接类型,即每个变量都有自己的存储数据的实际的