Delphi中的字符串种类以及处理函数[自己整理的,送给大家](0分)

  • 主题发起人 vickymade
  • 开始时间
V

vickymade

Unregistered / Unconfirmed
GUEST, unregistred user!

Delphi中的字符串类型大概可以分为Pascal-Style字符串与Null-Terminated字符串两类。
前者是Object Pascal特有的字符串类型,后者是C语言中惯用的以零字符作为字符串的类型。
Pascal字符串有分为短字符串、长字符串、宽字符串三种,短字符串即与原来的Pascal字符
串完全一样,最长只有255个字符;而长字符串除了拥有短字符串的简便特性以外,主要的
改进是突破了原来字符串的长度限制,而且和C语言有极佳的兼容性。现在的Delphi默认的
字符串类型是长字符串,因此声明String和ANSIString是一样的。
不管是Pascal字符串或者是C字符串,基本上它们都是字符数组,而Pascal语言采用的
String数据类型是的字符串操作变得简便而且易于使用。在使用Delphi做字符串的操作时,
不需要考虑数组问题,因为编译器已经在编译时自动加上了必要的执行代码了。
WideString纪录的是16位的Unicode字符,在大多数情况下,WideString和AnsiString是一
样的,并且Delphi会在必要的时候做AnsiString到WideString的转换工作,不过
WideString执行效率上可能差上一点点。
字符串的存放在内存上是连续的,以C语言来说,他从所在位置的第一个(索引值0)就开始
存放数据,而在字符串数据的最后是以一个零字符来表示字符串的结束;而Delphi的做法是
这样的:Pascla字符串是以索引位置0记录字符串的长度,而其他的索引位置就存放是机的
数据,也因此,Pascal字符串最多存放255个字符[想想这个是为啥,应该能明白]。由于
Pascal字符串的长度是由索引0的数值决定的,当此字符串必须使用到C语言中时,就必须进
行一些转化,使此字符串符合C语言的规范,这些转换包括了字符串开始位置的制定机结尾
零字符的制定两个步骤。
至于PChar数据类型则是一种指针,而此指针是指向字符类型的。因此,可以将字符串中的
任意一个位置指定给PChar类型。
两者的字符串数据的转换使用的函数说明如下:
1. 当Pascal字符串要转化为C语言字符串时,使用的是StrPCopy函数,用法为:
StrPCopy(Pascal字符串,C语言字符串);
2. 当C语言字符串转换为Pascal字符串的时候使用StrPas函数,用法为:
Pascal字符串:=StrPas(C语言字符串);
转换过程中必须注意到墓地短所准备的字符串空间位置是否足够,否则可能引发对内存的不
当存取的错误。
再考虑到Delphi默认的长字符串类型,现在的字符串类型已经默认是长字符串了,而
Delphi对唱字符串也组哦了一些与以往的短字符串不同的改变,这些改变包括:
l 常字符串的字符串容纳长度放宽到2GB
l 载数据格式,索引值为0的位置不再放置字符串长度的数值,并且禁止存取这个
位置的内容。适用于短字符串的函数同样也可以适用于长字符串的操作上。
l 常字符串载编译器的处理过程中,会自动的载文字的结尾处加上一个零字符。
l 常字符串和PChar有相当好的转换兼容性。
下面列举一些常用的字符串处理函数:
l Char(X):返回X参数的字符
l Ord(X):返回X参数所列的序数,一般用来解读字符载ASCII码中的序数。
l Pos(SubStr,Str):返回Str字符串中出现SubStr字符串的位置[整数类型],若
找不到,则返回0,参数为字符串类型。
l StrPos(Str1,Str2):返回Str2在Str1出现的第一个位置的指针,参数的类型
为PCar,若未发现Str2出现的位置,则返回NIL。
l Copy(Str,Index,Count):返回Str参数中,由索引Index所指定开始的Count
数目的字符串,Str可以是字符串或者数组。
l Delete(Str,Index,Count):删除Str字符串中由Index所指定的开始位置的
Count数目的字符。
l Length(Str):返回字符串Str的长度,Str也可以是数组。
l SetLength(Str,NewLen):设置Str字符串的新长度(只能是0~255)或是设置
动态数组的新长度。
l Value(Str,Value,Code):将字符串Str转成数值Value;视转换的类型不同,
Value可能为整数或者实数;Code是转换过程中,发生转或错误的字符位置,若为0,则表示
转换成功。
l Str(Value,Str):将数值Value转成字符串Str。
l Trim(Str)、TrimRight(Str)、TrimLeft(Str):这个就不用说了吧。
l StringOfChar(Char,Count):返回Count个Char字符所组成的字符串。
l StringReplace(Str,OldPattern,NewPattern):将Str字符串中原来的字符串
OldPattern替换成为新字符串NewPattern。
l Insert(S1,S2,Index):将S1字符串插入倒S2中,而S1开始于S2的第Index的位
置。
 
谢谢!!
多整理一些出来共享,大家都谢谢您老!!!
 
收藏........
 
不错,收了。
 
string->pchar pchar(string) strpcopy
pchar->string string(pchar) strpas
 
string->pchar pchar(string)
pchar->string pchar
strpcopy strpas现在可以不用,据说都是为了兼容Delphi1的。
 
谢谢,辛苦
 
谢谢了!
 
谢谢vickymade大侠!我想请教一个问题:我目前是做软件实施和售后服务的,但现在
我想编程,数据库方面的知识我有基础。请问我应该看那些书可以快速入门!非常的感谢
您的指导!!
 
谢谢!希望能在整理一些其它的,谢谢了!
 
To:wljun
首先,我不是大虾,就像一位朋友所说的,大虾们都忙着干活呢,嘿嘿。
学习编程其实很简单,尤其想学习Dlephi,Delphi不但功能强大,而且上手容易。
不过想真正精通的话就没那么容易了,起始杆啥事儿都没那么简单,对吧。
我自己总结出来的经验,多看书、多动手、多思考,别无它法,尤其多动手和多思考
最为重要。努力吧。

TO:
大家,我整理了Nokia手机的指令集[有英文翻译成了中文,不过,肯定有错误啦]
不知大家是不是感兴趣。另外现在我正在用SuperMap进行地理信息系统开发,不过
我的学习笔记都写在了两个小本本上,没时间整里到论坛理,苦恼Ing。
 

Similar threads

回复
0
查看
855
不得闲
回复
0
查看
811
不得闲
S
回复
0
查看
950
SUNSTONE的Delphi笔记
S
顶部