2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Задание на Delphi
Сообщение16.11.2008, 18:02 
Здравствуйте!
У меня вот есть такое задание:
создать список файлов, ссылки на которые содержаться в файле формата HTML (другие файлы формата HTML).
Мне хотелось бы узнать, как такое можно реализовать на Delphi, ну или хотя бы алгоритм действий, какие компоненты следует использовать..)

Заранее спасибо.

 
 
 
 
Сообщение16.11.2008, 19:23 
Аватара пользователя
Открываете во viewer'e html-файл, смотрите глазками какими тэгами окружены имена файлов, затем пишите простенький парсер, который выкусывает из html-файла имена нужных Вам файлов. Затем считываете исходный html-файл построчно и с помощью парсера складываете имена Ваших файлов в любую коллекцию или плюете на экран или еще куда-то.

 
 
 
 Re: Задание на Delphi
Сообщение16.11.2008, 20:06 
Напомню себе. Ссылки имеют вид: <a href=путь>Текс ссылки</a>.

Использовать компоненты необходимости нет. Можно создать консольное приложение, которому первым параметром командной строки передавать имя html-файла, а вторым — имя файла в котом возвращать список файлов.

Действия просты. Пока не дошли до конца файла:
1) ищем очередную ссылку;
2) выделяем путь;
3) проверяем, не включен ли он в кавычки, если да — удаляем кавычки;
4) выводим результат в файл (которым может быть con).

Добавлено спустя 39 минут 15 секунд:

По поводу второго параметра командной строки. Обычно делают так: если не указан файл вывода, то выводят на экран. Вот простейший пример с одним параметром командной строки (без обработки ошибок ввода-вывода), иллюстрирующий использование "con":
Код:
program CommandLine;
var
OutPut: Text;
Name:   string;
begin
if ParamCount = 0
  then Name := 'con'
  else Name := ParamStr(1);
Assign(OutPut, Name);
Rewrite(OutPut);
Writeln(OutPut, '!-!');
Close(OutPut);
end.
В этом примере, если задан параметр командной строки, то будет осуществляться вывод строки '!-!' в файл с этим именем, если параметр не задан — та же строка выводится на экран.

 
 
 
 Дополнение
Сообщение16.11.2008, 23:52 
Кроме параметра href тег <a> может содержать и другие параметры, например, TARGET, поэтому нельзя рассматривать символ ">" в качестве признака конца пути — таким признаком может быть, например, и пробел, или следующий параметр, если путь заключен в кавычки. Помимо, этого после имени файла может идти указатель раздела в форме "#SecName", т.е. значение параметра href иметь вид "путь к файлу#SecName".

И еще, построчно нельзя анализировать тег <a xxxx> — в том смысле, что он может длиться несколько строк, т.е. между "<a" и закрывающим символом ">" может содержаться символ/символы конца строки.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group