![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильный код функции с idHTTP
Pcrepair © (2012-08-02 20:15:00)Добрый день. Есть две версии кода:
(*================ВЕРСИЯ1====================*)
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo2.Text:=LoadPage(Edit1.Text, idHttpLoad);
end;
function TForm1.LoadPage(const S:string; idHttp: TidHttp):string;
begin
idHttpLoad := TIdHTTP.Create(nil);
try
LoadPage := W1252To1251(AnsiLowerCase(idHttpLoad.Get(S)));
LoadPage := (AnsiLowerCase(idHttpLoad.Get(S)));
finally
idHttpLoad.Free;
end;
end;
(*================ВЕРСИЯ2====================*)
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo2.Text:=LoadPage(Edit1.Text);
end;
function TForm1.LoadPage(const S:string):string;
begin
idHttpLoad := TIdHTTP.Create(nil);
try
LoadPage := W1252To1251(AnsiLowerCase(idHttpLoad.Get(S)));
LoadPage := (AnsiLowerCase(idHttpLoad.Get(S)));
finally
idHttpLoad.Free;
end;
end;
Разница между ними только в упоминании idHttpLoad в параметрах функции, но работают обе версии
Вопрос: зачем нужно idHttpLoad в параметрах функции?
avil (2012-08-28 19:23:00) [1]Если idHTTP описан где-то в переменных класса tForm1, то вызов равнозначен. Но разница в том, что первый вариант функции LoadPage более самостоятельный, и "TForm1." перед названием можно спокойно убирать, когда второй вариант строго привязан к своему классу (если же, конечно, IdHTTP - не глобальная переменная).
Дмитрий С (2012-08-15 19:06:00) [2]
> W1252To1251
Любопытно что делает эта функция.
> Вопрос: зачем нужно idHttpLoad в параметрах функции?
а спросить того кто их написал нельзя?
Оно (2012-08-06 18:51:00) [3]Удалено модератором
Rouse_ (2012-08-02 21:27:00) [4]
> если не создавать клиент при использовании функции, то как
> тогда устанавливать для клиента свойства и методы?
Ну где-то его создавать же нужно, логично? Вот там где ты его создашь, там и назначай свои параметры.
Pcrepair (2012-08-02 21:23:00) [5]кстати, если не создавать клиент при использовании функции, то как тогда устанавливать для клиента свойства и методы? типа:
idHttpLoad.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1'
и прочие, если вдруг нужно будет?
Pcrepair (2012-08-02 21:15:00) [6]будут работать, если версия автоопределения кодировки с MLANG не окажется лучше чем SetCodePage. не надо спешить
Rouse_ (2012-08-02 21:00:00) [7]
> а что в функции не надо создавать и уничтожать клиент?
Если ты его создаешь извне и передаешь параметром, нафига?
> вызовы не лишние один работает с 1251 другой с 1252
Где работают? Второй перезатирает результат вызова первого.
Pcrepair (2012-08-02 20:34:00) [8]а что в функции не надо создавать и уничтожать клиент?
вызовы не лишние один работает с 1251 другой с 1252, просто нет пока кода автопереключения кодировки
Плохиш (2012-08-02 20:34:00) [9]
> какой-то из этих двух вызовов лишний:
Какой, какой, вестимо первый, оно же пишет - " работают обе версии".
Rouse_ (2012-08-02 20:20:00) [10]разница в том что первая не правильно написана. Должно быть примерно так:
function TForm1.LoadPage(const S:string; idHttp: TidHttp):string;
begin
LoadPage := W1252To1251(AnsiLowerCase(idHttp.Get(S)));
end;
да и вторая не очень, какой-то из этих двух вызовов лишний:
LoadPage := W1252To1251(AnsiLowerCase(idHttpLoad.Get(S)));
LoadPage := (AnsiLowerCase(idHttpLoad.Get(S)));