procedure TForm1.Button1Click(Sender: TObject); var A : AnsiChar; B : AnSiString; begin B := ''; A := b[1]; end; 這樣 ???
if B = '' then A := #0;
procedure TForm1.Button1Click(Sender: TObject); var A : Char; B : String; begin B := ''; if length(B) =0 then A := #0 else A := b[1]; Showmessage(A); end;
string char =new char
procedure TForm1.Button1Click(Sender: TObject); var A : AnsiChar; B : AnSiString; begin B := ''; A := b[1]; end;
当b:=''时, Integer(b) = 0, b[1]取零地址的值,出现非法访问错误解决办法:
使用判断语句if 判断b的长度,小于2,则a:='' 否则a:=b[1]
其实是类型的转换,a:char是一个字符,而b:string为字符串类型,将b数组的值赋给a,是要将b字符串类型转换成字符类型,那么只要将a定义成一个数组就行: var A : array[0..10] of Char; B : String;begin B := ''; StrPCopy(A,B); showmessage(A); end;
关键是如果 b 为空时, 你想怎么办?1 a = #0 2 提示错误 3 ......if b='' then begin // do anything you want here end;
var
A : AnsiChar;
B : AnSiString;
begin
B := '';
A := b[1];
end;
這樣 ???
A := #0;
var
A : Char;
B : String;
begin
B := '';
if length(B) =0 then
A := #0
else
A := b[1];
Showmessage(A);
end;
var
A : AnsiChar;
B : AnSiString;
begin
B := '';
A := b[1];
end;
var
A : array[0..10] of Char;
B : String;begin
B := '';
StrPCopy(A,B);
showmessage(A);
end;
2 提示错误
3 ......if b='' then
begin
// do anything you want here
end;
java或C里有 双面运算符 ? :
也就是判断后再取值
都已经null了你怎么取到第一位字符呢?非法的