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

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

Копировать из мемо


dennis ©   (2009-06-20 02:51:00) 

у меня есть мемо где много много текста.....и мне надо скопировать оттуда текст начиная с слова -начало- и до слова -конец-.....вот этот отрезок мне надо скопировать.....причем сами эти слова начало и конец))не надо))брать)подскажите пожалуйста как это сделать))
заранее спасибо


sniknik   (2009-06-20 14:10:00) [1]

> PosEx тады можно приделать :)
в любом случае. как минимум чтобы не делать одну и ту же работу 2 раза.

> Если одинаковые
и это тоже, т.к. слова для поиска могут вводить (и скорее всего будут) пользователи. лучше делать так чтобы было поуниверсальнее тем более, что тут это же самое и быстрее будет работать.


{RASkov}   (2009-06-20 13:52:00) [2]

> [10] sniknik ©   (20.06.09 12:26)
> а по моему как раз для этого.

Ну фик знает..... если "тэги" разные и второй идет за первым и они одни в тексте, то нафик PosEx не нужен:
BegPos:=Pos(-начало-)+Length(-начало-);
EndPos:=Pos(-конец-);
Resultat:={Trim(}Copy(...,BegPos, EndPos-BegBos){)};
Если одинаковые, то да... PosEx тады можно приделать :)


sniknik   (2009-06-20 12:26:00) [3]

> он находит его в мемо добовляю + 20 символов
почему 20? должен найти позицию второго слова и вместо 20 брать разность между второй позицией и первой. ну еще учесть длину самого первого слова, т.к. позиция идет сначала, но подгонки можно потом, сделай хотя бы грубо.  

> проблема вот в этом и есть что  я и незнаю как найти позицию второго слова(((
что ставит под сомнение самостоятельность написания показанного кода. там то ты ищешь позицию. а поиск другой ничем не отличается. (если у тебя проблема именно со словом "второго" то напиши точно тоже самое и ищи его первым, без того что ищешь сейчас. потом совместишь)

{RASkov} ©   (20.06.09 11:19) [7]
> Еще есть PosEx но эт не для этого случая
а по моему как раз для этого. или у него конец может быть в любом месте, даже раньше начала, чтобы заново весь текст просматривать?

> пытался найти что то про эту функцию в инете ничерта не нашел
Ctrl+F1


dennis   (2009-06-20 11:48:00) [4]

вау вау )))ничерта не понял)))но спс хоть на этом....
чуточки пояснений бы(( пытался найти что то про эту функцию в инете ничерта не нашел)))


> и лучше переделай [4] - там ужасно. :)

что там такого?


{RASkov}   (2009-06-20 11:29:00) [5]

> Так же как и первое. Pos()-Length(-конец-)

Т.е. так "первое" ищется, а "второе" проще :)

function GetTextTag(AText, BTag, ETag: String): String;
var IBTag: Integer
begin
 Result:='';
 if Всякие праверки на вшивость then Exit;
 IBTag:=Pos(BTag, AText)+Length(BTAg);
 Result:=Copy(AText, IBTag, IBTag-Pos(ETag, AText));
end;
примерно так....


{RASkov}   (2009-06-20 11:19:00) [6]

> [6] dennis   (20.06.09 11:05)

Так же как и первое. Pos()-Length(-конец-) Еще есть PosEx но эт не для этого случая, а чтоб знал. если вдруг не знаешь :)
и лучше переделай [4] - там ужасно. :)


dennis   (2009-06-20 11:05:00) [7]

проблема вот в этом и есть что  я и незнаю как найти позицию второго слова(((


Anatoly Podgoretsky   (2009-06-20 10:34:00) [8]

Видимо ищешь только слово "-начало-", попробуй найти позицию и второго слова.


dennis   (2009-06-20 10:23:00) [9]

Злые вы)))ну вот конкретнее на чем я застопился)))
var
ToFind: string; // сктрока что я ищу
FindIn: string; // где я ищу
Found: integer; // результат поиска
FoundLen: integer; //длинна текста что я нашел
st:string;
begin
ToFind := Label1.Caption; //поисковый запрос
FindIn := Memo1.Text;//сообсвтенно сам текст
FoundLen := Length(Label1.Caption);
Found := Pos(AnsiUpperCase(ToFind), AnsiUpperCase(FindIn));
IF Found > 0 then
begin
Memo1.SelStart:= Found-1;
Memo1.SelLength := 20;
edit1.Text := memo1.SelText;
end;

все бы ничего только.....в лабел я закидываю слово -начало- он находит его в мемо добовляю + 20 символов и он копирует...все это дело в эдит....проблема в том что у мя там всегда может быть различное кол-во симвлов(((как мне сделать атк что б он строго брал до слова -конец-


dennis   (2009-06-20 09:58:00) [10]

да почему сразу учебное?
я прочитал руководство.....толком не нашел.....


Германн   (2009-06-20 03:17:00) [11]


> Игорь Шевченко ©   (20.06.09 03:08) [1]
>
> ...сами мы не местные...
>

:)

> dennis   (20.06.09 02:51)  

Это !учебное задание" или ... ?


Игорь Шевченко   (2009-06-20 03:08:00) [12]

...сами мы не местные...

RTFM: TMemo.Lines.Text


Наверх

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