怎样指定字符串长度(30分)

  • 主题发起人 主题发起人 ccweifen
  • 开始时间 开始时间
C

ccweifen

Unregistered / Unconfirmed
GUEST, unregistred user!
PB中有以下语句:
String ls_Password = space(10)
变量ls_Password是某一动态库中函数的一个参数,并指明要10位字符串.
在Delphi中怎么写?
 
var
ls_Password : String
begin
SetLength(ls_Password, 10);
end;

或者
var
ls_Password : String[10]
 
好像不对,如果对ls_password赋值小于10位的字符,
用Length(ls_password)测试还是不到10 .
 
SetLength(ls_Password, 10);
for i:=1 to 10 do ls_Password:=' ';
 
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
begin
s:='dddd';
setlength(s,10);
showmessage(inttostr(length(s)));
end;
 
to : jsxjd

procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
begin
s:='dddd';
setlength(s,10);
showmessage(inttostr(length(s)));
showmessage(s) ; //加这试试, S变为 'ddddusB' why ?
end;
 
setlength(s,10);
FillChar(S, 10, #$20);
 
没有初始化内容。
你可以这样做:

procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
n:integer;
begin
n:=20;
s:='dddd';
if length(s)>=n then setlength(s,10)
else s:=s+stringofchar(' ',n-length(s));
showmessage(inttostr(length(s)));
showmessage('['+s+']') ;

end;
 
为什么大家都忘了标准 PASCAL 啊?
S: String[10];

begin
FillChar(S[1], ' ', 10);
S:= ...
end;
 
PB中分配了10位的空间space(10) ,如果字符不到10位,那么他是以
什么结尾的? 结尾放入' '函数返回不正确 。

 
在PB中和Delphi中一样, 如果字符不到10位, 也是以#0结尾的, 所以你根本不需要
强制10个字符长度...
 
和PB交换数据,用 ShortString 或 PChar ,
后面一般是 0 终止。
 
to tseug :
那个动态库函数指明要10位传入参数,传入时它先判断参数长度,如不到10位就直接
返回参数错误代号 。
 

用字符数组

var
s: array [0..9] of char;
begin
s := '124';
showmessage(inttostr(length(s)))
end;
 
也不对,以#0结尾的字符串传入时都返回参数错误代号 .
 
把PB代码贴出来, 看看
 
To 影子
>>var
>> s: array [0..9] of char;
>>begin
>> s := '124';
>> showmessage(inttostr(length(s)))
>>end;
你老用数组,能不能解释一下上面的代码与
var
s: array [1..9] of char;
begin
s := '124';
showmessage(inttostr(length(s)))
end;
的区别,挑战你!
 

怕怕,我不是老用数组的啊。你上面的代码很显然是不能通过的。
 
谢谢各位
分数不多,每人都有份 :)
 
多人接受答案了。
 
后退
顶部