Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 208

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
подскажите пожалуйста как через компонент webbrowser вырезать часть кода страницы. А именно вырезать каптчу. через браузер Опера нажимаю проинспектировать элемент и мне предоставляется код выбранного элемента. Но код этого элемента отсутствует в обычном коде страницы. Вот и хочу узнать как найти то, что находит через оперу и удалить этот элемент - каптчу с помощью функций delphi

skew Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: skew (статус: Посетитель)
Вопрос отправлен: 25 июня 2012, 14:44
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 36; последнее сообщение — 27 июня 2012, 08:16; участников в обсуждении: 2.

Страницы: [« Предыдущая] [1] [2]

min@y™

min@y™ (статус: Доктор наук), 25 июня 2012, 19:27 [#21]:

Цитата (skew):

тут так же говорят как удалить от нужного место и сколько символов

Правильно.

Цитата (skew):

но как удалить от символа до символа не говорят

Для поиска нужных позиций как раз существует функция Pos(), в которую я тебя и пихаю уже весь вечер, а ты не хочешь (или не можешь?) этого понять.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

25 июня 2012, 22:46: Вопрос перемещён из тематического раздела Delphi » Работа с компонентами и библиотеками в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А. Причина: Судя по обсуждениям в мини-форуме, вопрос скорее сюда.

skew

skew (статус: Посетитель), 26 июня 2012, 14:50 [#22]:

можешь на примере показать. так быстрее все анализирую.
min@y™

min@y™ (статус: Доктор наук), 26 июня 2012, 15:08 [#23]:

Цитата (skew):

можешь на примере показать. так быстрее все анализирую.

Хорошо, щас напишу тебе функцию.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

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

skew (статус: Посетитель), 26 июня 2012, 16:00 [#25]:

а одной строкой типо
s:=copy(edit1.text,pos('|',edit1.text)+1,3)
но тут копируется от символа | 3 знака
min@y™

min@y™ (статус: Доктор наук), 26 июня 2012, 16:18 [#26]:

Цитата (skew):

а одной строкой типо
s:=copy(edit1.text,pos('|',edit1.text)+1,3)
но тут копируется от символа | 3 знака


Ну так ты и написал копирование трёх символов после "|". А хотел-то чего?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
skew

skew (статус: Посетитель), 26 июня 2012, 16:22 [#27]:

ну тут копирование именно трех символов, а я хотел, например текст edit1 будет равен |asdfasd| и вот кусок который именно между символами | | копировать
min@y™

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

skew (статус: Посетитель), 26 июня 2012, 16:54 [#29]:

извиняюсь, что такой нуб
min@y™

min@y™ (статус: Доктор наук), 26 июня 2012, 17:06 [#30]:

Цитата (skew):

кстати я замечал у меня функция PosEX отказывается работать. [DCC Error] Unit1.pas(151): E2003 Undeclared identifier: 'PosEx'

uses StrUtils;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
skew

skew (статус: Посетитель), 26 июня 2012, 17:26 [#31]:

хм , а почему она полностью вырезает первую часть текста вместе с ||, а не копирует то что между ||
min@y™

min@y™ (статус: Доктор наук), 26 июня 2012, 21:03 [#32]:

Цитата (skew):

а почему она полностью вырезает первую часть текста вместе с ||, а не копирует то что между ||

Так ты ж этого и хотел: удалить текст между ||.

Цитата (skew):

как удалить нужную часть и после сохранить и использовать готовую форму

Цитата (skew):

я немного не понимаю как из середины вырезать от определенного слова и до определенного слова

Цитата (skew):

но как удалить от символа до символа
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
skew

skew (статус: Посетитель), 26 июня 2012, 21:58 [#33]:

это понятно. не я просто смотрю тут функции copy , а delete отсутствует, но все равно вырезает
min@y™

min@y™ (статус: Доктор наук), 26 июня 2012, 22:22 [#34]:

Цитата (skew):

я просто смотрю тут функции copy , а delete отсутствует, но все равно вырезает

Ты меня запутал совсем. Тебе чо надо-то?
Там 2 вызова Copy() и операция "+" (конкатенация). Копирование двух кусков строки: до первого "|" и после второго "|", а потом их соединение в результирующую строку.

Что опять не так?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
skew

skew (статус: Посетитель), 26 июня 2012, 22:51 [#35]:

та все так. я просто понять не могу изза чего он их удаляет если там функция copy
min@y™

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]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 апреля 2026, 02:48
Выполнено за 0.03 сек.