谈谈 Delphi 的类型与指针[2]
摘要:内存中的数据除了 0 便是 1, 你把它当作图片、字符、数字等等, 那是你的事, 内存只认识 0 和 1. Win32 系统除了使用硬内存以外, 还可以从硬盘上开辟虚拟内存; 因为 Win32 的内存地址范围在 4 个 G 以内(0..232-1), 所以它最多能够给一个应用程序分配 4G 的运行空间; 并且其中的 2G 有系统管理, 实际上程序只有 2G 的自主空间. 还记得有说 Strin...
阅读全文
posted @
2008-03-07 12:10
万一
阅读(8064)
推荐(1) 编辑
谈谈 Delphi 的类型与指针[1]
摘要:先声明: 不要把我说的这些个东西当作教科书, 这都是自己的浅见; 同时希望得到指正. Delphi 的指针分为 "类型指针" 和 "无类型指针" 两类. Delphi 中的类型, 常用的也得有几百个, 我们可以给每种类型定义相应的类型指针. 其实 Delphi 已经为很多类型预定义了指针, 譬如数据类型: Integer 有对应的 PInteger; Char 有对应的 PChar; stri...
阅读全文
posted @
2008-03-07 10:08
万一
阅读(30449)
推荐(4) 编辑
Delphi 的字符及字符串[6] - Char(AnsiChar)、WideChar 与其编码的相互转换
摘要://Char 类型与其编码值的转换: var b: Byte; c: Char; begin b := Ord('A'); {返回: 65} b := Ord(#65); {返回: 65} b := Ord($41); {返回: 65} b := Ord(#$41); {返回: 65} b := Byte('A'); {返回: 65} b := ...
阅读全文
posted @
2008-03-04 11:47
万一
阅读(9884)
推荐(0) 编辑
Delphi 的字符及字符串[5] - 字符串与 Windows API
摘要:Windows API 中的字符串对应这 Delphi 的 PChar(PAnsiChar); 在 API 中使用 Delphi 的字符串还是比较灵活的. 先说赋值: //赋值方法1: 给直接量 begin SetWindowText(Handle, '新标题'); end; //赋值方法2: 定义它要的类型 var p: PChar; begin p := '新标题'; ...
阅读全文
posted @
2008-03-04 00:28
万一
阅读(8288)
推荐(0) 编辑
Delphi 的字符及字符串[4] - 字符串、字符指针与字符数组
摘要://字符串 字符数组 var arr: array[0..5] of Char; str: string; begin {可以把字符串常量直接赋给字符数组; 但超界不行} arr := 'Delphi'; ShowMessage(arr); {Delphi} {可以把字符数组直接赋给字符串变量} str := arr; ShowMessage(str); {...
阅读全文
posted @
2008-03-03 22:30
万一
阅读(15877)
推荐(0) 编辑
Delphi 的字符及字符串[3] - String 中的秘密
摘要://String 的指针地址及实际的内存地址 var str: string; pstr: PString; pc: PChar; begin {在没有给 str 赋值以前, 既然声明了, 就有了指针地址(@str):} ShowMessage(IntToStr(Integer(@str))); {1244652; 这是在栈中的 str 的指针地址} {但现在还没有分配...
阅读全文
posted @
2008-03-03 16:43
万一
阅读(12828)
推荐(0) 编辑
Delphi 的字符及字符串[2] - Char、AnsiChar、WideChar、PChar、PAnsiChar、PWideChar
摘要://单字符 Char、AnsiChar (在目前版本(2007)中, 它们是一回事, 只有 1 字节大小) var c: Char; {Char 类型的取值范围是: #0..#255, 用十六进制表示是: #$0..#$FF} begin {用十进制方式赋值:} c := #65; ShowMessage(c); {A} {用十六进制方式赋值:} c := #$41; ...
阅读全文
posted @
2008-03-03 16:25
万一
阅读(34360)
推荐(1) 编辑
Delphi 的字符及字符串[1] - string、AnsiString、WideString、String[n]、ShortString
摘要://最常用的 string var str: string; {定义} begin str := '万一'; {赋值} ShowMessage(IntToStr(Length(str))); {长度是: 4} end; //长字符串 AnsiString; 在当前版本(2007)中的默认状态下, String 就是 AnsiString var str: AnsiStri...
阅读全文
posted @
2008-03-03 16:22
万一
阅读(26844)
推荐(0) 编辑
一种获取无符号整数最大值的方法:
摘要://一种获取无符号整数最大值的方法: procedure TForm1.Button1Click(Sender: TObject); var {Delphi 标准的无符号整数类型只有三种} num_Byte : Byte; num_Word : Word; num_Cardinal : Cardinal; {Windows API 中相应的类型就太多了, 下...
阅读全文
posted @
2008-02-16 11:36
万一
阅读(5974)
推荐(0) 编辑
初学 Delphi 嵌入汇编[20] - Delphi 的 Integer 类型
摘要:var I: Integer; begin //Integer 类型是4字节(32位)有符号整数, 最高位是符号位, 如果是正数, 符号位是 0、负数的符号位是1 //所以 Integer 的最大值是: 01111111 11111111 11111111 111111112 asm mov I, 01111111111111111111111111111111B; ...
阅读全文
posted @
2008-01-29 11:59
万一
阅读(6791)
推荐(0) 编辑
初学 Delphi 嵌入汇编[19] - Delphi 的无符号整数类型
摘要:var B: Byte; W: Word; C: Cardinal; begin {Byte 是1字节(8位)无符号整型, 其最大值是 111111112} asm mov B, 11111111B; end; ShowMessage(IntToStr(B)); {255} {Word 是2字节(16位)无符号整型, 其最大值是 11111111 11...
阅读全文
posted @
2008-01-29 11:24
万一
阅读(6207)
推荐(0) 编辑
学习结构[记录]类型(9) - 变体结构
摘要:变体结构也就是变体记录, 是一个比较复杂的概念. 专家不提倡使用. 兴趣所致, 我想把它弄明白. 一个最大的无符号整数(Cardinal)是 4294967295, 它的大小是 4 字节, 它的二进制表示是: 11111111 11111111 11111111 11111111 它的低字节的值是 11111111, 也就是十进制的 255 //测试: var c: Cardinal...
阅读全文
posted @
2008-01-09 18:03
万一
阅读(6129)
推荐(0) 编辑
学习结构[记录]类型(8) - 结构嵌套
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton...
阅读全文
posted @
2008-01-09 18:01
万一
阅读(4777)
推荐(0) 编辑
学习结构[记录]类型(7) - 结构也可以有构造函数
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button...
阅读全文
posted @
2008-01-09 16:59
万一
阅读(3429)
推荐(0) 编辑
学习结构[记录]类型(6) - 结构的属性
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button...
阅读全文
posted @
2008-01-09 16:03
万一
阅读(3687)
推荐(0) 编辑
学习结构[记录]类型(5) - 结构的方法
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button...
阅读全文
posted @
2008-01-09 14:50
万一
阅读(3418)
推荐(0) 编辑
学习结构[记录]类型(4) - 结构指针
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton...
阅读全文
posted @
2008-01-09 13:39
万一
阅读(6937)
推荐(0) 编辑
学习结构[记录]类型(3) - 结构间的关系
摘要:type TRec1 = record name: string[12]; age: Word; end; TRec2 = record name: string[12]; age: Word; end; var RecA,RecB: TRec1; RecX,RecY: TRec2; procedure TForm1.Button1C...
阅读全文
posted @
2008-01-09 13:33
万一
阅读(4028)
推荐(0) 编辑
学习结构[记录]类型(2) - 压缩结构
摘要:type TRec1 = record i: Integer; w: Word; end; TRec2 = packed record {压缩结构: 牺牲效率, 减小尺寸} i: Integer; w: Word; end; procedure TForm1.Button1Click(Sender: TObject); begin Show...
阅读全文
posted @
2008-01-09 13:15
万一
阅读(4191)
推荐(0) 编辑
学习结构[记录]类型(1) - 开始
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton...
阅读全文
posted @
2008-01-09 13:05
万一
阅读(5762)
推荐(0) 编辑