一个基础的问题 ( 积分: 39 )

  • 主题发起人 主题发起人 小飞龙
  • 开始时间 开始时间

小飞龙

Unregistered / Unconfirmed
GUEST, unregistred user!
var
s:string
c:array[0..20] of char

s 跟 c 怎么转换?
 
var
s:string
c:array[0..20] of char

s 跟 c 怎么转换?
 
for i : = 1 to length(s) do
c[i-1] := s;
//------------------------
s := '';
for i := low(c) to high(c) do
s := s + c;
 
string和array[0..20] of char基本上就是一回事。string型的数据也可以用下标的。
 
不是把都用for
可以用其他的吗?

因为c里面存的是文件名,长短不一样? 希望s就是实际的长度
谁有更简单的?
 
s := '';
for i := low(c) to high(c) do
s := s + c;
//-----这就是c的实际长度
 
for i : = 1 to length(s) do
s:=s+C;
 
存文件名应该用string。
 
刚才错了,应该是:
var
s:string
c:array[0..20] of char
//C到S中:
for i:=1 to 20
s:=s+C
//S到C中:
for i:=1 to length(s) do
C:=S[1];
 
s := '';
for i := low(c) to high(c) do
s := s + c;
//-----这就是c的实际长度

这样如果我的c里面只用了10个,后面的没有用到
s的后面会有写“空字符”,我用showmessage看了
length(s)还是20没有变
 
如果要达到你要的效果你可以这样
1,把c设成动态数组如:c : array of char;
用的时候在用setlength设置其长度
后面的方法就和刚才一样
2:先对c进行初始化
for i := low(c) to high(c) do
c := #0;
然后对c赋值后用:
s := '';
for i := low(c) to high(c) do
if c <> #0 then
s := s + c;
 
s := String(c)
不知道你的转换是什么意思,是说把值复制过去,还是就是类型转换的问题?!
 
s->C
Move(s[1],c[1],20);
c->s
setlength(S,20);
move(C[1],s[1],20);
 
大家没有注意到一个问题```
注意了STRING是从1开始,就忘了数组是从0开始的,反之亦然
 
把c设成动态数组如:c : array of char
setlength(c,21)
不管c[0]
或 c:array[1..20] of char
不就行了,从c[0]开始我还是不习惯.
 
将字符数组变为字符串好像可以用 string(字符数组) 这个函数
strpcopy(字符串数组,字符串) 将字符串转换为字符数组。
 
多人接受答案了。
 
后退
顶部