Вводится три слова. Программа должна поменять местами второе и третье. В моей программе почему-то третье слово переходит в начало, с другими словами вообще ничего не происходит...
procedure cd(var y,s1:string);
begin
y:=copy(s1,1,pos(' ',s1));
delete(s1,1,pos(' ',s1));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s,m,n,z:string;
begin
s:=Edit1.text;
cd(m,s);
cd(n,s);
cd(z,s);
edit1.text:=s;
end;
end.
Другие языки программирования и технологии
Delphi. Строки. Почему не срабатывает программа.
function replace_2_3(s:string):string;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var p2,p3,p4:integer;
begin
Result:= s;
p2:= Pos(' ',s);
if p2 > 0 then begin
p3:= PosEx(' ',s, p2+1);
if (p3>0) and (Length(s) > p3) then begin
p4:= PosEx(' ',s, p3+1);
if p4 = 0 then
p4:= Length(s)
else
Dec(p4);
result:= Copy(s,1,p2);
result:= result + Copy(s,p3+1,p4-p3);
result:= result + ' '+ Copy(s,p2+1,p3-p2-1);
if p4 <> Length(s) then
result:= result + Copy(s,p4+1,Length(s));
end;
end;
end;
function replace_2_3_ver2(s:string):string;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var sl:TstringList;
begin
Result:= s;
sl:= TStringList.Create;
try
sl.Delimiter:= ' ';
sl.DelimitedText:= s;
if (sl.Count > 2) and (sl[2] <> '') and (sl[3] <> '') then begin
result:= sl[2];
sl[2]:= sl[1];
sl[1]:= Result;
Result:= sl.DelimitedText;
end;
finally
sl.free
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
edt1.Text:= replace_2_3(edt1.Text);
//edt1.Text:= replace_2_3_ver2(edt1.Text);
end;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var p2,p3,p4:integer;
begin
Result:= s;
p2:= Pos(' ',s);
if p2 > 0 then begin
p3:= PosEx(' ',s, p2+1);
if (p3>0) and (Length(s) > p3) then begin
p4:= PosEx(' ',s, p3+1);
if p4 = 0 then
p4:= Length(s)
else
Dec(p4);
result:= Copy(s,1,p2);
result:= result + Copy(s,p3+1,p4-p3);
result:= result + ' '+ Copy(s,p2+1,p3-p2-1);
if p4 <> Length(s) then
result:= result + Copy(s,p4+1,Length(s));
end;
end;
end;
function replace_2_3_ver2(s:string):string;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var sl:TstringList;
begin
Result:= s;
sl:= TStringList.Create;
try
sl.Delimiter:= ' ';
sl.DelimitedText:= s;
if (sl.Count > 2) and (sl[2] <> '') and (sl[3] <> '') then begin
result:= sl[2];
sl[2]:= sl[1];
sl[1]:= Result;
Result:= sl.DelimitedText;
end;
finally
sl.free
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
edt1.Text:= replace_2_3(edt1.Text);
//edt1.Text:= replace_2_3_ver2(edt1.Text);
end;
edit1.text:=s;
вот тут неправильно. в эдит вставляешь огрызок
вот тут неправильно. в эдит вставляешь огрызок
Таласбаев Ернар
А что надо?
вроде все правильно не знаю
а другие слова остаются? или только первое?
Я немного подправил:
function replace_2_3(s:string):string;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var p2,p3,p4:integer;
begin
Result:= s;
p2:= Pos(' ',s);
if p2 > 0 then begin
p3:= PosEx(' ',s, p2+1);
if (p3>0) and (Length(s) > p3) then begin
p4:= PosEx(' ',s, p3+1);
if p4 = 0 then
p4:= Length(s)
else
Dec(p4);
result:= Copy(s,1,p2);
result:= result + Copy(s,p3+1,p4-p3);
result:= result + ' '+ Copy(s,p2+1,p3-p2-1);
if p4 <> Length(s) then
result:= result + Copy(s,p4+1,Length(s));
end;
end;
end;
function replace_2_3_ver2(s:string):string;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var sl:TstringList;
begin
Result:= s;
sl:= TStringList.Create;
try
sl.Delimiter:= ' ';
sl.DelimitedText:= s;
if (sl.Count > 2) and (sl[2] <> '') and (sl[3] <> '') then begin
result:= sl[2];
sl[2]:= sl[1];
sl[1]:= Result;
Result:= sl.DelimitedText;
end;
finally
sl.free
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
edt1.Text:= replace_2_3(edt1.Text);
//edt1.Text:= replace_2_3_ver2(edt1.Text);
end;
function replace_2_3(s:string):string;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var p2,p3,p4:integer;
begin
Result:= s;
p2:= Pos(' ',s);
if p2 > 0 then begin
p3:= PosEx(' ',s, p2+1);
if (p3>0) and (Length(s) > p3) then begin
p4:= PosEx(' ',s, p3+1);
if p4 = 0 then
p4:= Length(s)
else
Dec(p4);
result:= Copy(s,1,p2);
result:= result + Copy(s,p3+1,p4-p3);
result:= result + ' '+ Copy(s,p2+1,p3-p2-1);
if p4 <> Length(s) then
result:= result + Copy(s,p4+1,Length(s));
end;
end;
end;
function replace_2_3_ver2(s:string):string;
{меняет местами в s 2-е и 3-е слово, признак разделение слов " "
при условии, что они есть
}
var sl:TstringList;
begin
Result:= s;
sl:= TStringList.Create;
try
sl.Delimiter:= ' ';
sl.DelimitedText:= s;
if (sl.Count > 2) and (sl[2] <> '') and (sl[3] <> '') then begin
result:= sl[2];
sl[2]:= sl[1];
sl[1]:= Result;
Result:= sl.DelimitedText;
end;
finally
sl.free
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
edt1.Text:= replace_2_3(edt1.Text);
//edt1.Text:= replace_2_3_ver2(edt1.Text);
end;
Я хз, но раньше создавал винлоки
Похожие вопросы
- паскаль... строки...функция delete. не подскажете, почему в этой программе она не выполняется,что опять не так тут?(((
- Почему нет такой программы?
- Почему на компонуется программа (Ассемблер)
- ЧТо такое реестр? Почему даже крошечные программы оставляют там записи?
- Почему не работает программа?
- Почему в этой программе переменная объявлена дважды? (C++, WinAPI)
- Как написать программу на Delphi программа которая бы постоянно висело в памяти и через определенное
- Программа на Delphi работает не совсем так...
- Напишите программу для С++, которая заменяет в символьной строке все буквы a на буквы b, буквы A на буквы B ...
- Где можно скачать программу созданную в Delphi?