Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Вниз

Помогите с МеМО   Найти похожие ветки 

 
Msd   (2008-07-24 09:49) [0]

была задача выбрать нужные куски текста из файла загруженного в Memo. Нужно чтобы выбирались только нужные куски текста, на пример если строка содержит "Саша" далее какой то текст и до строки Содержащей "Наташа", сами эти строки должны тоже остаться при выборке.
использовал код:
var
i : integer;
 check : string;
 sum : string;
begin
for i:=0 to memo1.Lines.Count-1 do begin
   if pos("Саша", memo1.Lines[i])<>0 then check:=memo1.Lines[i];
   if (pos("Наташа", memo1.Lines[i])<>0) then begin
     sum:=memo1.Lines[i];
     memo2.Lines.Add(check);
     memo2.Lines.Add(sum);
   end;
 end;
end;

у меня получается что он выбирает толь "Саша" и "Наташа" :(. Подскажите пожалуйста как быть мастера. Как дописать правильно? Спасибо :)


 
Медвежонок Пятачок ©   (2008-07-24 10:11) [1]

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


 
Johnmen ©   (2008-07-24 10:15) [2]

>Как дописать правильно?

Тут переписывать надо
if posEx("Саша", memo1.Lines.Text,<здесь циклич.переменная>)....
if (posEx("Наташа", memo1.Lines.Text,<здесь циклич.переменная>)...


 
oldman ©   (2008-07-24 10:18) [3]

Даю алгоритм )

1. Проверяем 1 строку
2. Если "Саша" нет, удаляем, возвращаемся к 1
3. Если "Саша" есть, копируем строку в memo2, удаляем
4. Проверяем 1 строку
5. Если "Наташа" нет, копируем строку в memo2, удаляем, возвращаемся к 4
6. Если "Наташа" есть, копируем строку в memo2
7. Все


 
Медвежонок Пятачок ©   (2008-07-24 10:19) [4]

Даю алгоритм )
он неправильный

если найден саша то пока не найдена наташа или не конец списка то ничего копировать и удалять вообще не надо.


 
oldman ©   (2008-07-24 10:22) [5]


> Медвежонок Пятачок ©   (24.07.08 10:19) [4]
> Даю алгоритм )
> он неправильный


Он правильный.
В memo2 перенесутся строки от саши до наташи включительно


 
Медвежонок Пятачок ©   (2008-07-24 10:23) [6]

мужик шерстит лог чата и вырезает переписку саши и наташи.


 
Медвежонок Пятачок ©   (2008-07-24 10:24) [7]

3. Если "Саша" есть, копируем строку в memo2, удаляем

А зачем? Наташа может уже не будет найдена ниже.


 
Медвежонок Пятачок ©   (2008-07-24 10:26) [8]

тем более что может быть вариант

саша бла бла бла
бла бла бла
наташа блабла бла
снова наташа бла бла бла


 
oldman ©   (2008-07-24 10:27) [9]


> for i:=0 to memo1.Lines.Count-1 do begin
>    if pos("Саша", memo1.Lines[i])<>0 then check:=memo1.Lines[i];
>
>    if (pos("Наташа", memo1.Lines[i])<>0) then begin
>      sum:=memo1.Lines[i];
>      memo2.Lines.Add(check);
>      memo2.Lines.Add(sum);
>    end;
>  end;


Здесь ошибка.

Ты добавляешь сашу только если нашел наташу.
При варианте нахождения наташи без саши в memo2 добавляется лабуда


 
oldman ©   (2008-07-24 10:29) [10]


> Медвежонок Пятачок ©   (24.07.08 10:24) [7]
> Медвежонок Пятачок ©   (24.07.08 10:26) [8]



> Нужно чтобы выбирались только нужные куски текста, на пример
> если строка содержит "Саша" далее какой то текст и до строки
> Содержащей "Наташа", сами эти строки должны тоже остаться
> при выборке.


Видимо лабу пишет.
И в исходных данных и саша и наташа есть


 
Медвежонок Пятачок ©   (2008-07-24 10:30) [11]

Самое загадочное :

сами эти строки должны тоже остаться
> при выборке.


Тоже как и какие еще?


 
oldman ©   (2008-07-24 10:40) [12]


> Медвежонок Пятачок ©   (24.07.08 10:30) [11]
> Тоже как и какие еще?


те, что между ними


 
Msd   (2008-07-24 10:43) [13]

Вот именно я и говорю
есть допустим текст

Жил был Саша 5
бла
бла
бла бал
И Наташа 7
далее фигня написана (много :) )
потом опять
Жил был Саша 10
бла
бла
бла бал
И Наташа 54
Задача в том чтобы оставить нужные куски и ни чего лишнего:
Жил был Саша 5
бла
бла
бла бал
И Наташа 7
Жил был Саша 10
бла
бла
бла бал
И Наташа 54 и.т.д Как сделать посдскажите. Спасибо.


 
Медвежонок Пятачок ©   (2008-07-24 10:44) [14]

[8]


 
Медвежонок Пятачок ©   (2008-07-24 10:48) [15]

и что делать если ниже последнего саши много чего есть, но нет наташи?


 
Msd   (2008-07-24 10:51) [16]

если нет Наташи тогда тоже пропускать, нужны только куски Саша Наташа и все что между ними. :)


 
Медвежонок Пятачок ©   (2008-07-24 10:52) [17]

саша
наташа
маша
наташа
конец


 
Медвежонок Пятачок ©   (2008-07-24 10:53) [18]

саша бла бла бла наташа саша
саша
наташа


 
Msd   (2008-07-24 10:53) [19]

твои текст
саша
наташа
маша
наташа
конец
отсюда нужно
саша
наташа
маша
наташа
если идет Саша без наташи тогда тоже не надо


 
Msd   (2008-07-24 10:54) [20]

нет наташа и саша в одной строке не попадаются


 
oldman ©   (2008-07-24 10:54) [21]


> Как сделать посдскажите. Спасибо.


В [3] поменяй:

1. Если memo1 пуст, завершаем, если нет, проверяем 1 строку
6. Если "Наташа" есть, копируем строку в memo2, удаляем, возвращаемся к 1

И переведи на Паскаль.
В результате в memo2 окажется результат, memo1 очистится для дальнейшего использования


 
Медвежонок Пятачок ©   (2008-07-24 10:57) [22]

с больше чем одной наташей не прокатит
у него шаблон "саша.+наташа" д.б. жадный


 
Msd   (2008-07-24 11:00) [23]

блин это значит не получиться да? А можно ли без загрузки в МЕМО? Просто чтобы в файле остались только нужные куски? подскажите как это вообще реализовать. Желательно пример, я же только учусь.. ;)


 
Msd   (2008-07-24 11:20) [24]

Что ни кто не знает :(?


 
Медвежонок Пятачок ©   (2008-07-24 11:25) [25]

ищем сашу.
ищем следующего сашу, а находя наташу, запоминаем номер её строки.
если найдены оба, копируем их и между ними.


 
Msd   (2008-07-24 11:27) [26]

Блин легко сказать. ПОЖАЛУЙСТА исходничек напиши, чтоб я разобрался как это происходит все.... Спасибо..) Надо закончить дело..)


 
Тын-Дын ©   (2008-07-24 11:28) [27]


> Msd   (24.07.08 09:49) 

Проще всего использовать TStrings(TStringList И т.п.).
Для реализации ищи тему в инете "конечные автоматы".


 
oldman ©   (2008-07-24 11:28) [28]


> Msd   (24.07.08 11:27) [26]
> Блин легко сказать. ПОЖАЛУЙСТА исходничек напиши


На лекции надо ходить.
За исходнички надо платить.


 
Msd   (2008-07-24 11:33) [29]

ясно спасибо.


 
Anatoly Podgoretsky ©   (2008-07-24 11:36) [30]

> Медвежонок Пятачок  (24.07.2008 10:19:04)  [4]

Алгоритм правильный, но не оптимальный.


 
Anatoly Podgoretsky ©   (2008-07-24 11:37) [31]

> Медвежонок Пятачок  (24.07.2008 10:23:06)  [6]

Предположение не соответствуею заявленому заданию, он ищет паразитов, которые помешали его диалогу с Наташей, он потом отомстит им.


 
Медвежонок Пятачок ©   (2008-07-24 11:37) [32]

оптимальный по тройной цене :)


 
oldman ©   (2008-07-24 11:38) [33]


> Anatoly Podgoretsky ©   (24.07.08 11:36) [30]
> Алгоритм правильный, но не оптимальный.


Для лабы, думаю, сойдет.
Тем более у автора проблемы даже с переводом оного на Паскаль.


 
Anatoly Podgoretsky ©   (2008-07-24 11:39) [34]

> oldman  (24.07.2008 10:29:10)  [10]

>
> Видимо лабу пишет.
> И в исходных данных и саша и наташа есть
>
Видимо.
А что стоит после слова "есть"


 
Медвежонок Пятачок ©   (2008-07-24 11:39) [35]

да и неправильный он там.
там найдя наташу сразу ищется следующий саша.


 
Anatoly Podgoretsky ©   (2008-07-24 11:39) [36]

> Медвежонок Пятачок  (24.07.2008 10:30:11)  [11]

бла бла бла Саша бла бла бла
Должна остать вся строка, а не Саша бла бла бла


 
Anatoly Podgoretsky ©   (2008-07-24 11:40) [37]

> Msd  (24.07.2008 10:43:13)  [13]

А это уже другое задание, более крупное, более дорогое!


 
Медвежонок Пятачок ©   (2008-07-24 11:41) [38]

ему нужен кусок "саша - последняя маша перед следующим сашей или концом если больше саши нет.


 
Anatoly Podgoretsky ©   (2008-07-24 11:41) [39]

> Msd  (24.07.2008 10:51:16)  [16]

Задание все усложняется и цена тоже, при том не пропорционально, а с коэффициентом бестолковости.


 
Anatoly Podgoretsky ©   (2008-07-24 11:42) [40]

> Msd  (24.07.2008 10:53:19)  [19]

За Машу отдельные бабки.


 
Anatoly Podgoretsky ©   (2008-07-24 11:42) [41]

> Msd  (24.07.2008 10:54:20)  [20]

1 процент скидка


 
Anatoly Podgoretsky ©   (2008-07-24 11:43) [42]

> Медвежонок Пятачок  (24.07.2008 10:57:22)  [22]

саша.+наташа= любовь


 
Anatoly Podgoretsky ©   (2008-07-24 11:43) [43]

> Msd  (24.07.2008 11:00:23)  [23]

Получится, только тут программист нужен.


 
Anatoly Podgoretsky ©   (2008-07-24 11:43) [44]

> Msd  (24.07.2008 11:20:24)  [24]

Перечислите всех поименно.


 
Медвежонок Пятачок ©   (2008-07-24 11:44) [45]

саша.+наташа= любовь

if not Ismale(саша) then = любофь розовая;


 
Anatoly Podgoretsky ©   (2008-07-24 11:45) [46]

> Msd  (24.07.2008 11:27:26)  [26]

Да пожалуйста, ты только цену назови и не здесь, а в форуме Прочее.


 
Vlad Oshin ©   (2008-07-24 12:02) [47]

try try

> if not Ismale(саша) then = любофь розовая;

except
 on EMaleError do
        repeat Маша.Male.Find(fmAny)  until Маша.Заколебаться=true;
 on EFeMaleError do
        repeat Маша.FeMale.Find(fmAny)  until Маша.Заколебаться=true;
finally
 Маша.Любовь.Create(self);
end;


 
Медвежонок Пятачок ©   (2008-07-24 12:03) [48]

until Маша.Заколебаться=true;

Стильно.


 
oldman ©   (2008-07-24 16:14) [49]


> Медвежонок Пятачок ©   (24.07.08 12:03) [48]
> until Маша.Заколебаться=true;
>
> Стильно.


Причем заметь - в обих случаях "Маша.Заколебаться" :)))
То есть, Саша тут сбоку курит...



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.051 c
11-1193513916
Сергей
2007-10-27 23:38
2008.09.14
Проблема с графикой в KOL


2-1217826999
deadteachers
2008-08-04 09:16
2008.09.14
Связи между БД


4-1195550970
guav
2007-11-20 12:29
2008.09.14
Список всех дисков (не томов, именно физических дисков).


3-1205476733
Evgeny V
2008-03-14 09:38
2008.09.14
ADO и параметры


11-1192822029
Вячеслав
2007-10-19 23:27
2008.09.14
Высоту списка в ComboBox?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский