Delphi 中的 Var buffer 开类型参数
来源:互联网 发布:四川广电网络考试试题 编辑:程序博客网 时间:2024/05/16 07:15
以下是在网上收集的一些对无类型参数的说明.个人理解无类型变量就是一个指针.
象Delphi中function Read(var Buffer; Count: Longint): Longint; override;象Buffer这样没有类型的参数究竟应该怎么给参数????
这说明Buffer是通过地址方式传递的,一般说来只要是一段内存区域就行。
var Buffer; const buffer;
这些没类型说明的形参说明是取地址的首地址。
类型 首地址
string string[1]
char 自己
integer 自己
record 自己
array arr[0]
pchar pchar()^
pointer pointer()^
otherPointer otherPointer()^ PInteger()^之类的
一般用首地址的方法或函数除了首地址外,都有一人count的参数,一般我们用
length(string), sizeof(record), sizeof(type) * lengh
如果你在写reocord中有string,请为它分配内存: string[len], or str: array[0..len] of char
Buffer1:Array of char;
Buffer2:Array [0..2048] of char;
Buffer1 和 Buffer2 在使用上是没有区别的,如:
Buffer1[10] 和 Buffer2[10]等价----char 类型
Buffer1 和 Buffer2等价 ----------pointer 类型
所以:
Var Buffer:Array of char;
...
FileStream.Read(Pointer(Buffer),FILEStream.Size);
....
应该改为:
FileStream.Read(Buffer,FILEStream.Size);
同理
Var Buffer:String;
...
FileStream.Read(Pointer(Buffer),FILEStream.Size);
...
应该改为:
FileStream.Read(Buffer,FILEStream.Size);
var表示变参,即在函数中可以改变其值并且返回到调用过程中
var buf就是不指定类型的变参,不管你传入什么类型,函数中一律将其作为字节来对待,
比如传入DWORD,就是4个字节,函数中不知道是DWORD,所以必须用bufsize告诉它是4个字节
这样明白?
相当于让你优雅的传递一个数据指针,基本上接受这类参数的行为大部分就是内存处理,无需理会或在意传进来的数据格式,或者参数的格式预先就知道,只是为了方便。
- Delphi 中的 Var buffer 开类型参数
- delphi var参数探讨
- Delphi 函数参数修饰中的var 、out和const
- Delphi 函数参数修饰中的var 、out和const
- Delphi 函数参数修饰中的var 、out和const
- C#中的var类型
- C#中的var类型
- Delphi学习之函数参数修饰中的var 、out和const
- Delphi反射传入var形式的参数
- C#中的变量类型var
- C#中的变量类型var
- Delphi 函數參數修飾中的var 、out和const
- Delphi中的var、constant、out的区别
- Delphi中的布尔类型
- DELPHI中的记录类型
- Delphi中的数组类型
- Delphi中的布尔类型
- C#中的Var—隐式类型
- BDE and Database Desktop Locking Protocol (TI3160)
- 为什么没有(无线网络配置)这个选项
- Access 错了,还是我傻了
- vi命令路线图
- 旅游网站建站经验
- Delphi 中的 Var buffer 开类型参数
- (转载)中国电信推出首批云计算概念手机
- 获取Access用户定义的表名和各表的字段名
- 三连击问题,希望能继续发现
- ASP.NET WEB窗体从入门到精通详解
- VC中Error spawning cl.exe错误的解决方法
- asp.net 2.0 读写配置文件
- scanf()函数
- 泛型算法基本函数索引