delphi的字符串,字符数组

delphi的字符串,字符数组

在delphi中,我们可以使用用两种形式声明的字符串:
string声明的字符串,结尾不含null。
pchar声明的字符串,结尾含有null,这是很多api函数所使用的字符串格式,实际上它是一个指向字符串的 指针
区别有以下几点:
1:可以用lentgh来测量两种字符串中所含有字符个数
2:string声明的字符串第一个字符的下标为1,而pchar声明的字符串下标为0
3:对于string字符串要以直接比较大小,而对pchar字符串来说只能够使用函数strcomp
4:一个pchar+'字符串'将变成string类型的字符串,string类型的字符串可以相加,但pchar类型的字符串 不能相加
string类型与pchar类型的转换:
string---pchar pchar(字符串)
string与pchar的应用:
dr:=stralloc(20);
getsystemdirectory(dr,strbufsize(dr));
dr:=pchar(strpas(dr)+'\calc.exe');
showmessage(dr);
winexec(dr,SW_SHOWNORMAL);

Delphi字符串、PChar与字符数组之间的转换
设有以下三个变量:
var
s:string;
p:pchar;
a:array[1..20] of char;
那么三者之间的转换如下:
1、字符串到PChar
p:=PChar(s);
2、PChar到字符串
s:=p;
3、PChar到字符数组
StrCopy(@a,p);
4、字符数组到PChar
PChar(@a);
5、字符串与字符数组之间的转换就只有通过PChar来中转了。例如下面这个例子:
procedure TForm1.btn1Click(Sender: TObject);
var
str:array[1..10] of char;
begin
StrCopy(@str,PChar(mmo1.Text));
mmo2.Text:=PChar(@str);
end;
DELPHI字符数组 点击: 0   发布日期:2007-8-19 9:10:00 进入论坛
    当数组元素均为字符型时,称这个数组是字符型数组。
    (1)字符数组的类型定义格式
    type< >=array[下标类型]of char;
    例如,type chr=array E 0..9]of char;就定义了一个可存放1 0个字符的一维数组类型chr。
    (2)字符数组的变量定义及使用
    与数组类型变量定义和使用一样,但是它更适合将字符数组作为字符串处理的情形。
    书后所附光盘中E:\delphi\program\exampl比一24,演示了字符数组的使用,输入字符并用字符串输出函数writeln输出到屏幕。
  2.字符串类型    .
  计算机编程中,对字符串的处理占了相当大的比重。Pascal语言提供了字符串类型。使用这种类型的优点是:变量内字符的个数不固定,可上、下浮动,比较灵活。而一般数组元素的个数是固定不变的。此外,它们在内存中的存储方式也不相同。
    (1)字符串类型变量的定义
    字符串类型的数值是一串字符,在Delphi中支持3种类型的字符串:短字符串(Short—String)、长字符串(ANSIString)和宽字符串(WideString)。其中使用最多的是ANSIString类型,ShortString类型主要是与以前的版本兼容,WideString主要用于表达多字节字符组成的字符串,
以便处理像’Unicode之类的字符串。
    定义字符串类型变量的语法格式为:
    var< >:String[长度];
    程序中一般是用String,默认时相关的编译指令为{$H+},这时String表示的是.ANSIString类型,当编译指令为{$H一}时,String表示的是ShortString类型。短字符串所占据的字节数是它的最大长度加1。长字符串是动态分配的字符串,长度只受内存大小的限制。
    例如:
    var s:Strind 1 O];
    (2)字符串变量的操作
    对字符串的操作,既可以像数组一样访问每个元素,如s[1]表示字符串的第1个字符,也可对字符串进行整体操作,用单引号括起,例如S  =’China’;
    字符串的实际长度可在O到定义的长度之间动态变化。长度为O的字符串称为空字符串。字符串的实际长度放在字符数组下标为O的位置。
    (3)字符串类型的运算
    字符串类型能够进行比较运算和连接运算。字符串的连接运算使用“+”,作用是将两个字符串连接起来。例如:
    s:=’China’+’Nanjing’;  //s的结果是’ChinaNanjing’。
    Pascal语言的字符串比较运算中可以使用运算符“<、<=、=、>=、>、<>”。关系运算符的优先级低于连接运算符的优先级。
    字符串的比较是先比较两个字符串的第一个字符,如果不同,则以该字符比较结果为字符串的比较结果;如果相同,继续比较第二个字符。依此类推,如果前几个字符都相同则长度短的字符串小,例如:
    ’AB C’<’.ABCXY’o
    注意:在字符串比较中,只有当两个字符串长度相等且对应字符完全一致时,这两个字符串才被认为是相等的。
(4)字符串操作的过程和函数
    procedure insert(Source:String;var s:String;Index:Integer);
    本过程把字符串Source插入到字符串s的Index位置上。如果插入的结果大于s的最大长度,则多出的字符将被截掉。例如,st:=’Brain’,则Insert(’OK’,st,2)将使“st”变为“BrOKain"。
    ’procedure delete(var s:String;Index,count:Integer);
    该过程从s串中的Index位置开始删去count个字符的子字符串。例如,st::’Brain’,则Delete(st,3,2)将使st变为’Brn’。
    procedure str(x[:Width[:Decimals]];var s);
    该过程将数值x(整型或实型)转换成字符串存放在s中,‘Width是指定宽度的整数,Decimals用来指定小数位数。例如,a:=2.5 E4;则str(a:1 0:4,st)将st的值转换为’25000.0000’。
    procedure val(s;var v;var code:Integer);
    该过程将字符串表达式s转换成对应的整型或实型数值,并存放在v中。s必须是一个表示数值的字符串,并形式上符合数值常数的特征。在转换过程中,如果没有检测出错误,变量code置为O,否则置为第一个出错字符的位置。例如,st:=25.4 E3,x是一个实型变量,则val(st,x,
code)将使x值为25400,code值为0。
    function copy(S;Index,count:Integer):String;
    该函数返回s串中一个从位置Index开始的count个字符的子串。如果Index大于s字符串的长度,那么返回一个空串。倒如,st:=’Brain’,则copy(st,2,2)返回’ra’。
    function concat(sl[,s2,…,sn]:String):String;
    该函数把所有变量表示出的字符串按所给出的顺序连接起来,并返回连接后的值。如果结果字符串的长度大于255(ShortString类型),将产生运行错误。
    function length(S):Integer;
    该函数返回字符串表达式s的长度。
    function pos(substr:String;S:String):Integer;
    该函数返回字符串substr在目标字符串s中的第一次出现的位置。如果substr没有匹配的
串,pos函数的返回值为O。



在delphi中,我们可以使用用两种形式声明的字符串:
string声明的字符串,结尾不含null。
pchar声明的字符串,结尾含有null,这是很多api函数所使用的字符串格式,实际上它是一个指向字符串的 指针
区别有以下几点:
1:可以用lentgh来测量两种字符串中所含有字符个数
2:string声明的字符串第一个字符的下标为1,而pchar声明的字符串下标为0
3:对于string字符串要以直接比较大小,而对pchar字符串来说只能够使用函数strcomp
4:一个pchar+'字符串'将变成string类型的字符串,string类型的字符串可以相加,但pchar类型的字符串 不能相加
string类型与pchar类型的转换:
string---pchar pchar(字符串)
string与pchar的应用:
dr:=stralloc(20);
getsystemdirectory(dr,strbufsize(dr));
dr:=pchar(strpas(dr)+'\calc.exe');
showmessage(dr);
winexec(dr,SW_SHOWNORMAL);

Delphi字符串、PChar与字符数组之间的转换
设有以下三个变量:
var
s:string;
p:pchar;
a:array[1..20] of char;
那么三者之间的转换如下:
1、字符串到PChar
p:=PChar(s);
2、PChar到字符串
s:=p;
3、PChar到字符数组
StrCopy(@a,p);
4、字符数组到PChar
PChar(@a);
5、字符串与字符数组之间的转换就只有通过PChar来中转了。例如下面这个例子:
procedure TForm1.btn1Click(Sender: TObject);
var
str:array[1..10] of char;
begin
StrCopy(@str,PChar(mmo1.Text));
mmo2.Text:=PChar(@str);
end;
DELPHI字符数组 点击: 0   发布日期:2007-8-19 9:10:00 进入论坛
    当数组元素均为字符型时,称这个数组是字符型数组。
    (1)字符数组的类型定义格式
    type< >=array[下标类型]of char;
    例如,type chr=array E 0..9]of char;就定义了一个可存放1 0个字符的一维数组类型chr。
    (2)字符数组的变量定义及使用
    与数组类型变量定义和使用一样,但是它更适合将字符数组作为字符串处理的情形。
    书后所附光盘中E:\delphi\program\exampl比一24,演示了字符数组的使用,输入字符并用字符串输出函数writeln输出到屏幕。
  2.字符串类型    .
  计算机编程中,对字符串的处理占了相当大的比重。Pascal语言提供了字符串类型。使用这种类型的优点是:变量内字符的个数不固定,可上、下浮动,比较灵活。而一般数组元素的个数是固定不变的。此外,它们在内存中的存储方式也不相同。
    (1)字符串类型变量的定义
    字符串类型的数值是一串字符,在Delphi中支持3种类型的字符串:短字符串(Short—String)、长字符串(ANSIString)和宽字符串(WideString)。其中使用最多的是ANSIString类型,ShortString类型主要是与以前的版本兼容,WideString主要用于表达多字节字符组成的字符串,
以便处理像’Unicode之类的字符串。
    定义字符串类型变量的语法格式为:
    var< >:String[长度];
    程序中一般是用String,默认时相关的编译指令为{$H+},这时String表示的是.ANSIString类型,当编译指令为{$H一}时,String表示的是ShortString类型。短字符串所占据的字节数是它的最大长度加1。长字符串是动态分配的字符串,长度只受内存大小的限制。
    例如:
    var s:Strind 1 O];
    (2)字符串变量的操作
    对字符串的操作,既可以像数组一样访问每个元素,如s[1]表示字符串的第1个字符,也可对字符串进行整体操作,用单引号括起,例如S  =’China’;
    字符串的实际长度可在O到定义的长度之间动态变化。长度为O的字符串称为空字符串。字符串的实际长度放在字符数组下标为O的位置。
    (3)字符串类型的运算
    字符串类型能够进行比较运算和连接运算。字符串的连接运算使用“+”,作用是将两个字符串连接起来。例如:
    s:=’China’+’Nanjing’;  //s的结果是’ChinaNanjing’。
    Pascal语言的字符串比较运算中可以使用运算符“<、<=、=、>=、>、<>”。关系运算符的优先级低于连接运算符的优先级。
    字符串的比较是先比较两个字符串的第一个字符,如果不同,则以该字符比较结果为字符串的比较结果;如果相同,继续比较第二个字符。依此类推,如果前几个字符都相同则长度短的字符串小,例如:
    ’AB C’<’.ABCXY’o
    注意:在字符串比较中,只有当两个字符串长度相等且对应字符完全一致时,这两个字符串才被认为是相等的。
(4)字符串操作的过程和函数
    procedure insert(Source:String;var s:String;Index:Integer);
    本过程把字符串Source插入到字符串s的Index位置上。如果插入的结果大于s的最大长度,则多出的字符将被截掉。例如,st:=’Brain’,则Insert(’OK’,st,2)将使“st”变为“BrOKain"。
    ’procedure delete(var s:String;Index,count:Integer);
    该过程从s串中的Index位置开始删去count个字符的子字符串。例如,st::’Brain’,则Delete(st,3,2)将使st变为’Brn’。
    procedure str(x[:Width[:Decimals]];var s);
    该过程将数值x(整型或实型)转换成字符串存放在s中,‘Width是指定宽度的整数,Decimals用来指定小数位数。例如,a:=2.5 E4;则str(a:1 0:4,st)将st的值转换为’25000.0000’。
    procedure val(s;var v;var code:Integer);
    该过程将字符串表达式s转换成对应的整型或实型数值,并存放在v中。s必须是一个表示数值的字符串,并形式上符合数值常数的特征。在转换过程中,如果没有检测出错误,变量code置为O,否则置为第一个出错字符的位置。例如,st:=25.4 E3,x是一个实型变量,则val(st,x,
code)将使x值为25400,code值为0。
    function copy(S;Index,count:Integer):String;
    该函数返回s串中一个从位置Index开始的count个字符的子串。如果Index大于s字符串的长度,那么返回一个空串。倒如,st:=’Brain’,则copy(st,2,2)返回’ra’。
    function concat(sl[,s2,…,sn]:String):String;
    该函数把所有变量表示出的字符串按所给出的顺序连接起来,并返回连接后的值。如果结果字符串的长度大于255(ShortString类型),将产生运行错误。
    function length(S):Integer;
    该函数返回字符串表达式s的长度。
    function pos(substr:String;S:String):Integer;
    该函数返回字符串substr在目标字符串s中的第一次出现的位置。如果substr没有匹配的
串,pos函数的返回值为O。

str:=strPas(pchar);

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值