在Delphi7中,字符串本身就是数组,所以没有必要进行转换,可以直接使用的。
需要注意的是,字符串数组中,第一个字符的下标索引号为1,而不是常见的0.
见以下例程:
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
achar:char;
begin
s:='asdf';
achar:=s[3];
showmessage(achar);//这里显示字符d,而不是f
end;
上例中,如果字符是汉字的话,在取数据时,将按字节处理,有可能会遇到取半个汉字的情况。
为了处理汉字等多字节字符,Delphi中有WideString类型,以及WideChar类型的字符。
使用时,将一个完整汉字作为一个元素(而不是两个字节)
见以下例程:
procedure TForm1.Button2Click(Sender: TObject);
var
s:widestring;
achar:widechar;
begin
s:='这里s是一个汉字测试';//假设输入值为asdf
achar:=s[3];
showmessage(achar);//这里显示字符“s”
achar:=s[4];
showmessage(achar);//这里显示字符“是”
end;
var
strlist: TStringList;
str: String;
begin
str:= 'a;b;c;d;e'
strlist:=TStringList.Create;
try
strlist.Delimiter := ';'; //分割符
strlist.CommaText := str; //要分割的字符串
//strlist.strings[0] = a
finally
strlist.Free;
end;
procedure TForm1.StrToArray(str:string);
var
I,strLength : Integer;
arr:Array of char;
begin
setlength(arr, sizeof(str));
for I := 0 to sizeof(str)-1 do
begin
arr[I] := str[I+1];
Edt1.Text := Edt1.Text+' '+arr[I];
end;
end;
strpcopy(value,edit1.text);