Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
ВнизКопировать из мемо Найти похожие ветки
← →
dennis (2009-06-20 02:51) [0]у меня есть мемо где много много текста.....и мне надо скопировать оттуда текст начиная с слова -начало- и до слова -конец-.....вот этот отрезок мне надо скопировать.....причем сами эти слова начало и конец))не надо))брать)подскажите пожалуйста как это сделать))
заранее спасибо
← →
Игорь Шевченко © (2009-06-20 03:08) [1]...сами мы не местные...
RTFM: TMemo.Lines.Text
← →
Германн © (2009-06-20 03:17) [2]
> Игорь Шевченко © (20.06.09 03:08) [1]
>
> ...сами мы не местные...
>
:)
> dennis (20.06.09 02:51)
Это !учебное задание" или ... ?
← →
dennis (2009-06-20 09:58) [3]да почему сразу учебное?
я прочитал руководство.....толком не нашел.....
← →
dennis (2009-06-20 10:23) [4]Злые вы)))ну вот конкретнее на чем я застопился)))
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 символов и он копирует...все это дело в эдит....проблема в том что у мя там всегда может быть различное кол-во симвлов(((как мне сделать атк что б он строго брал до слова -конец-
← →
Anatoly Podgoretsky © (2009-06-20 10:34) [5]Видимо ищешь только слово "-начало-", попробуй найти позицию и второго слова.
← →
dennis (2009-06-20 11:05) [6]проблема вот в этом и есть что я и незнаю как найти позицию второго слова(((
← →
{RASkov} © (2009-06-20 11:19) [7]> [6] dennis (20.06.09 11:05)
Так же как и первое. Pos()-Length(-конец-) Еще есть PosEx но эт не для этого случая, а чтоб знал. если вдруг не знаешь :)
и лучше переделай [4] - там ужасно. :)
← →
{RASkov} © (2009-06-20 11:29) [8]> Так же как и первое. 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;
примерно так....
← →
dennis (2009-06-20 11:48) [9]вау вау )))ничерта не понял)))но спс хоть на этом....
чуточки пояснений бы(( пытался найти что то про эту функцию в инете ничерта не нашел)))
> и лучше переделай [4] - там ужасно. :)
что там такого?
← →
sniknik © (2009-06-20 12:26) [10]> он находит его в мемо добовляю + 20 символов
почему 20? должен найти позицию второго слова и вместо 20 брать разность между второй позицией и первой. ну еще учесть длину самого первого слова, т.к. позиция идет сначала, но подгонки можно потом, сделай хотя бы грубо.
> проблема вот в этом и есть что я и незнаю как найти позицию второго слова(((
что ставит под сомнение самостоятельность написания показанного кода. там то ты ищешь позицию. а поиск другой ничем не отличается. (если у тебя проблема именно со словом "второго" то напиши точно тоже самое и ищи его первым, без того что ищешь сейчас. потом совместишь)
{RASkov} © (20.06.09 11:19) [7]
> Еще есть PosEx но эт не для этого случая
а по моему как раз для этого. или у него конец может быть в любом месте, даже раньше начала, чтобы заново весь текст просматривать?
> пытался найти что то про эту функцию в инете ничерта не нашел
Ctrl+F1
← →
{RASkov} © (2009-06-20 13:52) [11]> [10] sniknik © (20.06.09 12:26)
> а по моему как раз для этого.
Ну фик знает..... если "тэги" разные и второй идет за первым и они одни в тексте, то нафик PosEx не нужен:
BegPos:=Pos(-начало-)+Length(-начало-);
EndPos:=Pos(-конец-);
Resultat:={Trim(}Copy(...,BegPos, EndPos-BegBos){)};
Если одинаковые, то да... PosEx тады можно приделать :)
← →
sniknik © (2009-06-20 14:10) [12]> PosEx тады можно приделать :)
в любом случае. как минимум чтобы не делать одну и ту же работу 2 раза.
> Если одинаковые
и это тоже, т.к. слова для поиска могут вводить (и скорее всего будут) пользователи. лучше делать так чтобы было поуниверсальнее тем более, что тут это же самое и быстрее будет работать.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c