Delphi中的字符串

423603628

423603628

2016-02-19 20:48

下面图老师小编要跟大家分享Delphi中的字符串,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

Delphi中的字符串

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

——摘自网络

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  一:各种字符串 
  字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参数。由于在Delphi中字符串的定义和使用有各种方式,包括Pascal中典型的字符串(String),Delphi支持的长字符串(ANSIString),类似于C语言的字符数组(Array of Char),指向字符的指针(Pchar)等。下面的文章就跟谈谈这些类型在定义和应用中的区别和注意事项。 
  1. 传统的Pascal字符串 
  在Pascal中,典型的字符串是一定长度的字符序列。每一字符串有一设定的长度(缺省值为255),下面是一个例子: 
  Var 
  Address:String; 
  Code:String[50]; 
  Address是一长度为255的字符串,Code的最大长度为50。 
  传统的Pascal字符串长度不能超过255。 
  可以用字符串连接操作"+"把字符串连接在一起: 
  Result:=String1+String2; 
  2. Delphi中的长字符串 
  Delphi除了支持传统的Pascal短字符串还支持长字符串。长字符称为ANSIString。长字符串动态分配内存,即用字符串时才分配字符串所需内存,所以其长度不受限制。在Delphi中你如果用String1:String作类型说明,则String1既可能是短字符串也可能是长字符串,这取决于编译器中$H开关的设置。默认值为$H+,代表ANSI长字符串,VCL中的组件使用ANSI长字符串。长字符串以null结束,这就说明长字符串与C语言中的以null结束的字符串完全兼容。 
  可以通过SetLength函数设置字符串的最大长度: 
  SetLength(String1,100);用TrimLeft,TrimRight和Trim函数分别来消除字符串开头,结尾和首尾的空白区。 
  3. 类似于C的字符数组 
  可以用以0为起点的数组来存储以null结束的字符串。如下定义: 
  Var 
  Name:Array[0..50] of Char; 
  4. Pchar指针 
  如果Delphi中的Exended Syntax 已经设置(缺省值),以0为起点的字符数组就和指向字符的指针Pchar完全兼容,因为以0为起点的字符数组名即指向该字符数组首字符的指针。可以将字符串直接付值给Pchar指针。例如: 
  var 
  P: PChar; 
  begin 
  P := 'Hello world'; 
  end; 
  这样P就指向存储字符串'Hello world'并以null结束的一块内存。 
  许多Windows的应用程序接口API函数要求用Pchar类型作参数。Pchar指针在使用是首先用GetMem(var P: Pointer; Size: Integer)函数申请分配内存,程序结束时用FreeMem(var P: Pointer[; Size: Integer])函数释放内存。例如: 
  Var WinDir,SysDir:Pchar; 
  Begin 
  GetMem(WinDir,256);{为指针分配内存} 
  GetWindowsDirectory(WinDir,128);{将Windows安装目录放至WinDir} 
  ShowMessage('Windows directory is'+WinDir);{显示结果} 
  End; 
  二:字符串转换 
  以上介绍了Delphi中的四类字符串的定义和使用。由于各类函数对字符串参数类型要求不一,这就需要进行字符串类型转换。 
  1. 可以用StrPas将以null结束的字符串转换为Pascal短字符串。StrpCopy则完成相反的转换。 
  2. 因为长字符串以null结束,所以可以用强制类型转换将长字符串转换成Pchar类型。用法是:Pchar(s),s是一个长字符串。强制类型转换返回一个指向长字符串首字符的指针,并且所指字符串以null 结束。例如: 
  Var 
  Caption,Message:string; 
  Caption:='Hello World!'; 
  Mssage:='This is a test of long string'; 
  MessageBox(0,Pchar(Message),Pchar(Caption),MB_OK); 
  小结:在使用Delphi中的字符串时,要时刻清楚该字符串的类型,以免引起混淆。在理解字符串时要把字符串与指针,内存分配联系起来,加强理解。 
  

展开更多 50%)
分享

猜你喜欢

Delphi中的字符串

编程语言 网络编程
Delphi中的字符串

复制字符串中的字符

编程语言 网络编程
复制字符串中的字符

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

JavaScript中的字符串操作

Web开发
JavaScript中的字符串操作

JavaScript中split字符串函数

Web开发
JavaScript中split字符串函数

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

字符串分割

编程语言 网络编程
字符串分割

关于datagrid中的字符串转换

电脑网络
关于datagrid中的字符串转换

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Delphi与DirectShow&DSPack/在Delphi7.0下安装DSPack

Delphi与DirectShow&DSPack/在Delphi7.0下安装DSPack

Dreamweaver MX 2004从零开始

Dreamweaver MX 2004从零开始
下拉加载更多内容 ↓