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)+'\');
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’;
对字符串的操作,既可以像数组⼀样访问每个元素,如s[1]表⽰字符串的第1个字符,也可对字符串进⾏整体操作,⽤单引号括起,例如S =’China’;
字符串的实际长度可在O到定义的长度之间动态变化。长度为O的字符串称为空字符串。字符串的实际长度放在字符数组下标为O的位置。
(3)字符串类型的运算
字符串类型能够进⾏⽐较运算和连接运算。字符串的连接运算使⽤“+”,作⽤是将两个字符串连接起来。例如:
s:=’China’+’Nanjing’;//s的结果是’ChinaNanjing’。
Pascal语⾔的字符串⽐较运算中可以使⽤运算符“<、<=、=、>=、>、<>”。关系运算符的优先级低于连接运算符的优先级。
字符串的⽐较是先⽐较两个字符串的第⼀个字符,如果不同,则以该字符⽐较结果为字符串的⽐较结
果;如果相同,继续⽐较第⼆个字符。依此类推,如果前⼏个字符都相同则长度短的字符串⼩,例如:
’AB C’<’.ABCXY’o
注意:在字符串⽐较中,只有当两个字符串长度相等且对应字符完全⼀致时,这两个字符串才被认为是相等的。
(4)字符串操作的过程和函数
procedure inrt(Source:String;var s:String;Index:Integer);
本过程把字符串Source插⼊到字符串s的Index位置上。如果插⼊的结果⼤于s的最⼤长度,则多出的字符将被截掉。例如,st:=’Brain’,则
苏州高博教育Inrt(’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)+'\');
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
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 inrt(Source:String;var s:String;Index:Integer);
本过程把字符串Source插⼊到字符串s的Index位置上。如果插⼊的结果⼤于s的最⼤长度,则多出的字符将被截掉。例如,st:=’Brain’,则
Inrt(’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);