Delphi中的参数传递方式

原创 2004年10月30日 09:17:00
.参数传递方式:
         Delphi中有自己的参数传递方式,而Windows API也有自己的参数传递方式,那么他们之间有什么不同呢,要如何做到兼容呢,尤其是在编写动态库时?
  (1)cdecl:
     通常是C/C++所使用的参数传递方式,它的传递方式是由右到左,而且当被调用的函数结束之后,将会由调用函数本身来清除堆栈上的参数数据.
  (2)stdcall:
     参数传递方式,也是由右到左,但是当被调用的函数结束之后,则是由被调用函数来清除堆栈上的参数数据,Win32API所有的输出函数都是采用此中参数传递方式
  (3)pascal:
     是Delphi1.0与win16API所使用的参数传递方式,它的传递方式是由左到右,而且由被调用函数来清除堆栈上的参数数据.
  (4)fastcall:
     是Delphi默认所使用的参数传递方式,此种方式在传递参数时把前三个参数放在CPU的EAX,EDX,ECX三个缓存器种,剩下的参数则会由左到右地被取出放到堆栈中,而当被调用的函数结束之       后,则是由被调用函数来清除堆栈上的参数数据.
   注:所以在引用C++动态库中的函数时,要注意参数的传递方式,一般使用stdcall.还要注意字符串类型,C++在传递字符串时,都是采用字符指针的类型(Char *),所以你在Delphi的程序中就必      须使用PCHAR类型,而不是string类型.
版权声明:【敦格作品】,欢迎引用,注明出处:http://blog.csdn.net/shuaihj

Delphi与汇编笔记(3)------关于参数的传递

    //在Delphi圣地中发的贴子,同时也转到这里来。    呵呵,说一下关于参数的传递问题.     在C,C++等语言中函数的参数的进栈顺序是从右向左进行,比如一个函数 int Func1(...
  • suiyunonghen
  • suiyunonghen
  • 2007年11月30日 21:39
  • 1068

关于delphi 的函数调用和参数传递方式深入研究之疑惑

关于delphi 的函数调用和参数传递方式深入研究 delphi 代码如下:program Project1;uses windows, SysUtils;function a(d, dd: word...
  • hui717
  • hui717
  • 2007年09月01日 16:55
  • 1655

Delphi 窗体程序接受命令行参数

1.将自动生成的project代码做如下改造 program Project1; uses Forms, SysUtils, {$R *.res} begin Applicatio...
  • u010219209
  • u010219209
  • 2015年08月27日 10:20
  • 1181

delphi窗体之间的相互传值

效果图如下所示 Form1代码 //定义一个用户信息类 type   TUsersInfo=class     //声明三个全局变量     public        User...
  • wang463584281
  • wang463584281
  • 2014年03月22日 18:17
  • 1012

Delphi 参数传递

1.数值参数  变量和结构被完全拷贝到堆栈中,调用函数接受到的只是一个副本.数值参数传递方式是Delphi的默认方式,也是其他大部分语言的默认参数传递方式(比如C++,VC,java...).形式: ...
  • Vigorcsdn
  • Vigorcsdn
  • 2005年01月21日 10:14
  • 3864

C++的参数传递机制

C++的参数传递机制  C++一共有三种传递方式:值传递(pass by value)、指针传递(pass by pointer)、引用传递(pass by reference)。 关键点:在...
  • yu12345678900
  • yu12345678900
  • 2014年11月20日 22:05
  • 993

C语言三种参数传递方式

C语言中存在三种参数传递方式,分别是值传递,地址传递,引用传递;三种方式之间形式参数的区别到底是什么?三种方式在内存中的操作到底是什么样的? 本文通过几个例子来分析、总结。...
  • u010414589
  • u010414589
  • 2015年11月12日 15:55
  • 632

Java方法中的参数传递方式

在Java语言中,参数传递时,一般存在两种参数传递的规则 1.按值传递(by value) 使用该方式传递的参数,参数原始的值不发生变化 适用范围:八种基本数据类型和...
  • u011499992
  • u011499992
  • 2015年08月04日 19:11
  • 1484

Delphi与WebService

大家都知道C# Webservice技术的出现将各种开发技术和语言完全的融合了,下面就这种融合在C#和delphi之间的交互做一次全面的体现,前者是目前最好的开发平台,后者依然是小型c/s系统的最佳选...
  • panda158
  • panda158
  • 2013年11月27日 16:46
  • 2392

delphi 函数参数传递 默认参数(传值)、var(传址)、out(输出)、const(常数)四类

参数可以分为: 默认参数(传值)、var(传址)、out(输出)、const(常数)四类 {默认参数是传值, 不会被改变}function MyF1(x: Integer): Integer;begi...
  • rznice
  • rznice
  • 2011年11月11日 15:27
  • 10081
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi中的参数传递方式
举报原因:
原因补充:

(最多只允许输入30个字)