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

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

Вытащить часть текста из Memo


Страницы:   1 2 3

Демерго ©   (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 пока не дойдет до текста Б


Страницы:   1 2 3

Наверх

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