Текущий архив: 2013.03.22;
Скачать: CL | DM;
ВнизПравильный код функции с idHTTP Найти похожие ветки
← →
Pcrepair © (2012-08-02 20:15) [0]Добрый день. Есть две версии кода:
(*================ВЕРСИЯ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 в параметрах функции?
← →
Rouse_ © (2012-08-02 20:20) [1]разница в том что первая не правильно написана. Должно быть примерно так:
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)));
← →
Pcrepair © (2012-08-02 20:34) [2]а что в функции не надо создавать и уничтожать клиент?
вызовы не лишние один работает с 1251 другой с 1252, просто нет пока кода автопереключения кодировки
← →
Плохиш © (2012-08-02 20:34) [3]
> какой-то из этих двух вызовов лишний:
Какой, какой, вестимо первый, оно же пишет - " работают обе версии".
← →
Rouse_ © (2012-08-02 21:00) [4]
> а что в функции не надо создавать и уничтожать клиент?
Если ты его создаешь извне и передаешь параметром, нафига?
> вызовы не лишние один работает с 1251 другой с 1252
Где работают? Второй перезатирает результат вызова первого.
← →
Pcrepair © (2012-08-02 21:15) [5]будут работать, если версия автоопределения кодировки с MLANG не окажется лучше чем SetCodePage. не надо спешить
← →
Pcrepair © (2012-08-02 21:23) [6]кстати, если не создавать клиент при использовании функции, то как тогда устанавливать для клиента свойства и методы? типа:
idHttpLoad.Request.UserAgent := "Mozilla/5.0 (Windows; U; Windows NT 5.1"
и прочие, если вдруг нужно будет?
← →
Rouse_ © (2012-08-02 21:27) [7]
> если не создавать клиент при использовании функции, то как
> тогда устанавливать для клиента свойства и методы?
Ну где-то его создавать же нужно, логично? Вот там где ты его создашь, там и назначай свои параметры.
← →
Оно (2012-08-06 18:51) [8]Удалено модератором
← →
Дмитрий С © (2012-08-15 19:06) [9]
> W1252To1251
Любопытно что делает эта функция.
> Вопрос: зачем нужно idHttpLoad в параметрах функции?
а спросить того кто их написал нельзя?
← →
avil (2012-08-28 19:23) [10]Если idHTTP описан где-то в переменных класса tForm1, то вызов равнозначен. Но разница в том, что первый вариант функции LoadPage более самостоятельный, и "TForm1." перед названием можно спокойно убирать, когда второй вариант строго привязан к своему классу (если же, конечно, IdHTTP - не глобальная переменная).
Страницы: 1 вся ветка
Текущий архив: 2013.03.22;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.063 c