Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание программы для загрузки файлов из Internet

Поиск

С возможностью последующей дозагрузки

Общие сведения

Обзор программ для загрузки файлов из сети Internet

В настоящее время существует множество программ для загрузки файлов из сети Internet. Например GetRight, Reget, Flashget и другие. Все они занимают первые места в рейтингах и продаются за немалые деньги.

Аналогичную программу можно написать с использованием языка программирования Delphi.

Возможности библиотеки Wininet

Библиотека Wininet содержит следующие функции, которые будут использоваться программой для загрузки файлов из Internet с возможностью последующей дозагрузки:

1 Функция InternetOpen (lpszAgent: PChar; dwAccessType: DWORD; IpszProxyName, IpszProxyBypass: PChar; dwRags: DWORD): HINTERNET.

Эта функция открывает интернет-сессию для приложения.

Функция имеет следующие аргументы:

- lpszAgent – имя программы;

- dwAccessType – способ соединения (PRE_CONFIGJNTERNET_ACCESS – как в реестре, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY – не использовать internet setup file, GATEWAY INTERNET ACCESS – через шлюз, CERN_PROXYJNTERNET_ACCESS – через прокси-сервер);

- IpszProxyName – имя прокси-сервера;

- pszProxyBypass – ограничения прокси-сервера;

- dwRags – режим работы (для простоты использования этот аргумент равен 0).

2 Функция lnternetOpenUrl (hinet: HINTERNET; IpszUrl: PChar; IpszHeaders: PChar; dwHeadersLength: DWORD; dwFlags: DWORD; dwContext: DWORD): HINTERNET.

Эта функция открывает заданный URL.

Функция имеет следующие аргументы:

- hinet – переменная типа HINTERNET, ее значение возвращает функция InternetOpen;

- IpszUrl – URL;

- IpszHeaders – дополнительные строки в HTTP запросе;

- dwHeadersLength – длина дополнительных строк.

3 Функция lnternetReadFile (hFile: HINTERNET; IpBuffer: Pointer; dwNumberOfBytesToRead: DWORD; var IpdwNumberOfBytesRead: DWORD): BOOL.

Эта функция читает удаленный файл.

Функция имеет следующие аргументы:

- hFile – значение предыдущей функции;

- IpBuffer – буфер, через который будет читаться файл, т.к. буфер это массив, то файл читается кусками, равными размеру этого массива объемом 1024 байта, т.е. один килобайт;

- dwNumberOfBytesToRead – какое количество байт необходимо прочесть, он должен быть равен размеру массива, т.е. 1024;

- IpdwNumberOfBytesRead – сколько действительно байт прочитано.

4 Функция InternetSetFilePointer (hFile: HINTERNET; IDistanceToMove: Longint; pReserved: Pointer; dwMoveMethod, dwContext: DWORD): DWORD; stdcall.

Эта функция сдвигает позицию чтения файла на заданное число байт. Другими словами, если надо прочитать файл не с начала, а с отметки 1000 байт, то надо пользоваться InternetSetFilePointer.

Функция имеет следующие аргументы:

- hFile – значение предыдущей функции.

- IDistanceToMove – на какое количество байт смещать указатель;

- pReserved – резерв, а само значение должно быть равно нулю;

- dwMoveMethod – способ смещения (FILE_BEGIN – с начала; FILE_END – с конца; FILECURRENT – с текущей позиции).

- dwContext – значение этого параметра должно быть равно 0.

Указанная функция и будет обеспечить «докачку» файлов из сети.

Если команда прервется, например, на отметке 1,2 Мб, то программа позволит вернуться на нужную позицию и продолжить скачивание с момента прерывания связи с сетью.

5 Функция InternetQueryDataAvailable (hFile: IpdwNumberOfBytesAvailable: DWORD; dwFlags, dwContext: DWORD): BOOL; stdcall; HINTERNET.

Эта функция выясняет объем доступных данных, т. е. размер запрашиваемого файла.

Функция имеет следующие аргументы:

- hFile – рассматривалась выше;

- IpdwNumberOfBytesAvailable – указывает доступные байты.

6 Функция InternetCloseHandle (hInet: HINTERNET): BOOL; stdcall.

Эта функция закрывает интернет-сессию.

Задание на работу

Необходимо разработать программу, обеспечивающую загрузку файлов из сети Internet по указанному URL адресу с последующей дозагрузкой.

7.2.3. Выполнение задания на работу

В первую очередь необходимо создать новую форму.

С целью разработки программы, обеспечивающей загрузку файлов из сети Internet по указанному URL адресу, необходимо воспользоваться ресурсами библиотеки Wininet. Следует прописать эту библиотеку в строке использования ресурсов, как указано на рисунке 206.

Рисунок 206 – Запись библиотеки Wininet

На созданной форме необходимо расположить следующие компоненты:

- TButton с вкладки на панели инструментов Standard – 4 штуки;

- TEdit с вкладки на панели инструментов Standard – 2 штуки;

- TSaveDialog с вкладки на панели инструментов Dialogs – 1 штука;

- Tlabel с вкладки на панели инструментов Standard – по мере необходимости создания подписей ранее вынесенных на форму компонентов.

Вид формы с необходимыми элементами представлен на рисунке 207.

Рисунок 207 – Вид формы с необходимыми элементами

На представленной форме компонент TSaveDialog необходим для вызова окна сохранения файла. Для вызова этого окна необходимо в обработчике событий кнопки[32] прописать код, как показано на рисунке 208.

Рисунок 208 – Код для вызова окна сохранения файла

После нажатия на кнопку для сохранения откроется окно сохранения файла, представленное на рисунке 209.

Рисунок 209 – Окно сохранения файла

В разделе объявления переменных необходимо ввести логическую переменную stop, которая отвечает за остановку загрузки.

На рисунке 210 представлен соответствующий программный код.

Рисунок 210 – Программный код с вводом переменной stop

Для остановки работы программы и выхода из нее необходимо создать обработчик события для кнопок Button 2 и Button 3 соответственно. Код представлен на рисунке 211.

Рисунок 211 – Код остановки закачки и выхода из программы

Далее, когда вспомогательные события работы программы исполнены необходимо, в обработчике события (OnClick) кнопки Button1 прописать код, представленный на рисунке 212.

Рисунок 212 – Программный код для загрузки файлов из сети

В представленном коде после слова begin и до hInet:= InternetOpen ('Закачка',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); описывается файл, куда будет произведена загрузка, проверка его наличия на жестком диске и если он существует, то продолжение записи.

Далее следует создание Интернет сессии и проверка на узле файла по заданному URL адресу. Если часть файла уже загружалась ранее, включается функция InternetSetFilePointer(hURL, RestartPos, nil,0,0), которая позволяет продолжение загрузки файла с выбранной позиции. Следующий шаг, начинающийся с repeat, – процесс считывания файла в буфер с последующей записью на диске. Этот процесс продолжается до тех пор, пока размер информации, считываемый буфером, не будет равен 0 или не будет активирована переменная stop. В ходе цикла выполняется функция отображения количества информации, записанная в строке label1.Caption:=floattostr(filesize(F) div 1000)+' КБАЙТ'. После завершения цикла Интернет-сессия и записанный файл закрываются, и появляется сообщение, информирующее о причине остановки загрузки.

Переменные, используемые в программе:

hInet: HINTERNET – переменная, содержащая указание на сессию;

hURL: HINTERNET – переменная, содержащая указание на URL адрес;

fSize: DWORD – переменная, содержащая размер файла на диске;

ReadLen: DWORD – переменная, содержащая количество прочитанных байт;

RestartPos: DWORD – переменная позиции, с которой начинается загрузка;

fBuf: array[1..1024] of byte – переменная буфера;

f: file – файловая переменная;

Header: string – дополнительная переменная в HTTP;

err: boolean – переменная сообщения об ошибке.

7.2.4 Контрольные вопросы

1 Каким образом осуществляется загрузка файла?

2 Какую библиотеку целесообразно использовать для осуществления процесса загрузки файлов из сети Интернет?

3 Какая функция отвечает за продолжение загрузки файлов?

4 За что отвечает функция InternetQueryDataAvailable?

5 Что такое URL-адрес?

6 Что обозначает функция Filesize(f)?

7 Для чего необходим компонент TSaveDialog?

8 Как осуществляется процесс дозагрузки файла в случае прерывания контакта с сетью?

9 Какой размер буфера в представленной программе?

10 Какой принцип работы кнопки «Стоп»?

 

 

Список литературы

1. Архангельский А. Я. Программирование в Delphi. М.: Бином, 2001. 410 с.

2. Бобровский С. Delphi 5: Учебный курс. СПб: «Питер», 2001. 552 с.

3. Дарахвелидзе П., Марков Е. Delphi 4. СПб: Питер, 2001. 436 с.

4. Фаронов В. Система программирования Delphi. СПб: БХВ-Петербург, 2005. 892 с.


 

Приложение А

Тесты для самоконтроля

1 Какой компонент в системе Delphi используются для создания заголовков:

а) Label;

б) Memo;

в) RadioGroup;

г) Button?

 

2 В какой параметр Инспектора объектов при использовании компонента RadioGroup вводятся варианты ответа:

а) Unite;

б) Items;

в) Lines;

г) Scrollbars?

 

3 Что произойдет, если в Инспекторе объектов переключиться на закладку События и кликнуть два раза мышью в событии OnClic:

а) создастся новая форма;

б) закроется главная форма;

в) откроется процедура для внесения кода;

г) запустится процесс компиляции проекта?

 

4 Какой процесс представлен на фрагменте кода:

а) создание формы 2;

б) описание переменных к форме 2;

в) закрытие формы 2;

г) связь текущей формы с формой 2

д) скрытие формы 2?

 

5 Какой процесс представлен на фрагменте кода:

а) создание формы 2;

б) описание переменных к форме 2;

в) закрытие формы 2;

г) связь текущей формы с формой 2;

д) скрытие формы 2?

6 Какое слово в системе Delphi позволяет вызвать сообщение:

а) showmodal;

б) showmessage;

в) starttofloat;

г) strtoint?

 

7 Какой вид будет иметь строка в случае, если требуется использовать для дальнейших действий первое значение в объекте radiogroup1:

а) if radiogroup1.ItemIndex= 0.0 then;

б) if radiogroup1.ItemIndex=0 then;

в) if radiogroup1.ItemIndex=1 then;

г) if radiogroup1.ItemIndex=2 then;?

 

8 Что представляют собой параметры 1, 2 в процедуре AssignFile (параметр 1, параметр 2):

а) путь к файловой переменной, ее имя;

б) имя файловой переменной, длину записи нетипизированного файла в байтах;

в) имя файловой переменной, путь к ней;

г) длину записи нетипизированного файла в байтах, имя файловой переменной?

 

9 Какая процедура используются для открытия файла в режиме чтения:

а) Rewrite;

б) Reset;

в) Seek;

г) Close?

 

10 Что означает строка кода label2.caption:=floattostr(В):

а) в компонент label2 выведется значение переменной В;

б) компонент label2 не зависит от значения переменной В;

в) значение переменной В вводится через компонент label2;

г) строка кода не верна с точки зрения синтаксиса языка ObjectPascal?

 

11 Какая процедура позволяет открыть файл, не стирая его содержимое:

а) Append (var F, Text);

б) AssignPrtnt (var F, Text);

в) Erase (var F, Text);

г) AssignFile (F, ‘C:\delo.txt’);?

12 Какая функция позволяет определить конец файла:

а) if

б) case;

в) eof;

г) end?

 

13 Что позволяет выполнить строка кода memo1.Lines.LoadFromFile(a):

а) загрузку содержимого компонента memo1 в файл;

б) создание типизированного файла;

в) создание нетипизированного файла;

г) загрузку данных из файла в объект TMemo1?

 

14 Возможно ли перевести переменную из строкового типа в числовой тип:

а) можно строкой кода memo1.Text:=floattostr(zn);

б) можно строкой кода zn:=zn*(-1);

в) можно строкой кода zn:=strtofloat(memo1.Text);

г) не возможно?

 

15 Какая палитра содержит компоненты, позволяющие быстро и легко обращаться к наиболее популярным офисным приложениям компании Мicrosoft:

а) Services;

б) Standard;

в) BDE

г) Win32

д) dbGo?

 

16 Какой компонент отвечает за запуск текстового процессора Word:

а) TWordApplication;

б) TWordDocument;

в) AutoConnect;

г) AutoQuit?

 

17 Для чего необходим компонент ТOpenDialog:

а) для запуска текстового процессора;

б) для запуска табличного процессора;

в) для сохранения текста, внесенного в созданный файл;

г) для открытия стандартного окна с существующими каталогами?

18 Какое из свойств связано с компонентом TExcelWorkbook:

а) ConnectKind;

б) TExcelApplication;

в) OleVariant;

г) ExcelWorkbook1.PrintOut?

 

19 Какой компонент отвечает за работу с диаграммами в системе Delphi:

а) Series;

б) Chart;

в) Clear;

г) Show?

 

20 Что является элементом пузырьковой диаграммы в системе Delphi:

а) вar;

б) рie;

в) вubble;

г) line?

 

21 Какой процесс осуществляется посредством представленного фрагмента кода программы:

if k=0 then

memo1.Text:=Memo1.Text+'1'

else

memo1.Text:='1';

k:=0;

end;

а) ввод цифр в поле ТMemo;

б) операция сложения чисел;

в) процедура записи десятичной дроби в поле ТMemo;

г) процедура ввода отрицательного числа в поле ТMemo?

 

22 Какой оператор пропущен в представленном фрагменте кода:

procedure TForm2.Button20Click(Sender: TObject);

begin

x:=strtofloat(memo1.Text);

………….

1: begin

y:=y+((y*x)/100);

end;

2:begin

y:=y-((y*x)/100);

end;

3: y:=(y*x)/100;

end;

memo1.Text:=floattostr(y);

k:=1;

end;

а) if;

б) case of;

в) while;

г) repeat until?

 

23 Какая операция выполнится, если переменная pr принимает значение, равное 1, в представленном фрагменте кода

procedure TForm2.Button20Click(Sender: TObject);

begin

x:=strtofloat(memo1.Text);

case pr of

1: begin

y:=y+((y*x)/100);

end;

2:begin

y:=y-((y*x)/100);

end;

3: y:=(y*x)/100;

end;

memo1.Text:=floattostr(y);

k:=1;

end;

а) вычисляется процент от числа;

б) вычитание из введенного числа процента;

в) прибавление к введенному числу процента?

 

24 Какой компонент позволяет визуализировать таблицы базы данных на форме приложения:

а) ADOConnection;

б) ADOTable;

в) DataSource;

г) DBGrid

д) DataModule?

 

25 Какие категории свойств в Инспекторе объектов присущи компоненту ADOTable:

а) Database;

б) Input;

в) Linkage;

г) Miscellaneous?

 

26 Что представляет собой запись Microsoft Jet 4.0 OLE DB Provider:

а) свойство компонента ADOConnection;

б) название палитры компонентов;

в) функция для работы с приложениями по технологии СОМ;

г) ADO драйвер для доступа к базам данных?

 

27 Как называется специальное окно, куда можно перенести все компоненты доступа к базе:

а) ADOConnection;

б) ADOTable;

в) DataSource;

г) DBGrid

д) DataModule?

 

28 Что представлено на рисунке:

а) окно DataModule;

б) окно редактирования полей таблицы базы данных;

в) окно для ввода записей в таблицу базы данных;

г) форма, созданная в системе Delphi?

 

29 Какое из перечисленных свойств позволяет установить ширину колонки, содержащей поле таблиц базы данных:

а) Visible;

б) DisplayWidth;

в) DefaultExpression;

г) ReadOnly;

д) Required?

 

30 Какой процесс выполнится при обработке представленной строки кода Datamodule2.Sved_o_rab.Insert:

а) приложение обратится к окну Datamodule2, к таблице Сведения о работниках и добавит в этой таблице еще одно поле;

б) приложение обратится к окну Datamodule2, к таблице Сведения о работниках и добавит в этой таблице строку для ввода записи;

в) приложение обратится к окну Datamodule2, к набору таблиц базы данных добавится таблица Сведения о работниках;

г) приложение обратится к окну Datamodule2, к схеме данных базы добавится таблица Сведения о работниках?

 

31 Какое сочетание клавиш позволит удалить записи из таблицы базы данных через приложение

а) Ctrl + Delete;

б) Ctrl + Backspace;

в) Insert + Delete;

г) Insert + Backspace?

 

32 Какой процесс представлен на рисунке:

а) добавление записи в одну из таблиц базы данных;

б) удаление записи из таблицы базы данных;

в) фильтрация данных по полю ФИО;

г) добавление поля в одну из таблиц базы данных;

д) удаление поля в одну из таблиц базы данных?

 

33 Какой фрагмент кода позволит выполнить фильтрацию данных по полю ФИО после введения нужной информации в поле Edit и нажатия кнопку, являющуюся соответствующим обработчиком событий:

а) datamodule2.Sved_o_rab.Filtered:=true;

datamodule2.Sved_o_rab.Filter:='ФИО='''+edit1.Text+'''';

б) datamodule2.Sved_o_rab.Filtered:=true;

datamodule2.Sved_o_rab.Filter:=''+edit1.Text+'';

в) datamodule2.Sved_o_rab.Filtered:=false;

datamodule2.Sved_o_rab.Filter:='ФИО='''+edit1.Text+'''';

г) datamodule2.Sved_o_rab.Filtered:=true;

datamodule2.Sved_o_rab.Filter:='ФИО='';

 

34 Для чего необходим компонент TSaveDialog:

а) для связи приложения с программами, являющимися серверами COM;

б) для сохранения кода формы;

в) для сохранения дизайна формы;

г) для вызова окна сохранения файла?

 

35 Какой тип должна иметь переменная, отвечающая за остановку загрузки файла при его скачивании из сети:

а) real;

б) integer;

в) string;

г) boolean?

 

36 Что представляет собой компонент ServerSocket с закладки Internet:

а) файловый сервер;

б) сервер на основе протокола HTTP;

в) сервер на основе протокола TCP;

г) возможность создания хоста?

 

37 Какой процесс осуществляется представленным фрагментом программы

procedure TForml.FormDistroy(Sender: TObject; var Action: TCloseAction);

begin

ServerSocket1.Active:=false;

end;

а) включение сервера, что автоматически открывает порт;

б) остановка процесса скачивания файла в любой момент времени;

в) отключение сервера, что автоматически закрывает порт;

г) возобновление процесса скачивания файла в любой момент времени?

 

38 Какая функция позволяет операционной системе Windows свернуться и выключить компьютер

а) Eof;

б) Subtract;

в) ExitWindowsEx;

г) InternetOpen

д) lnternetReadFile?

 

39 Какая строка кода программы позволяет отображать количество скаченной информации

а) label1.Caption:=floattostr(filesize (F) div 1000)+' КБАЙТ'.;

б) label1.Caption:=floattostr(filesize (F) div 1000);

в) label1.Caption:=floattostr filesize (F) +' КБАЙТ'.;

г) label1.Caption:=floattostr(filesize (F) mod 1000)+' КБАЙТ'.;?

 

40 Что означает значение 1000 свойства Port компонента ServerSocket:

а) возможность передать по сети файл объемом не более 1000 Кб;

б) при подключении к серверу процесс ожидания продлиться 1000 миллисекунд или 1 секунда;

в) разработанное сетевое программное обеспечение позволит передать по сети не более 1000 файлов;

г) скорость передачи файла составит не менее 1000 Мбит/с?

 

 


 

Приложение 2



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 424; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.52.26 (0.008 с.)