Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Свой DownLoad Master на основе статьи.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Свой DownLoad Master на основе статьи.
Имя
Сообщение << Старые топики   Новые топики >>
Свой DownLoad Master на основе статьи. - 2009-01-31 16:41:26.220000   
ZeitGeist7

Сообщений: 67
Оценки: 0
Присоединился: 2008-09-21 21:58:46.603333
передо мной встала достачтоно специфичная задача: на Дельфях 7 на основе уже готовых исходников из
http://www.xakep.ru/magazine/xa/052/074/3.asp
сделать что-то наподобие  DownLoad Master но только для одного типа файлов а именно xml.
сам я пытался несколько раз начать но поскольку программировал я на дельфях лет 10 назад то прошу вас помочь советом или делом. буду благодарен.
что нужно:
1) добавить в файл хранения 3 параметра: имя ленты, ссылка на неё и имя файла с форматом имя_ленты.xml
2)в файле хранения хранилось N таких лент (много)
3) возможность редактирования (т.е. добавить/удалить/редактировать нужную запись.)
4) таймер. чтобы была возможность  скачивания файлов по ссылкам хранящихся в файле хранения всем скопом
5) загрузка осуществлялась без дозаписи. то есть раз в 1 час файл качается полностью заного.

простите за сумбур. если можно то исходниками.
Post #: 1
RE: Свой DownLoad Master на основе статьи. - 2009-01-31 17:01:38.713333   
ZeitGeist7

Сообщений: 67
Оценки: 0
Присоединился: 2008-09-21 21:58:46.603333
забыл добавить что я потом буду добавлять к этой проге ещё код который будет переводить xml в txt файлы.
может никто и не сможет помочь готовыми прожками но с куском кода думаю народ поможет
var F: File; &nbsp;&nbsp;&nbsp; ResumePos,BufferLen,SumSize: DWORD; &nbsp;&nbsp;&nbsp; hSession, hURL: HInternet; &nbsp;&nbsp;&nbsp; Buffer: array[1..1024] of Byte; &nbsp;&nbsp;&nbsp; err: boolean; begin SumSize:=0; ResumePos:=0;&nbsp;&nbsp; //Инициализируемся AssignFile (F,SaveWayEdit.Text);&nbsp; //Свяжемся с файлом IF FileExists (SaveWayEdit.Text) then //Есть ли на диске этот файл &nbsp; begin &nbsp;&nbsp; Reset(f,1); //Ах, есть? Откроем! &nbsp;&nbsp; ResumePos:=FileSize(F); //Откуда докачать &nbsp;&nbsp; Seek(F, FileSize(F)); //А писать бум в конец &nbsp; end else ReWrite(f,1);&nbsp; //А раз нет, так создадим NADO:= TRUE; //Надо качать... //Открыли сессию hSession:= InternetOpen('X-Kachalka',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0); //И наш УРЛ hURL := InternetOpenURL(hSession,PChar(LinkEdit.Text),nil,0,0,0); //Сколько там наш файл весит? InternetQueryDataAvailable(hURL, SumSize,0,0); label4.Caption:= IntToStr (SumSize); //Сообщим об этом if ResumePos&gt;0 then //Если докачиваем, &nbsp;begin &nbsp;InternetSetFilePointer(hURL,ResumePos,nil,0,0); //То сместимся &nbsp;end; REPEAT //Качаем &nbsp;err:= InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen); //Читаем буфер &nbsp;IF err= false then //Ошибка чтения &nbsp; begin &nbsp; ShowMessage ('Произошел облом :('); //Сообщим и выходим &nbsp; exit; &nbsp; end; &nbsp;BlockWrite(f, Buffer, BufferLen); //Пишем в файл &nbsp;Application.Processmessages; UNTIL (BufferLen= 0) Or (NADO= FALSE); //Качаем, пока не все или надо ShowMessage ('Успешно загружено!'); end; я в этом ни зуб ногой. как сделать чтобы шла не докачка а новое скачивание, но при этом если соединение вдруг пропало файл докачался.
заранее благодарю!).
Post #: 2
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Свой DownLoad Master на основе статьи.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.