以下是在网上收集的一些对无类型参数的说明.个人理解无类型变量就是一个指针.

象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 开类型参数相关推荐

  1. delphi中的单元

    Object Passal的程序结构很特殊,与其它语言如C++,Object Windows等结构都不同.一个Delphi程序由多个称为单元的源代码模块组成.使用单元可以把一个大型程序分成多个逻辑相关 ...

  2. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  3. delphi 中几种多线程操作方式

    在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 主线程又程为UI线程. 进程和线程的主要差别在于它们是不同的操作系统资源管理方式.进程有独立的地址空 ...

  4. Delphi中record的使用

    在Delphi中的Record类型中,与之C语言对应的即是结构体类型(struct),也可能是为了符合C语言或C++程序员的习惯,对于它在Delphi中的应用存在的一些问题进行初步的说明.在Delph ...

  5. DELPHI中鼠标的各种操作

    {鼠标:右击,左击,单击,双击,滚轮,拖曳} Delphi程序设计中的鼠标控制 在Windows环境下,鼠标和键盘是主要的输入设备. 在Delphi中几乎每个对象都具有反映鼠标控制的事件, 这些事件的 ...

  6. Delphi中SendMessage使用说明

    Delphi中SendMessage使用说明 SendMessage基础知识 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数Po ...

  7. DELPHI 中 Window 消息大全使用详解

    Window 消息大全使用详解 导读: Delphi是Borland公司的一种面向对象的可视化软件开发工具. Delphi集中了Visual C++和Visual Basic两者的优点:容易上手.功能 ...

  8. Delphi中的容器类(二)

    TStrings类 出于效率的考虑,Delphi并没有象C++和Java那样将字符串定义为类,因此TList本身不能直接存储字符串,而字符串列表又是使用非常广泛的,为此Borland提供了TStrin ...

  9. Delphi中的线程类

    Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchr ...

最新文章

  1. ASP.NET MVC 过滤器(一)
  2. 人工智能的核心是“算法”,医生才是主角!
  3. Java开发主流框架是什么?
  4. SGI STL 学习笔记二 vector
  5. typedef的一些用途
  6. python建模与仿真控制系统_系统建模与仿真
  7. flash电脑安装包_flash控件下载特色众多flash控件下载使用评估
  8. 单片机和嵌入式系统的区别
  9. Github文件夹下载到本地
  10. 云计算供应商在合同谈判时可能拒绝的三个事项以及要求
  11. 理解计算机3D图形学中的坐标系变换
  12. react讲解(函数式组件,react hook)
  13. MIS WiFi安全相关-aircrack-ng破解WiFi密码
  14. http协议入门之Content-Disposition
  15. 初学者都能看懂的MYSQL索引基础
  16. 图像拼接(十一):双摄像头实时拼接+stitching_detailed
  17. CFD解决一维标量问题(迎风、Lax-Wendroff、TVD、WENO5+3阶Runge-Kutta)
  18. 白嫖freenom免费顶级域名
  19. 【2019-数据结构-课程设计】完成
  20. 2009年国庆节+中秋节 放假啦

热门文章

  1. 2013年全国首届CISA认证培训强化班成功举办
  2. 内存泄露检测工具之DMalloc
  3. linux系统时区设置
  4. web developer tips (74):在 Visual Studio 2008设计器里添加或移除AJAX Extenders
  5. c#Struts框架理念和自制Struts框架下 复杂版
  6. 一级建造师考试通过了 !
  7. clcikhouse Code: 1000. DB::Exception: File not found
  8. Linux cut用法
  9. hdu 4362(单调队列优化dp)
  10. hdu 2047(递推)