Главная страница
    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.53 MB
Время: 0.616 c
2-1160662054
novill
2006-10-12 18:07
2006.10.29
Почему TFileStream.size показывает 0 если файл отрывается


1-1158920867
salexn
2006-09-22 14:27
2006.10.29
обратное событие OnIdle


2-1161021492
serko
2006-10-16 21:58
2006.10.29
NMHTTP


2-1160635467
_RusLAN
2006-10-12 10:44
2006.10.29
Посоветуйте библиотеку для для создания отчетов в Excel


3-1156953026
bmp2006
2006-08-30 19:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский