Форум: "Начинающим";
Текущий архив: 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