Форум: "Прочее";
Текущий архив: 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]
За Машу отдельные бабки.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.065 c