delphi const

参考:http://www.cnblogs.com/tibetwolf/articles/1785744.html

1.const修饰可能会优化编译代码。关于这一点与编译器密切相关,由于变量被const修饰后其内存大小和位置是确定的

2.

简单说,一个const修饰的变量被改变意味着我们需要的是一个“变量”而不是一个“恒定的、不可修改的”的“常量”。
    仔细观察下列定义:
    I const AConst = 2;
    II const AModifiedConst: integer = 3;
    可以发现,I中const修饰的是“2”, II中const修饰的是Integer;除了语义上的约束强调外,I强调了值2不可改变,II强调了类型Integer不可更改。const修饰符是“左结合”操作符。准确的说,这就是Pascal编译器对const的理解。所以,当使用{$J+}和{$J-}编译指令时,I不会发生改变,II会。

补充:

任何变量都是一个内存块,从某种程度上说,const修饰实际上是修饰这个内存块,这种修饰强调两点:1,内存块位置和大小不可以改变;2,内存块内容不可以改变。当仅仅强调1时就是“静态变量”的情况,当二者同时强调时,就是上面I所对应的情况。所以,就我个人而言,我更倾向于Pascal所使用const语义而不是C中使用“静态变量”语义,后者似乎缺少某种一致性,增加了概念。

3.、const是什么?
      const是一个修饰词,来源于英文constant,意思是“常量、恒量、不变的” 的意思。注意!const是一个修饰词,代表一种约束(可能是语义上的,也可能是语法上的),不是“常量”!简单说,“const”不等价“常量”。“常量”是一个名词,const不是!

时间: 2024-07-29 15:15:35

delphi const的相关文章

delphi const的用法

unit RadKeygen; interface uses Classes,SysUtils,Windows; function fun1():string; implementation const iid:Integer=53; CSIDL_PERSONAL = $0005; byte1:array[0..255] of Byte=($00); SHFolderDll = 'SHFolder.dll'; function fun1():string; begin end;

Delphi常用关键字用法详解

absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: string[32]; StrLen: Byte absoluteStr; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin Str := 'abc'; Edit1.Text := IntToStr(StrLen); end; abstr

Delphi 关键字详解

absolute//它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var   Str: string[32];   StrLen: Byte absolute Str; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin   Str := 'abc';   Edit1.Text := IntToStr(StrLen); end; abstract//它允许你创建抽象的方法

delphi关键字

转自:http://www.cnblogs.com/zengyou/p/5842909.html absolute: 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var  Str: string[32];  StrLen: Byte absoluteStr; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin Str :=

【转】Delphi 关键字详解

absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: string[32]; StrLen: Byte absolute Str; //这个声明指定了变量StrLen起始地址与Str相同. //由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度. begin Str := 'abc'; Edit1.Text := IntToStr(StrLen); end; abstract //它允许你创建抽象的方法, 包括有抽

关于delphi软件运行出现Invalid floating point operation的错误的解决办法

关于delphi软件运行出现Invalid floating point operation的错误的解决办法 关于delphi软件运行出现Invalid floating point operation的错误的解决办法软件如果有webbrowser载入网页的时候经常会出现这个错误.这个错误是webbrowser3个Bug之一.具体行程的原因大概我也不知道.基本是如果XP系统编译的,放到vista或者V7就容易出现这个错误.具体解决的办法也是很简单的.查看官方的解决办法如下.When runnin

今天在Delphi7中使用AADOConnection 连接Excel

今天在Delphi中使用ADO连接Excel(以前在一本书看过,复习一下-_-!!),有所收获,不敢独享.第一部分:1. 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DBProvider(这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件),按 "下一步"按钮2. 选择数据库名称.注意:Excel的扩展名是*.xls,而默认文件类型是Microsoft Access 数据

无废话JavaScript(上)

<程序员>2008.09期有一篇名为<无废话ErLang>的文章,这让我想到了许多的诸如“无废话C”.“无废话书评”这类的文章,也想到了JavaScript可没有一篇“无废话”,所以决定开个篇来写这个.与这个决定相关的,索性,这次就写个最简单的吧. 声明一下:如果只想看复杂的东西,不要读这篇文章了. 一.JavaScript最初其实是过程式的 追溯到1.0时代的JavaScript,其实是过程式的.它的基本特性有只有两项,一项是能够直接放在网页的HTML标签中去接管事件,例如: [

delphi中move函数的正确理解(const和var一样,都是传地址,所以Move是传地址,而恰恰不是传值)太精彩了 good

我们能看到以下代码var pSource,pDest:PChar;     len: integer;.......................//一些代码Move(pSource,pDest,len); //错误Move(pSource^,pDest^,len); //正确看起来确实好像是传值,而不是传地址,但是各位别忘了,这不是C,C++,而是DelphiObject Pascal,所以,绝不能从函数调用的方法判断是传值还是串地址!!必须看函数的定义,只有定义才能说明是传值还是传地址,再