GetRight своими руками
Спецвыпуск Хакер, номер #004, стр. 004-080-4
// переменную serv
if serv = 'ftp://' then // впереди ftp://
begin
Delete( addr , 1 , 6 ) ; // удаляем первые 6 символов из
//адреса
host := Copy ( addr , 1 , ( Pos( '/' , addr ) - 1 ) ) ;
// находим хост
Delete( addr , 1 , ( Pos( '/' , addr ) - 1 ) ) ;
dir := addr ;
// находим путь к файлу
// качаем по фтп
end
else
if serv = 'http:/' then // впереди http:/
begin
// качаем по хттп
end
else Label3.Caption := 'Что за корявый адрес?' ;
end
else Label3.Caption := 'Введи все данные, чувак!' // не все данные
end ;
Итак, сначала функцией Delete стираем первые 6 символов из адреса. Функция берет строку, из которой стирать, символ, с которого начинать стирать, количество стираемых символов - все очень похоже на Copy. Затем в переменную host копируем адрес сервака, но вместо количества символов там стоит конструкция типа
(Pos( '/' , addr ) -1). Все путем! Функция Pos находит положение символа / в строке addr и выдает число, которое показывает, какой этот символ по счету. Но нам его копировать не надо, поэтому и отнимаем единицу. Теперь, если адрес файла ftp://my.host.com/file.exe, то адрес сервера будет my.host.com. Дальше стираем из адреса хост, и остается адрес файла - его и присваиваем переменной dir. Все, подготовка закончена, все данные обработаны, сохраняйся.
Кодим скачку по фтп
Обработаем теперь докачку по фтп. Ниже идущий код пиши там, где надпись:
// качаем по фтп.
Сначала поработаем с кнопками, дописывай код:
Edit1.Enabled := false ;
Edit2.Enabled := false ; // вырубаем эдиты
Button1.Enabled := false ; // выключаем кнопку "Закачать"
Тут, я думаю, все понятно, прописываем закачку:
NMFTP1.Host := host ;
NMFTP1.UserID := 'anonymous' ;
NMFTP1.Password := '' ;
Label3.Caption := 'Подключаемся ... ' ;
NMFTP1.Connect ;
NMFTP1.Mode( MODE_IMAGE ) ;
Label3.Caption := 'Начинаем качать ...' ;
NMFTP1.Download( dir , Edit2.Text ) ;
Label3.Caption := 'Ура !!!' ;
Label3.Caption := 'Отключаемся ...' ;
NMFTP1.Disconnect ;
Тут тоже все понятно - соединяемся, скачиваем, отсоединяемся. Download берет себе сначала адрес файла в Инете, а потом адрес, куда его сохранить на диске. Вот и все. Обрабатываем кнопки:
Button1.Enabled := true ; // включаем кнопку "Закачать"
Edit1.Enabled := true ;
Edit2.Enabled := true ; // врубаем эдиты
Edit1.Clear ;
Edit2.Clear ; // очищаем эдиты
Поработай немного мышом - добавим несколько комментариев. Выдели компонент NMFTF1 у себя на форме, затем кликни в Object Inspector'е на вкладку Events (кликай на OnConnect, затем на белое место справа - два раза).
Пиши:
procedure TForm1.NMFTP1Connect(Sender: TObject);
begin
Label3.Caption := 'Подключено успешно!!!' ;
end;
Теперь, когда соединение установлено, прога выдаст в метку сообщение. Кликай по OnConnectionFailed. Пиши: