Delphi中的字符串

2016-02-19 20:48 13 1 收藏

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

【 tulaoshi.com - 编程语言 】

Delphi中的字符串

(本文来源于图老师网站,更多请访问http://www.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中的字符串时,要时刻清楚该字符串的类型,以免引起混淆。在理解字符串时要把字符串与指针,内存分配联系起来,加强理解。 
  

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

来源:http://www.tulaoshi.com/n/20160219/1624553.html

延伸阅读
(1).String 和StringBuffer对象的创建! (2).String类的常用方法:       length(), charAt(), getchars(), equals(),starsWith(), endsWith(), indexOf(), laseIndex(), substring(),contact()       replace(), valueOf(). (3).StringBuffer类的常用方法: &nbs...
标签: 电脑入门
字符串格式定义 printf()函数 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为: printf("格式化字符串", 参量表); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始...
SQL中也可以用格式字符串定制日期转字符串 -------------------------------------------------------------------------------- 这篇论坛文章(赛迪网技术社区)介绍了SQL Server利用格式字符串定制日期转换为字符串的具体方法,更多内容请参考下文: 在C#中用惯了DateTime.ToString("yyyy-MM-dd"),DateTime.ToString("MM/dd/yyyy")这种日...
create or replace procedure ModifyLadingItemPack (   ASoditemguid varchar2,                  --合同电子仓单明细GUID   ALadingitemGUID varchar2,             &nb...
标签: MySQL mysql数据库
  对于针对字符串位置的操作,第一个位置被标记为1。 ASCII(str) 返回字符串 str 的最左面字符的ASCII代码值。 如果 str 是空字符串,返回 0 。如果 str 是 NULL ,返回 NULL 。 mysql select ASCII('2'); - 50mysql select ASCII(2); - 50mysql select ASCII('dx'); - 100 也可参见ORD()函...

经验教程

935

收藏

52
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部