问题?关于字符类型的赋值?(50分)

  • 主题发起人 混世生
  • 开始时间

混世生

Unregistered / Unconfirmed
GUEST, unregistred user!
简单的说吧,
var
edit1:Tedit

c:array[1..30]of char;

begin
c:='AAA'
//这句可以通过
edit1.text:=c
//这句也可以
c:=edit1.text
//这句就不行。为什么。我要怎么作。

知道的人快说,最好详细点。谢谢。
 
c:=PChar(edit1.text)
原因:编译器不会自动转换
 
var
edit1:Tedit

c:array[0..30]of char;
s:string;
begin
c:='AAA'

edit1.text:=c

s:=edit1.text;
c[0]:=s[1]


这样可以。
 
主要是Char和String类型的问题
String赋值给Char要通过PChar转换,楼上有说。
 
同意jopi的,主要是类型不同,通过PCHar类型转换一下就好啦,PChar实际是一个字符串指针,当然string也是啦
 
'AAA'是Const类型
而edit.text相当于string
类似的问题举例来说:
application.messagebox('abc','caption',mb_yesno)可以通过
而下面不可以:
application.messagebox(edit.text,'caption',mb_yesno)
是一个道理
 
to jopi
 我有试过用pchar,但D7会报PAnsiChar 与 array 不批配。所以这个显然不行。

to cjsam
 你的意思是我应该另写一个函数,让函数依次将每一个字符赋值给c吗。如果是的话,那这个分应该给你了,还有没有更好的办法?

to kds
 呵呵,对不起,我了解啊,但是你没有说出成功的方案。

 
MaxLength := Min(High(c)-Low(c)+1,length(edit.text);
for i := 1 to maxLength do c := edit.text;
 
好了,看来只有这样了吧。
 解决办法只有另写一个函数专门用来转换好了。谢谢大家
 
var
edit1:Tedit

c:array[1..30]of char;

begin
c:='AAA'
//这句可以通过
edit1.text:=c
//这句也可以
这样居然可以用?
我记得不是应该有这样一句吗
edit1:=TEdit。Create(application)

Pchar类型赋值给String可以
但是string类型赋值给Pchar不可以
 
to kirinma
 不好意思老兄,你的回复好像不是重点啊。
 var edit1:Tedit那行只是为了说明一下edit1是个文本框而己。
 
顶部