Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Правильный код функции с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.058 c
15-1333518462
AlexKniga
2012-04-04 09:47
2013.03.22
Непонятные сайты на первых местах гугля


2-1339237885
Savek
2012-06-09 14:31
2013.03.22
Не удаётся сохранить картинку


2-1329825696
TurikUs
2012-02-21 16:01
2013.03.22
Delphi 2010


15-1344682568
Jimmy
2012-08-11 14:56
2013.03.22
Chessmaster 9000


15-1344976202
Юрий
2012-08-15 00:30
2013.03.22
С днем рождения ! 15 августа 2012 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский