GetRight своими руками
Спецвыпуск Хакер, номер #004, стр. 004-080-3
Продолжаем разговор. Нам нужно узнать, по фтп загружать или по хттп. Для этого нужно знать, что впереди: ftp:// или http://. Чтобы вытянуть это из оригинального адреса, проведем ряд извращений со строками. Дописывай код:
procedure TForm1.Button1Click(Sender: TObject) ;
begin
Label3.Caption := '' ; // очищаем метку для сообщений
if ( Edit1.Tag = 1 ) and ( Edit2.Tag = 1 ) and ( Edit1.Text <> '' )
and ( Edit2.Text <> '' ) then // проверка данных
begin // данные введены, выполнять действия
addr := Edit1.Text ; // сохраняем адрес в переменную
serv := Copy( addr , 1 , 6 ) ; // копируем 6 символов из адреса в
// переменную serv
if serv = 'ftp://' then // впереди ftp://
begin
// качаем по фтп
end
else
if serv = 'http:/' then // впереди http:/
begin
// качаем по хттп
end
else Label3.Caption := 'Что за корявый адрес?' ;
end
else Label3.Caption := 'Введи все данные, чувак!' // не все данные
end ;
Сначала мы сохранили адрес из первого эдита в переменную addr, затем в переменную serv мы из переменной addr копируем 6 символов. Используем функцию Copy. В скобках идут параметры - сначала пишем переменную, из которой копировать, потом номер символа, с которого начинать, ну и потом сколько символов копировать. Всю скопированную бурду сохраняем в переменной serv, теперь проверяем: если серв равен ftp://, то качать будем по фтп, а если http:/ - по хттп. Ну а если серв другой, то адрес корявый - это и напишем в метке. Кстати, переменные serv и addr еще не определены, и программа будет ругаться (а работать не будет). Надо их определить, иди в самый верх кода и там ищи слово var. Вот после этого слова и допиши переменные, заодно добавь еще несколько - они нам потом пригодятся. Вот так:
var
serv , addr , host , dir : String ;
String - это строка, соответственно, все эти переменные - строки. Уфф! Теперь последние штрихи на этой стадии - для скачки по фтп нужно сначала соединиться с хостом (сервером), а потом уже скачивать файло. Нужно разбить адрес на хост и собственно адрес файла, а это опять извращения со строками. Дописывай:
procedure TForm1.Button1Click(Sender: TObject) ;
begin
Label3.Caption := '' ; // очищаем метку для сообщений
if ( Edit1.Tag = 1 ) and ( Edit2.Tag = 1 ) and ( Edit1.Text <> '' )
and ( Edit2.Text <> '' ) then // проверка данных
begin // данные введены, выполнять действия
addr := Edit1.Text ; // сохраняем адрес в переменную
serv := Copy( addr , 1 , 6 ) ; // копируем 6 символов из адреса в