![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вытащить часть текста из Memo
Демерго © (2010-12-01 13:54:00)Всем привет!
Я хочу вытащить часть текста из Memo. Например:
Тест "Сегодня_хорошая_погода" и надо вытащить слово между "Сегодня_" и "_погода" и вставить в Edit. то есть чтобы текст в Edit = "хорошая".
Заранее большое спасибо!
Inovet (2010-12-02 00:41:00) [21]> [34] Демерго (01.12.10 14:51)
> я пишу ТОЛЬКО для себя и ни для кого более. Мне важен результат
> а не размер и скорость выполнения программы
Так не сколрость и размер, а сам же потом и наступишь в этот код десять раз.
Leonid Troyanovsky (2010-12-01 22:51:00) [22]
> Демерго (01.12.10 13:54)
RTFM: SelText.
--
Regards, LVT.
Демерго (2010-12-01 14:51:00) [23]то Ega23:
я пишу ТОЛЬКО для себя и ни для кого более. Мне важен результат а не размер и скорость выполнения программы в миллисекундах. Но все равно спасибо на добром слове
stas (2010-12-01 14:50:00) [24]Ega23 © (01.12.10 14:45) [27]
точно спасибо. )
Ega23 (2010-12-01 14:49:00) [25]
> Демерго (01.12.10 14:13) [7]
>
> я умею писать простенькие программы по примерам. не просто
> "скопировать код", а понять как оно работает и приспособить
> под свои нужды.
> Демерго (01.12.10 14:48) [30]
>
> мне проще 10 раз этот код прописать и получить результат
> чем разбираться как эти функции потом вызывать правильно
> :) Главное я получил что хотел и тебе спасибо что сразу
> дал пример
Быдлокодер детектед.
Демерго (2010-12-01 14:49:00) [26]то Ega23:
надеюсь это был не сарказм и все будет работать даже с такой строкой как "jsahbfjuhsafdyu" :)
Демерго (2010-12-01 14:48:00) [27]мне проще 10 раз этот код прописать и получить результат чем разбираться как эти функции потом вызывать правильно :) Главное я получил что хотел и тебе спасибо что сразу дал пример
Ega23 (2010-12-01 14:47:00) [28]
> Код уже присобачен и работает :)
Теперь возьми и вместо "Me" задай стартовую строку "jsahbfjuhsafdyu"
И насладись.
stas (2010-12-01 14:46:00) [29]Демерго (01.12.10 14:45) [26]
его надо было как функцию использовать ).
Ega23 (2010-12-01 14:45:00) [30]
> stas © (01.12.10 14:41) [23]
>
> 1. В каком месте?
представь, что Pos(StartStr,Strn) равно 0.
Демерго (2010-12-01 14:45:00) [31]Всем огромнейшее спасибо! особенно stas. Код уже присобачен и работает :)
Выглядит на примере так:
procedure TForm1.Button1Click(Sender: TObject);
var I5,K:Integer; Strn:String;
begin
strn:=form1.Memo1.Lines[0];
i5:=Pos('Me',Strn);
Strn:=Copy (Strn,i5+Length('Me'),Length(Strn)-Length('Me'));
i5:=Pos('o1',Strn);
if i5=0 then
begin
i5:=Length(Strn);
K:=0;
end else k:=Length('o1');
Strn:=Copy (Strn,1,i5-1);
Edit1.Text:=Strn;
end;
После выполнения выдает букву m
stas (2010-12-01 14:43:00) [32]Вообще для таких целей надо юзать RegExpr'ы. А вырезать уже предварительно обработанную строку.
RegExpr - регулярные выражения. Для Delphi есть бесплатная библиотека.
Ega23 (2010-12-01 14:42:00) [33]
> Palladin © (01.12.10 14:37) [22]
У нас подобные задачки на первом курсе давали. Практика показала, что те, кто решил сам - стали программистами. Те, кто не решил - стали манагерами.
stas (2010-12-01 14:41:00) [34]1. В каком месте?
2. Согласен.
Palladin (2010-12-01 14:37:00) [35]основная трабла всех начинающих: внутриголовной компилятор хотелок работает с грубейшими ошибками, его чинить надобно...
кто-то не чинит... вырастает быдлокодер.... задумайся, о аффтар, пока не поздно )
Ega23 (2010-12-01 14:34:00) [36]
> stas © (01.12.10 14:28) [19]
1. В твоём коде ошибка.
2. Вычислять каждый раз Length(StartStr), Length(EndStr) - моветон.
Задача в целом, судя по всему, рекурсивная. Но не надо забывать, что строка неправильной может быть, типа A111 A222 Bddd A fff B
Ega23 (2010-12-01 14:29:00) [37]
> Программа находит текст А, после этого она копирует все
> символы в Edit пока не дойдет до текста Б
Это не сочетается с
> а в твоем примере должно получится 2222 Привет
stas (2010-12-01 14:28:00) [38]задаешь начало строки, конец, результат середина, если начало не найдено вернет начиная с 1-го символа.
Function StrCut (SourceString,StartStr,EndStr:String):String;
Var I,K:Integer; Strn:String;
begin
Result:='';
strn:=SourceString;
i:=Pos(StartStr,Strn);
Strn:=Copy (Strn,i+Length(StartStr),Length(Strn)-Length(StartStr));
i:=Pos(EndStr,Strn);
if i=0 then
begin
i:=Length(Strn);
K:=0;
end else k:=Length(EndStr);
Strn:=Copy (Strn,1,i-1);
Result:=Strn;
end;
Медвежонок Пятачок (2010-12-01 14:27:00) [39]а можно небольшой пример?
Демерго (2010-12-01 14:27:00) [40]Программа находит текст А, после этого она копирует все символы в Edit пока не дойдет до текста Б