Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.036 c
15-1159869480
syte_ser78
2006-10-03 13:58
2006.10.29
Помогите разобратся с "инфракрасным" подключением


1-1158509750
MixAnOL
2006-09-17 20:15
2006.10.29
OLEVariant


15-1160148460
Piter
2006-10-06 19:27
2006.10.29
Объявление в метро


2-1161013609
Alex_KV
2006-10-16 19:46
2006.10.29
Про указатели


2-1160740414
ceval
2006-10-13 15:53
2006.10.29
отображалось в реальном времени использывания памяти