Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите пожалуйста разобрать (что-то не работает) [D6, WinXP]


laser ©   (2003-01-14 21:31:00) 

const str="очень очень надо срочно";
var
p1:word;
s1,s2:string;
begin
p1=pos("крутой",str);
if p1 <= 0 then exit;

while(str[p1] <> " ")
begin
s1:=s1+str[p1];
dec(p1);
end
p1:=pos("крутой",str) + length("надо");

while(str[p1] <> " ")
begin
s2:=s2+str[p1];
inc(p1);
end

получается
s1= "н"
s2= " "

,а должны быть слова

s1= "очень "
s2= "срочно"


МитяЙ2   (2003-01-14 22:18:00) [1]

И заняло-то минуту у меня.


МитяЙ2   (2003-01-14 22:16:00) [2]

Держи код!
Все работает.
Вообще-то не понял какие могут
быть тут проблемы.
Все элементарно!

procedure TForm1.BitBtn1Click(Sender: TObject);
const str="очень очень надо срочно";
var p1:word;
s1,s2:string;
begin
// здесь изменил
p1:=pos("надо",str)-2;
if p1 <= 0 then exit;

while str[p1]<>" " do
begin
s1:=str[p1]+s1;
dec(p1);
end;
// здесь изменил
p1:=pos("надо",str) + length("надо")+1;

// здесь изменил
while p1<=length(str) do
begin
s2:=s2+str[p1];
inc(p1);
end;


Митяй


Mihey   (2003-01-14 22:11:00) [3]

Ну так конечно не правильно!

p1=pos("крутой",str);
if p1 <= 0 then exit;

while(str[p1] <> " ")
begin
s1:=s1+str[p1];
dec(p1);
end

Во первых, str[p1] в первый раз - это буква "н" из слова "надо". А далее идёт пробел, т.е. цикл прекращается. Вот и получаешь "н". Аналогично и со вторым циклом - опять находит пробел после слова надо и цикл вырубается. Используй функцию Copy или вообще разбей всё предложение на слова.


laser   (2003-01-14 21:52:00) [4]

Да я знаю, что для вас это ерунда, ну плиз


laser   (2003-01-14 21:34:00) [5]

извините вместо "крутой" слово "надо"
Правда очень надо


Наверх

Титульная страница Поиск, карта сайта Написать письмо