空字符串赋值给char型

虎滴小猪猪 2009-04-09 03:40:52
我定义了一个char行变量,和一个string型变量。
我要将string型变量赋值给char。我用的是
a:char;
b: string;

a:=b[1];

现在的问题是,当b:=''时,赋值给a时,会出错,如何解决?
...全文
1120 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZCH611407 2009-04-11
  • 打赏
  • 举报
回复
先判断是否是空值,然后进行赋值!
在判断空值的时候,方法很多!
xiaocha 2009-04-11
  • 打赏
  • 举报
回复
关键是如果 b 为空时, 你想怎么办?

1 a = #0
2 提示错误
3 ......

if b='' then
begin
// do anything you want here
end;
NuisT_NeO 2009-04-11
  • 打赏
  • 举报
回复
delphi 不熟的人飘过。。。
java或C里有 双面运算符 ? :
也就是判断后再取值
都已经null了你怎么取到第一位字符呢?非法的
owlet_leo 2009-04-11
  • 打赏
  • 举报
回复
如果你非要那么做,那就在给字符型变量赋值前检测一下。
因为当b为空时,b[1]是不存在的。
starluck 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ljfwyh 的回复:]
引用 1 楼 starluck 的回复:
Delphi(Pascal) code

procedure TForm1.Button1Click(Sender: TObject);
var
A : AnsiChar;
B : AnSiString;
begin
B := '';
A := b[1];
end;


這樣 ???


这样的话,根本不走第二行代码,因为是有问题的。哈哈
[/Quote]

我的意思,你是不是写了这样的代码??
mianju89 2009-04-10
  • 打赏
  • 举报
回复
使用判断语句if 判断b的长度,小于2,则a:='' 否则a:=b[1]
liqxin1977 2009-04-10
  • 打赏
  • 举报
回复
11楼正解
neweipeng 2009-04-10
  • 打赏
  • 举报
回复
当b:=''时, Integer(b) = 0, b[1]取零地址的值,出现非法访问错误

解决办法:
[Quote=引用 4 楼 zxf_feng 的回复:]
判断一下是否未空再赋值吧
[/Quote]
fengylm 2009-04-10
  • 打赏
  • 举报
回复
楼上有广告。。
xudexing 2009-04-10
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
A : AnsiChar;
B : AnSiString;
begin
B := '';
A := b[1];
end;

虎滴小猪猪 2009-04-10
  • 打赏
  • 举报
回复
有人把这个帖子弄成推荐了吗?
哈哈,这个小问题值得弄成这样吗?
h282451687 2009-04-10
  • 打赏
  • 举报
回复
string char =new char
starluck 2009-04-10
  • 打赏
  • 举报
回复


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;


虎滴小猪猪 2009-04-10
  • 打赏
  • 举报
回复
恩,8楼说的对,我是写了类似这样的代码。
jk012cgf 2009-04-10
  • 打赏
  • 举报
回复
如果一定按楼主的去做,不报错,但会产生溢出
jk012cgf 2009-04-10
  • 打赏
  • 举报
回复
其实是类型的转换,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;
十八道胡同 2009-04-10
  • 打赏
  • 举报
回复
你访问了空,用之前先检查一下下标.
a85805a 2009-04-10
  • 打赏
  • 举报
回复
ingyixia
ks_reny 2009-04-09
  • 打赏
  • 举报
回复
a:=vartostr(b[i])
ahjoe 2009-04-09
  • 打赏
  • 举报
回复
if B = '' then
A := #0;
加载更多回复(5)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧