Delphi World - Удаление из файла элементов HTML
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Удаление из файла элементов HTML

Как-то раз пришлось решить задачу удаления из файла элементов HTML таких, как, например, ненужные ссылки, и в то эе время преобразования возврата каретки в HTML параграфы, знаков табуляции в пробелы и т.д. В результате соответственно должен был получиться новый HTML документ.

Следующие две процедуры показывают, как это можно сделать:


procedure TMainForm.LoadFileIntoList(TextFileName: string;
          AWebPage: TStringList; WithFilter: Boolean);
var
  CurrentFile: TStringList;
begin
  CurrentFile := TStringList.Create;
  CurrentFile.LoadFromFile(TextFileName);
  if WithFilter then
    FilterHTML(CurrentFile,AWebPage)
  else
    with AWebPage do
      AddStrings(CurrentFile);
  CurrentFile.Free;
end;

procedure TMainForm.FilterHTML(FilterInput, AWebPage: TStringList);
var
  i, j: LongInt;
  S: string;
begin
  FilterMemo.Lines.Clear;
  FilterMemo.Lines := FilterInput;

  with AWebPage do
  begin
    FilterMemo.SelectAll;
    j := FilterMemo.SelLength;

    if j > 0 then
    begin
      i := 0;
      repeat
        // ищем cr
        if FilterMemo.Lines.GetText[i] = Char(VK_RETURN) then
          S := S + #10#13;
        else
        if FilterMemo.Lines.GetText[i] = '<' then
          repeat
            inc(i);
          until
            FilterMemo.Lines.GetText[i] = '>'
        else
          // ищем tab
          if FilterMemo.Lines.GetText[i] = Char(VK_TAB) then
            S := S + ' '
          else
            S := S + FilterMemo.Lines.GetText[i]; // добавляем текст
        inc(i);
      until
        i = j + 1;
      Add(S); // добавляем строку в WebPage
    end
    else
      Add('No data entered into field.'); // no data in text file
  end;
end;

Применение функции:

Всё, что нужно сделать - это вызвать :


LoadFileIntoList("filename.txt",Webpage, True); 

Где:

filename
это имя файла, который вы хотите обработать.
WebPage
это TStringList
последний параметр в функции
указывает, применять или нет HTML-фильтр.

PS: В этом примере объект TMemo (который вызывается из "FilterMemo") лежит на форме и поэтому не видим.

Пример:


WebPage := TStringList.Create;
try
  Screen.Cursor := crHourGlass;
  AddHeader(WebPage);
  with WebPage do
  begin
    Add('Personal Details');
    LoadFileIntoList("filename.txt", Webpage, True);
  end;
  AddFooter(WebPage);
finally
  WebPage.SaveToFile(HTMLFileName);
  WebPage.Free;
  Screen.Cursor := crDefault;
end;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования