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

Вниз

поиск по тексту с последующим вырезанием кусков   Найти похожие ветки 

 
Sunrice   (2006-10-13 06:12) [0]

Мастера! Такая проблемма:
Имеется фаил, скажем с таким содержанием:

"-*-Мама*-*_**-мыла-**_--*раму*--"

Открываем фаил, заносим его, допустим в TMemo, далее сканируем текст, до -*-. затем заносим "Мама" до символов *-*, в переменную name, продолжаем сканирование до **- и заносим "мыла" до символов -** в переменную title. И последнее, продолжаем сканировать, и по достижению --* заносим "раму" в переменную text, до символов *--.
Проблема в том, что пробелов между символов - нету =/
Уже 3ий день голову ломаю, весь маньюал перерыл, но наверное я плохо знаю англ.


 
Steep ©   (2006-10-13 07:20) [1]

Pos("-*-", (твоя строка))?


 
Думкин ©   (2006-10-13 07:56) [2]

Идем по строке.
Встретили разрешенный символ - добавили его в буфер. Идем дальше.
Встретили запрещенный - если буфер не пуст, сбросили буфер в контейнер, обнулили буфер. Идем дальше.
Дошли до конца - буфер не пуст - сбросили в контейнер.


 
Sunrice   (2006-10-13 09:49) [3]

Steep ©   (13.10.06 07:20) [1]
Я пытался им реализовать, только не знаю, как в POS, можно указать конец считывания. т.е. он обрежет всё что до -*-, а далее?

Думкин ©   (13.10.06 07:56) [2]
А как "идти по строке?"


 
Zeqfreed ©   (2006-10-13 09:53) [4]

> [3] Sunrice   (13.10.06 09:49)

Циклом.


 
Sunrice   (2006-10-13 10:05) [5]

Zeqfreed ©   (13.10.06 09:53) [4]
как?


 
Zeqfreed ©   (2006-10-13 10:09) [6]

> [5] Sunrice   (13.10.06 10:05)

Забыл волшебное «дай код». Может быть, если ты не знаешь что такое цикл, в начале узнать?

for i := 1 to length(Str) do begin
 DoWhateverYouWant;
end;


?


 
Sunrice   (2006-10-13 10:13) [7]

Zeqfreed ©   (13.10.06 10:09) [6]
Наверное я ошибся. Разве это не форум по делфи, а это не топик для начинающих? =/


 
novill ©   (2006-10-13 10:17) [8]

> Проблема в том, что пробелов между символов - нету =/

А зачем тебе пробелы? Если нужны - вставь. Вообще, StringReplace тебе в руки :)


 
Zeqfreed ©   (2006-10-13 10:18) [9]

> [7] Sunrice   (13.10.06 10:13)

Начинающий это не тот, кто купил диск с Delphi за 100 рублей в переходе и сразу побежал задавать вопросы на форум.


 
Sunrice   (2006-10-13 10:20) [10]

novill ©   (13.10.06 10:17) [8]
так мне он и не нужны %)
просто с пробелами легче определить, где конец нужной мне строчки, которую нужно заносить в переменную. А мне именно это и нужно узнать. =/


 
Sunrice   (2006-10-13 10:24) [11]

Zeqfreed ©   (13.10.06 10:18) [9]
Наверное вы меня с кем-то спутали ;) С зеркалом наверно, хотя кто его знает. У вас какие-то проблемы? Если вы не можете ответить на вопрос, не смотря на этом сверну - вниз. Пожалуйста, не отвечайте больше в этой теме.


 
Zeqfreed ©   (2006-10-13 10:27) [12]

> [11] Sunrice   (13.10.06 10:24)

Спасибо за разрешение не отвечать, я весьма польщен. Никаких «сверху вниз», просто «что такой цикл» это не вопрос для обсуждения на форуме. Если есть какие-то конкретные вопросы по реализации, то нужно их и задавать.


 
novill ©   (2006-10-13 10:31) [13]

1. почитай описание Stringreplace
2. замени все свои разделители на #13#10  
3. присвой какому-нибудь StringList"у получившуюся строчку.
Например, memo1.text:=Stringreplace(...);


 
Sunrice   (2006-10-13 10:56) [14]

novill ©   (13.10.06 10:31) [13]
сделал, но это ведь просто заменяет мой разделитель на пустое место?


 
Kolan ©   (2006-10-13 11:13) [15]


> сделал, но это ведь просто заменяет мой разделитель на пустое
> место?

Ну тебе же так легже :)


 
novill ©   (2006-10-13 11:20) [16]


> [14] Sunrice   (13.10.06 10:56)
> novill ©   (13.10.06 10:31) [13]
> сделал, но это ведь просто заменяет мой разделитель на пустое
> место?


КАК ты его выводил? В memo?


 
Sunrice   (2006-10-13 17:52) [17]

novill ©   (13.10.06 11:20) [16]
procedure TForm1.Button1Click(Sender: TObject);
var S,S2:string;
begin
S:=Stringreplace(Memo1.Text,"разделитель1",#10#13,[rfReplaceAll]);
S:=Stringreplace(Memo1.Text,"разделитель2",#10#13,[rfReplaceAll]);
S:=Stringreplace(Memo1.Text,"разделитель3",#10#13,[rfReplaceAll]);
S:=Stringreplace(Memo1.Text,"разделитель4",#10#13,[rfReplaceAll]);
Memo1.Text := S;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.LoadFromFile("text_653.txt");
end;


Мастера, ниужели никто толком ответить не может как идти по строчки, и слова между разделителей, заносить в буффер?


 
Плохиш ©   (2006-10-13 17:58) [18]

[1] + copy + delete + F1


 
Sunrice   (2006-10-13 18:05) [19]

Плохиш ©   (13.10.06 17:58) [18]
Пробовал - неполучается.


 
Плохиш ©   (2006-10-13 18:11) [20]


> Sunrice   (13.10.06 18:05) [19]
> Плохиш ©   (13.10.06 17:58) [18]
> Пробовал - неполучается.

Тогда ничем помочь не могу.

PS. Не желаешь свои пробы показать? Такой банальный вопрос.


 
Zeqfreed ©   (2006-10-13 18:14) [21]

Если сформулируешь что является разделителем.


 
Ketmar ©   (2006-10-13 18:32) [22]

опять на форум пришло неко, которое считает необязательным хотя бы язык выучить. и хамит при этом. не пора ли сделать ещё один раздел -- "<autocensored>"? чтобы подобные вопросы туда отправлять. ибо уровень начинающих всё-таки (сильно мягко говоря) выше. тут уровень подвала... %-(


 
Sunrice   (2006-10-13 18:34) [23]

Пример уже не сохранился, но примерно:

1. Искал первое вхождение символа с троку "StrScan".
2. Искал последнее "StrRScan"
3. Через Delete удалить всё за пределами разделителя.
4. Результат - и есть нужное мне слово.

Выглядит отлично, но идея зачахла на первом пункте, слишком много недочётов =/ Хотя это лучше чем ничего. Можно вновь попробывать так.


 
Kolan ©   (2006-10-13 18:35) [24]


> тут уровень подвала.

Где и стоят, обычно, твои любимые мётлы :)


 
Sunrice   (2006-10-13 18:42) [25]

Ketmar ©   (13.10.06 18:32) [22]
Вы немогли бы подсказать, гле именно я хамил?

Плохиш ©   (13.10.06 18:11) [20]
Sunrice   (13.10.06 18:34) [23]
Есть ли альтерантива StrScan? Он ведь ищет именно вхождение символа, а мне нужно строчки =/


 
Ketmar ©   (2006-10-13 18:42) [26]

>[24] Kolan(c) 13-Oct-2006, 18:35
>Где и стоят, обычно, твои любимые мётлы :)
к сожалению, магазин с мётлами перестал выплачивать мне комисионные (зажрались!). перехожу на магазин с маузерами.


 
Ketmar ©   (2006-10-13 18:45) [27]

>[25] Sunrice 13-Oct-2006, 18:42
>Вы немогли бы подсказать, гле именно я хамил?
смотрим [11]. понимаем, что до уровня Zeqfreed ещё расти и расти. думаем о допустимости хамства тем, кто добровольно тратит своё время на помощь другим. извиняемся. если не дошло -- перечитываем это, потом опять [11].


 
Плохиш ©   (2006-10-13 18:48) [28]


> Sunrice   (13.10.06 18:42) [25]
> Есть ли альтерантива StrScan?

Я уж и не знаю что и как сказать. Чукча - не читател?
goto [1].


 
Sunrice   (2006-10-13 18:50) [29]

А [9], это не оскорблние? Или я должен это терпеть?
Исходя из ответов, которые я получил в данном топике от г. Zeqfreed, боюсь мне сложно будет судить о его уровне.


 
Leonid Troyanovsky ©   (2006-10-13 18:50) [30]


> Sunrice   (13.10.06 06:12)  

> Уже 3ий день голову ломаю, весь маньюал перерыл, но наверное

http://groups.google.com/group/fido7.ru.delphi.chainik/msg/8fc4fba03643023c

--
Regards, LVT.


 
default ©   (2006-10-13 18:50) [31]

извинись перед Zeqfreed и если он примет извинения у тебя будет хоть какой-то шанс в помощи со стороны


 
Плохиш ©   (2006-10-13 18:52) [32]


> Sunrice   (13.10.06 18:50) [29]
> А [9], это не оскорблние?

Прочитал, оскорблений не увидел, обычная константация факта.


 
Ketmar ©   (2006-10-13 18:55) [33]

>[29] Sunrice 13-Oct-2006, 18:50
>А [9], это не оскорблние? Или я должен это терпеть?
не должен. тебя сюда вообще никто не звал. не нравится -- есть много других форумов. Zeqfreed всего лишь констатировал очевидный факт. а чтобы судить об уровне -- попробуй сначала форум почитать. говорят, помогает.

зыж детсад, блин. кажется, воспитывать молодёжь должна бы "семья и школа"... %-(


 
Sunrice   (2006-10-13 18:57) [34]

Удалено модератором



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

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

Наверх





Память: 0.52 MB
Время: 0.06 c
2-1160679520
dreamse
2006-10-12 22:58
2006.10.29
Проблема при перезагрузке


15-1159610047
Сатир
2006-09-30 13:54
2006.10.29
Соц. опрос


2-1160987510
pkm
2006-10-16 12:31
2006.10.29
МЕМО поле


2-1160897410
weeeeee
2006-10-15 11:30
2006.10.29
Нормализовать строку


1-1158744914
Старик
2006-09-20 13:35
2006.10.29
Почтовый клиент по умолчанию





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский