Delphi 的字符及字符串 string、AnsiString、WideString、String[n]、ShortString

//最常用的 string
var
  str: string;   {定义}
begin
  str := ‘万一‘; {赋值}
  ShowMessage(IntToStr(Length(str))); {长度是: 4}
end;

//长字符串 AnsiString; 在当前版本(2007)中的默认状态下, String 就是 AnsiString
var
  str: AnsiString;
begin
  str := ‘万一‘;
  ShowMessage(IntToStr(Length(str))); {长度是: 4}
end;

//宽字符串 WideString (效率不及 AnsiString)
var
  str: WideString;
begin
  str := ‘万一‘;
  ShowMessage(IntToStr(Length(str))); {长度是: 2}
end;

//定长字符串
var
  str1: String[6]; {指定大小不能超过 255}
  str2: String[100];
begin
  {少给了也会占那些内存}
  str1 := ‘万一‘;
  ShowMessage(str1);                   {万一}
  ShowMessage(IntToStr(Length(str1))); {4; 这是字符串的长度}
  ShowMessage(IntToStr(SizeOf(str1))); {7; 这是占内存大小}

  {多给了会被截断}
  str1 := ‘万一的 Delphi 博客‘;
  ShowMessage(str1);                   {万一的}
  ShowMessage(IntToStr(Length(str1))); {6; 这是实际保存的字符串长度}
  ShowMessage(IntToStr(SizeOf(str1))); {7; 这是占内存大小}

  {问题: 不是声明大小为 6 吗? 怎么 SizeOf 是 7 ? }
  {因为定长字符串会多出一个首字节来记忆字符串的实际长度}

  {举例说明, 如果给 str2 按如下赋值, 那它的首字节(str2[0])肯定储存着字符 ‘A‘}
  str2 := ‘iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii‘; {65个}
  ShowMessage(str2[0]);                {A}
  ShowMessage(IntToStr(Ord(str2[0]))); {65; 这是 ‘A‘ 在 ASCII 序列中的序号, 用的就是它}

  {那以后可以用 Ord(str2[0]) 来代替 Length 判断字符串的长度吗? }
  {对定长字符串是可以的; 不但能读取, 还可以像 SetLength 一样设置}
end;

//ShortString; 它相当于 String[255]
var
  str: ShortString;
begin
  str := ‘万一的 Delphi 博客‘;
  ShowMessage(str);                   {万一的 Delphi 博客}
  ShowMessage(IntToStr(SizeOf(str))); {256; 这是大小}
  ShowMessage(IntToStr(Length(str))); {18 ; 这是实际长度}
  ShowMessage(IntToStr(Ord(str[0]))); {18 ; 这是从首字节中取出的长度}
end;
时间: 2024-12-21 07:31:05

Delphi 的字符及字符串 string、AnsiString、WideString、String[n]、ShortString的相关文章

[转载] 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;   ShowMessage(c); {A}   {用 Chr 函数代替 # 符号}   c := Chr

Swift字符与字符串

学习来自<极客学院:Swift中的字符串和集合> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 1 import Foundation 2 3 4 /*******************字符********************/ 5 /* 6 1.单个字符来指定字符常量,如“A”.“9” 7 2.转义字符表示特殊字符常量,如“\n”.“\t” 8 3.使用 \u{n} 的Unicode形式,n代表一个1-8位的十六进制数 9 4.必须用双引号

Delphi与字符编码(实战篇)(MultiByteToWideChar会返回转换后的宽字符串长度)

本文目标: 了解Delphi的字符串类型 字符编码的检测与转换 简体繁体转换 0. 导言 看完“.Net与字符编码(理论篇)”,我们明白了字符是自然语言中的最小单位,在存储和传输的过程中可以使用三种编码方法:ASCII.DBCS以及Unicode.常见的DBCS编码有GB2312.GBK和BIG5,而UTF-8.UTF-16和UTF-32则是最常用的Unicode编码类型. 1. 字符串类型 在Delphi中有两种字符串类型:AnsiString和WideString.AnsiString被称为

Delphi中怎样将字符串按给定字符分隔(类似split函数的功能)

Delphi中怎样将字符串按给定字符分隔(类似split函数的功能) 分类:            Delphi2007-05-16 11:094911人阅读评论(2)收藏举报 delphiintegerstringbutton文本编辑function 今天偶尔要做的Delphi程序,其中涉及到了字符串处理,里面有一个功能类似于VB里的split()函数的功能,于是查了很久才查到些资料,现将这些资料整理一下,方便大家. 首先是一个网友自己编的函数.实现了和split()函数的功能. unit U

字符、字符串和文本的处理之String类型

.Net Framework中处理字符和字符串的主要有以下这么几个类: (1).System.Char类 一基础字符串处理类 (2).System.String类 一处理不可变的字符串(一经创建,字符串便不能以任何方式修改) (3).System.Text.StringBuilder类 一更高效地构建字符串 (4).System.Secureity.SecureString类 一对字符串进行保护操作,它可以保护密码和信用卡资料等敏感字符串. 一.String类型 1.简介 在任何应用程序里面,S

【lua】lua string.match 和 string.split 从字符串中寻找特定字符串并保存

local string = "{1,2,3,4}" local traString=string.match(string , "%d+,%d+,%d+,%d+") --此时tranString = "1,2,3,4",去掉"{","}" string = string.split(tranString , ",") string = {1,2,3,4} string[1]=1 str

Delphi 中Format的字符串格式化使用说明(转)

源:Delphi 中Format的字符串格式化使用说明(转) 一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明: function Format(const Format: string; const Args: array of const): string; overload; 事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,但并不多用

Delphi中stringlist分割字符串的用法

Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaText 2.Delimiter &DelimitedText 3.Names &Values &ValueFromIndex 先看第一个:CommaText.怎么用呢? const constr :String = 'aaa,bbb,ccc,ddd'; var strs :TStrin

Java语言程序设计(基础篇) 第四章 数学函数、字符和字符串

第四章 数学函数.字符和字符串 4.2 常用数学函数 方法分三类:三角函数方法(trigonometric method).指数函数方法(exponent method)和服务方法(service method) 4.4 String类型 String类型不是基本类型,而是引用类型(reference type).