动态字符数组的疑问,请各位指点下,多谢
动态字符数组的疑问,请各位指点下,谢谢!
程序功能:
把输入到Edit中的字符串的第一个字母用ShowMessage显示出来。假设输入的全为中文。
----------------------------------
疑问:
程序中字义的temp是动态字符数组吧,动态数组的下标是以0开始的吧,但是写成temp[0],
就会出错,这是为什么?“temp:String”定义的不是动态数组吗?谢谢!
-----------------------------------
代码:
procedure TForm1.RzBitBtn1Click(Sender: TObject);
var
temp:String;
begin
temp:=RzEdit1.Text;
ShowMessage(temp[1]);
end;
------解决方案--------------------
1.string第一位存放的是字符串长度
2.如果有汉字的话
procedure TForm1.RzBitBtn1Click(Sender: TObject);
var
temp:wideString;//比较好点
begin
temp:=RzEdit1.Text;
ShowMessage(temp[1]);
end;
------解决方案--------------------
------解决方案--------------------
temp:String;
这样显示中文不行,得WIDEString
------解决方案--------------------
可以认为Delphi中的动态数组和String采用相同的实现机制。
但是毕竟两者还是两个类型,不能直接划=号的,所以开始下标不统一也正常
程序功能:
把输入到Edit中的字符串的第一个字母用ShowMessage显示出来。假设输入的全为中文。
----------------------------------
疑问:
程序中字义的temp是动态字符数组吧,动态数组的下标是以0开始的吧,但是写成temp[0],
就会出错,这是为什么?“temp:String”定义的不是动态数组吗?谢谢!
-----------------------------------
代码:
procedure TForm1.RzBitBtn1Click(Sender: TObject);
var
temp:String;
begin
temp:=RzEdit1.Text;
ShowMessage(temp[1]);
end;
------解决方案--------------------
1.string第一位存放的是字符串长度
2.如果有汉字的话
procedure TForm1.RzBitBtn1Click(Sender: TObject);
var
temp:wideString;//比较好点
begin
temp:=RzEdit1.Text;
ShowMessage(temp[1]);
end;
------解决方案--------------------
------解决方案--------------------
temp:String;
这样显示中文不行,得WIDEString
------解决方案--------------------
可以认为Delphi中的动态数组和String采用相同的实现机制。
但是毕竟两者还是两个类型,不能直接划=号的,所以开始下标不统一也正常