Delphi out 参数 string Integer

http://www.delphibasics.co.uk/RTL.asp?Name=Out

http://stackoverflow.com/questions/14507310/whats-the-difference-between-var-and-out-parameters

A var parameter will be passed by reference, and that‘s it.

An out parameter is also passed by reference, but it‘s assumed that the input value is irrelevant.

out参数也是以引用传递,但是假定输入值是不相关的。

For managed types, (strings, Interfaces, etc,) the compiler will enforce this, by clearing the variable before the routine begins, equivalent to writing param := nil.

对(生存期自动)管理的类型(字符串,接口,等),编译器会强制在routine开始前清空out变量,登录写参数为空。

For unmanaged types, the compiler implements out identically to var.

对非管理类型,编译器实现out等同于var参数。

Note that the clearing of a managed parameter is performed at the call-site and so the code generated for the function does not vary with out or var parameters.

说明,对受管理类型参数的清理是在 调用位置 进行的,所以 为被调用函数产生的代码 不包括out或者var参数。

share|edit

edited Jan 24 ‘13 at 19:05

David Heffernan
316k22396683
answered Jan 24 ‘13 at 17:38

Mason Wheeler

procedure testout(const str: string; out a: string; out I: Integer);
begin
ShowMessage(a + IntToStr(I));//100  a是空的
a := str;
I := 200;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s, ss, ds, qx, dz: string;
I: Integer;
jo: ISuperObject;
begin
s := ‘外面‘;
ss:= ‘out‘;
I:= 100;
testout(s, ss, I);
ShowMessage(ss + IntToStr(I));//外面200

Exit;

end;

  

时间: 2024-10-08 20:41:43

Delphi out 参数 string Integer的相关文章

delphi 属性 参数 新注释

delphi 属性 参数 新注释,在写代码的时候,可以自动看到属性.参数的的备注说明,太方便了. Tmyclass=class /// <summary> /// 姓名 /// </summary> name:string; /// <summary> /// 性别 /// </summary> sex:string; end; var aclass: Tmyclass; begin aclass.name; aclass.sex; 鼠标放上去的时候提示 写

string integer == equals 转

java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equa

CharsRefIntHashMap并不比HashMap&lt;String, Integer&gt;快

我模仿lucene的BytesRef写了一个CharsRefIntHashMap,实测效果并不如HashMap<String, Integer>.代码如下: package com.dp.arts.lucenex.utils; import org.apache.lucene.util.CharsRef; public interface CharsRefIntMap { public static abstract class CharsRefIntEntryAccessor { publi

String,Integer,int类型之间的相互转换

String, Integer, int 三种类型之间可以两两进行转换 1. 基本数据类型到包装数据类型的转换 int -> Integer (两种方法) Integer it1 = new Integer(int a); //封装的基本原理 Integer it2 = Integer.valueOf(int a); int -> String String s2=10+""; 2.  包装数据类型到基本数据类型的转换 String -> int int i4=Int

CharsRefIntHashMap并不比HashMap&amp;lt;String, Integer&amp;gt;快

我模仿lucene的BytesRef写了一个CharsRefIntHashMap,实測效果并不如HashMap<String, Integer>.代码例如以下: package com.dp.arts.lucenex.utils; import org.apache.lucene.util.CharsRef; public interface CharsRefIntMap { public static abstract class CharsRefIntEntryAccessor { pub

main方法中参数&quot;String[ ] args&quot;详解

1.在编写完一个有主方法的java文件时,需要在cmd窗口中先编译此java文件(javac xxx.java),然后再运行(java xxx) 其实在运行java xxx的时候如果后面跟着参数用空格分开,则将这参数保存到了String类型的数组中也就是main方法 的参数String [] args中 2.方法测试 public class HelloWorld { public static void main(String[] args) { if(args.length != 2){ S

Delphi var参数引用 随笔

在用Delphi封装Dll的时候,参数为Pchar,接口函数如下: function TestDll(priKey, oldStr, newStr: PChar): Integer; stdcall; 其中第三个参数newStr,为返回参数,现有两种写法: 1.指针传递,分配内存空间,传入指针地址,改变所指向内容: function TestDll(priKey, oldStr, newStr: PChar): Integer; stdcall; var sTemp: string; begin

String,Integer,int类型之间转换总结

今天学习了封装的知识理念,关于自动装箱和拆箱等手段来改变数据类型感到十分有意思,同时之间的相互转换也值得我们去牢记,当然,在工作中熟能生巧,只是为了梳理一下知识点,供大家参考: 自java7以后已经实现了自动装箱和自动拆箱,int和Integer之间的转换已经可以实现自动 下面是实际的操作代码 1 public class Integer04{ 2 public static void main(String[] args){ 3 //int--->Integer 4 Integer i1=In

C# static void Main(String[] args) 中参数String[] args 的理解

定义一个String[]类型的数组args,表示从命令行传入的参数(类似于Java) ,假如在命令行输入: 1 d:\A.exe a ab abc 表示在d盘的根目录下执行A.exe 这个可执行文件,传入参数有3个分别是 a ab abc   ,即args[0]="a"  , args[1]="ab" ,args[2]="abc"