Консультация № 142134
24.08.2008, 21:42
0.00 руб.
0 4 1
В общем создаю программу в которой в эдиты вписываются данные такие как Имя, Фамилия, Емаил, Адресс. При нажатии на баттон загружается компонент WebBrowser со страницей в которой есть формы для ввода этих данных. При процедуре WebBrowser1DocumentComplete пишу следующий код для вставки данных из эдитов в формы на сайте:
if (FillForm(WebBrowser1, 'fname', edit12.text) = False) or
(FillForm(WebBrowser1, 'lname', edit13.text) = False) or
(FillForm(WebBrowser1, 'address3', edit1.text) = False)
then
ShowMessage('Error. Field not available or no Form found.')
else
WebBrowser1.OleObject.Document.forms.item('theform').elements.item('Submit').click;
Нажимается кнопка отправить данные.
Далее открывается страница на которой виден результат, удалась регистрация или нет, НО в этот момент ведь опять происходит WebBrowser1DocumentComplete и следовательно опять ищутся поля для ввода, но страница то другая и этих полей там нет. Следовательно выскакивает ошибка, так вот как можно по другому реализовать эти действия, зделать просто чтоб поля не искались а сразу заполнялись, а при их отсутствии при открытии второй страници с результатом ничего не выводилось.
P.S. страница https://
но это еще не все, далее нужно както прочитать данные о том удалась ли регистрация или нет, я поступил так после того как нажалась кнопка Отправить данные вставил паузу - Delay(6000) чтобы успела открыться страница с результатом, далее идет сохранение кода этой страници в txt, а потом идет поиск по ключевым словам, например если в коде страници найдено слово Thank you то выводится сообщение спасибо за регистрацию иначе регистрация не удалась, НО у некоторых интернет очень медленный и 6 секунд не хватает а выставлять большее ожидание это заставлять других ждать лишнее время. Так вот как поступить в этой ситуации???
На этом мои вопросы на данном этапе закончены, прошу помочь мне, и описать пути возможного решения проблеммы как можно подробнее, так как еще не все компоненты освоил в этом замечательном языке программирования)))

Обсуждение

Неизвестный
24.08.2008, 22:51
общий
это ответ
Здравствуйте, Akahaos!
Вот мои предложения по решению заявленных вами проблем.
По первой проблеме: создаете глобальную логическую переменную. После нажатия на ваш "баттон" устанавливаете ей значение true. Далее во время события WebBrowser1DocumentComplete вы проверяете эту переменную, то делаете описанное в процедуре, привязанной к этому событию, только в том случае, если переменная равна true. В конце процедуры, вызываемой по событию WebBrowser1DocumentComplete обязательно следует установить в false.
По второй проблеме: просто спросите у пользователя тип его модема (сделайте это где-нибудь в настройках или еще как-нить) и в зависимости от этого можно регулировать уже время ожидания. Также можно спросить у пользователя и время, которое он готов ждать.
Неизвестный
24.08.2008, 23:13
общий
По первой проблемме большое спасибо за совет, что то сам не додумался.
А вот по второй делать настройки не выход, нужно как то реализовать чтобы код страницы сохранялся только после полной загрузки страници с результатом, была задумка использовать значение title в webbrowser но он оказался одинаковым в обоих случаях.
Хотя щас подумал ведь вторую ситуацию можно также реализовать через эту глобальную логическую переменную. Попробую так и сделать.
Неизвестный
25.08.2008, 06:01
общий
это cgi сценарий? т.е. библиотека работающая на стороне сервера? Я к тому, что непонятные сложности..
Неизвестный
25.08.2008, 12:46
общий
если можно обойтись без этих сложностей прошу написать как можно это сделать по другому.
Пробовал вот такой код использовать:

procedure TForm1.Button1Click(Sender: TObject);
var
reply: string;
Str: TStringList;
begin
Str:=TStringList.Create;
Str.Clear;
Str.Add('fname='+Edit1.Text);
Str.Add('lname='+Edit2.Text);
try
reply:=IdHTTP1.Post('https://******/********/***.asp?section_code=I03A0B3J', Str);
TextToWebBrowser(reply, Form1.WebBrowser1);
except
TextToWebBrowser('Ошибка при вводе данных!', Form1.WebBrowser1);
end;
Str.Free;
end;

но для https страниц он не подходит, простые норм вставляет, а в хттпс ошибка.
Форма ответа