Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.049 c
15-1331817337
QWERTY_
2012-03-15 17:15
2013.03.22
thumbnails


15-1334262603
Юрий
2012-04-13 00:30
2013.03.22
С днем рождения ! 13 апреля 2012 пятница


3-1285063680
yurikon
2010-09-21 14:08
2013.03.22
TADOQuery и TADODataSet


6-1257351955
~AQUARIUS~
2009-11-04 19:25
2013.03.22
Переадресации и THTTPCli


15-1338660812
Knight
2012-06-02 22:13
2013.03.22
Как распечатывать текст программы для диплома?