b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(46)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

G := F; // 拷贝F到G

I := G; // 调用函数,把结果赋给I

第1个赋值语句把一个过程类型值赋给F,第2个语句把这个值拷贝给另一个变量,第

用的函数并把结果赋给I。因为I是一个整数变量,而不是过程类型,

(它返回一个整数值)。

在一些情况下,如何解释过程变量并不是很清楚,看下面的语句

if F = MyFunction then ...;

在此情况下,F导致函数调用:编译器调用F指向的函数,然后调用函数

规则是,只要过程变量出现在表达式中,它就表示是调用引用的过程或函数。在上面的例子中,若用一个过程(没有返回值),或F引用的函数需要参数,则引发编译错误。要比较

程值,使用

if @F = @MyFunction then ...;

@F把F转换为无类型指针变量,它包含的是地址,@MyFunction返回的是

要取得过程变量的内存地址(而不是它包含的地址),使用@@。比如,

@运算符也可以用来把一个无类型指针值赋给过程变量,比如

var StrComp: function(Str1, Str2: PChar): Integer;

...

@StrComp := GetProcAddress(KernelHandle, 'lstrcmpi');

调用GetProcAddress函数,并使StrComp指向结果。

过程变量可以是nil值,但此时调用它会引发错误。要测试一个过程变量是否被赋值,使用标准函数Assigned:

if Assigned(OnClick) then OnClick(X);

Variant types(变体类型)

Variant types: Overview(概述)

有时,我们需要使用这样的数据:它们的类型是可变的,或者在编译时它们的类型不能确定。在这种情况下,一个选择是使用变体类型作为变量或参数,它们可以在运行时改变类型。变体类型提供了更大的- 66 - 3个语句调用引MyFunction,然后比较结果。F引F和MyFunction的过MyFunction的地址。 返回F的地址。 所以最后的赋值实际上是调用函数@@F

Data types, variables and constants

灵活性,但却比普通变量需要更多的内存,并且操作起来更慢。并且,对变体类型的非法使用会导致运行时错误,而普通变量的此类错误能在编译时被发现。你也可以创建自定义变体类型。

默认情况下,除记录、集合、静态数组、文件、类、类引用和指针外,变体类型能存储任何其它类型的值。pascal 视频教程换句话说,除结构类型和指针外,变体类型能存储其它的任何类型;变体类型能存储接口,并能通过它使用接口的方法和属性(参考Object inteces);变体类型能存储动态数组,也能存储一种特殊的静态数组:变体数组(Variant array)。变体类型能和其它变体类型、整数、实数、字符串和布尔值在表达式和赋值语句中混合使用,编译器自动完成类型转换。

包含字符串的变体类型不能使用索引,也就是说,若V是一个存储字符串的变体类型,则V[1]会导致运行时错误。

你可以通过自定义来扩展变体类型,从而能存储任意值。比如,你可以定义一个使用索引的变体字符串类型,或者让它存储特定的类引用、记录或静态数组。自定义变体类型通过来创建。

变体类型占用16字节的内存,包含一个类型码和一个值(或指向这个值的指针)定。所有的变体类型在创建时被初始化为Unassigned,Null表示未知或没有数据。标准函数VarType返回变体类型的类型码,常量varTypeMask中提取类型码,所以,在下面的例子中


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-46.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 久远寺梦
      久远寺梦

      用航公捣它

    • 钱星宇
      钱星宇

      连伊拉克现政府都不再信任你美爹

      • 董婷婷
        董婷婷

        大东沟海战在日本围着定镇两舰打的情况下

    • 李少鹏
      李少鹏

      主席的话“人不犯我

    热点图片
    拼命载入中...