一个简单的问题?(50分)

  • 主题发起人 主题发起人 tctomsky
  • 开始时间 开始时间
T

tctomsky

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现这样的功能? 在一个edit1.text:='cat fish panda';要求把
edit1中的内容自动写到 lable1.caption:='cat';
lable2.caption:='fish';
lable3.caption:='panda';
 
var
iPos: Integer;
sTemp: string;
iPos := Pos(' ', Edit1.Text);
if iPos <> 0 then
begin
Lable1.Caption := Copy(edit1.Text, 1, iPos - 1);
sTemp := Copy(edit1.Text, iPos + 1, 255);
iPos := Pos(' ', sTemp);
Lable2.Caption := Copy(sTemp, 1, iPos - 1);
Lable3.Caption := Copy(sTemp, iPos + 1, 255);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
t:array [1..3]of string;
i,j:integer;
begin
for i:=1 to 3do
t:='';
label1.caption:=' ';
label2.caption:=' ';
label3.caption:=' ';
s:=edit1.text;
j:=1;
for i:=1 to length(s)do
if s<>' ' then
t[j]:=t[j]+s
else
begin
j:=j+1;
end;
label1.caption:=t[1];
label2.Caption:=t[2];
label3.Caption:=t[3];
end;
 
liuchuanbo is Right!
 
Agree liuchuanbo
 
就按他们说的办!
 
procedure TForm1.Button1Click(Sender: TObject);
var
str1,str2:string;
i,intlength,intPosition:integer;
begin
str1:=edit1.Text;
intlength:=length(str1);
i:=1;
intPosition:=1;
while i<=3do
begin
intposition:=1;
while (intposition<=intlength)and (str1[intposition]<>' ')do
intposition:=intposition+1;
str2:=copy(str1,1,intposition-1);
if i=1 then
label1.caption:=str2
else
if i=2 then
label2.Caption:=str2
else
label3.Caption:=str2;
str1:=copy(str1,intposition+1,intlength-intposition);
i:=i+1;
end;
end;
该程序的优点是:对单词长度不受限。
由于时间仓促,尚待改进的地方是:对于中间多空格及单词数超过三个未做处理,不过到好改。
 
多人接受答案了。
 
后退
顶部