2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Задание на Delphi
Сообщение16.11.2008, 18:02 


07/01/08
10
Здравствуйте!
У меня вот есть такое задание:
создать список файлов, ссылки на которые содержаться в файле формата HTML (другие файлы формата HTML).
Мне хотелось бы узнать, как такое можно реализовать на Delphi, ну или хотя бы алгоритм действий, какие компоненты следует использовать..)

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

 Профиль  
                  
 
 
Сообщение16.11.2008, 19:23 
Аватара пользователя


26/02/06
179
Хижина дяди Тома
Открываете во viewer'e html-файл, смотрите глазками какими тэгами окружены имена файлов, затем пишите простенький парсер, который выкусывает из html-файла имена нужных Вам файлов. Затем считываете исходный html-файл построчно и с помощью парсера складываете имена Ваших файлов в любую коллекцию или плюете на экран или еще куда-то.

 Профиль  
                  
 
 Re: Задание на Delphi
Сообщение16.11.2008, 20:06 
Заслуженный участник


12/07/07
4448
Напомню себе. Ссылки имеют вид: <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 
Заслуженный участник


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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group