Главная страница
    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.077 c
15-1351492587
Olga.Duplenko
2012-10-29 10:36
2013.03.22
Работа для классных профессионалов-разработчиков


2-1329819397
Витя
2012-02-21 14:16
2013.03.22
Поиск совпадений на изображении


15-1332875974
Сергей_С
2012-03-27 23:19
2013.03.22
Проблема в скайпе с отображением видео


2-1347519862
MsGuns
2012-09-13 11:04
2013.03.22
Колонка для "птичек" в гриде.


15-1347612790
LDV
2012-09-14 12:53
2013.03.22
Управление флагами в InnoSetup





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский