|
Вопрос # 6 208/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
подскажите пожалуйста как через компонент webbrowser вырезать часть кода страницы. А именно вырезать каптчу. через браузер Опера нажимаю проинспектировать элемент и мне предоставляется код выбранного элемента. Но код этого элемента отсутствует в обычном коде страницы. Вот и хочу узнать как найти то, что находит через оперу и удалить этот элемент - каптчу с помощью функций delphi
 |
Вопрос задал: skew (статус: Посетитель)
Вопрос отправлен: 25 июня 2012, 14:44
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 36; последнее сообщение — 27 июня 2012, 08:16; участников в обсуждении: 2.
Страницы: [« Предыдущая] [1] [2]
|
min@y™ (статус: Доктор наук), 25 июня 2012, 19:27 [#21]:
Цитата (skew):
тут так же говорят как удалить от нужного место и сколько символов
Правильно.
Цитата (skew):
но как удалить от символа до символа не говорят
Для поиска нужных позиций как раз существует функция Pos(), в которую я тебя и пихаю уже весь вечер, а ты не хочешь (или не можешь?) этого понять.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
25 июня 2012, 22:46: Вопрос перемещён из тематического раздела Delphi » Работа с компонентами и библиотеками в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А. Причина: Судя по обсуждениям в мини-форуме, вопрос скорее сюда.
|
skew (статус: Посетитель), 26 июня 2012, 14:50 [#22]:
можешь на примере показать. так быстрее все анализирую.
|
|
min@y™ (статус: Доктор наук), 26 июня 2012, 15:08 [#23]:
Цитата (skew):
можешь на примере показать. так быстрее все анализирую.
Хорошо, щас напишу тебе функцию.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 26 июня 2012, 15:18 [#24]:
// Функция удаления фрагмента строки, начиная с первого вхождения подстроки AFrom
// и по первое вхождение подстроки ATo включительно.
// Возвращает модифицированную строку при удачном исходе поиска фрагментов,
// иначе - исходную строку.
function DeleteStringFragment(const Source: string; const AFrom, ATo: string): string;
var
pFrom, pTo: Integer;
begin
pFrom:= Pos(AFrom, Source);
pTo:= Pos(ATo, Source);
if (pFrom <> 0) and (pTo <> 0) and (pFrom < pTo)
then Result:= Copy(Source, 1, pFrom - 1) + Copy(Source, ATo + Length(ATo), MaxInt)
else Result:= Source;
end;
// Ахтунг! Код не отлаживал, писал мелом на заборе!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 26 июня 2012, 16:00 [#25]:
а одной строкой типо
s:=copy(edit1.text,pos('|',edit1.text)+1,3)
но тут копируется от символа | 3 знака
|
|
min@y™ (статус: Доктор наук), 26 июня 2012, 16:18 [#26]:
Цитата (skew):
а одной строкой типо
s:=copy(edit1.text,pos('|',edit1.text)+1,3)
но тут копируется от символа | 3 знака
Ну так ты и написал копирование трёх символов после "|". А хотел-то чего?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 26 июня 2012, 16:22 [#27]:
ну тут копирование именно трех символов, а я хотел, например текст edit1 будет равен |asdfasd| и вот кусок который именно между символами | | копировать
|
|
min@y™ (статус: Доктор наук), 26 июня 2012, 16:44 [#28]:
Цитата (skew):
ну тут копирование именно трех символов, а я хотел, например текст edit1 будет равен |asdfasd| и вот кусок который между символами | | вырезать
Брррррр, надоел ты мне.
var
p1, p2: Integer;
begin
with edit1 do
begin
p1:= Pos('|', Text);
p2:= PosEx('|', Text, p1 + 1);
if (p1 <> 0) and (p2 <> 0)
then Text:= Copy(Text, 1, p1 - 1) + Copy(Text, p2 + 1, MaxInt);
end;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 26 июня 2012, 16:54 [#29]:
извиняюсь, что такой нуб
|
|
min@y™ (статус: Доктор наук), 26 июня 2012, 17:06 [#30]:
Цитата (skew):
кстати я замечал у меня функция PosEX отказывается работать. [DCC Error] Unit1.pas(151): E2003 Undeclared identifier: 'PosEx'
uses StrUtils;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 26 июня 2012, 17:26 [#31]:
хм , а почему она полностью вырезает первую часть текста вместе с ||, а не копирует то что между ||
|
|
min@y™ (статус: Доктор наук), 26 июня 2012, 21:03 [#32]:
Цитата (skew):
а почему она полностью вырезает первую часть текста вместе с ||, а не копирует то что между ||
Так ты ж этого и хотел: удалить текст между ||.
Цитата (skew):
как удалить нужную часть и после сохранить и использовать готовую форму Цитата (skew):
я немного не понимаю как из середины вырезать от определенного слова и до определенного слова Цитата (skew):
но как удалить от символа до символа
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 26 июня 2012, 21:58 [#33]:
это понятно. не я просто смотрю тут функции copy , а delete отсутствует, но все равно вырезает
|
|
min@y™ (статус: Доктор наук), 26 июня 2012, 22:22 [#34]:
Цитата (skew):
я просто смотрю тут функции copy , а delete отсутствует, но все равно вырезает
Ты меня запутал совсем. Тебе чо надо-то?
Там 2 вызова Copy() и операция "+" (конкатенация). Копирование двух кусков строки: до первого "|" и после второго "|", а потом их соединение в результирующую строку.
Что опять не так?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skew (статус: Посетитель), 26 июня 2012, 22:51 [#35]:
та все так. я просто понять не могу изза чего он их удаляет если там функция copy
|
|
min@y™ (статус: Доктор наук), 27 июня 2012, 08:16 [#36]:
Цитата (skew):
я просто понять не могу изза чего он их удаляет если там функция copy
Полный facepalm! Да потому что там копирование не всей строки, а её двух частей. Допустим, исходная строка такая: "aaa|bbb|ccc". Первый вызов Copy() берёт часть строки до 1-го символа "|", т.е. "aaa", второй вызов Copy() берёт часть строки после 2-го символа "|", т.е. "ссс", затем эти 2 фрагмента складываются (получилось "ааассс") и присваиваются результирующей переменной. Т.к. фрагмент "|bbb|" не копировался, то он и будет вырезан из строки. Чо тут непонятного-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
27 июня 2012, 13:35: Статус вопроса изменён на решённый (изменил автор вопроса — skew)
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|