Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Помогите переписать на работу с файлом


Автор: lamos123456 11.11.2006, 11:16
Вот есть код... но мне нужно переписать его для работы не с мемо, а с файлом...
Помогите пожалуйста...
Код

procedure FindURLs(text: string; listURL:TStringList);
    function NormalizeUrl(var Url:String):Boolean;
    var i:integer;
    begin
      Result:=False;
      Url:=StringReplace(Url, '#13#10', '', [rfReplaceAll]);
      i:=Pos(' ', Url);
      if (i<>0) then Url:=Copy(Url, 1, i-1);
      Url:=StringReplace(Url, '"', '', [rfReplaceAll]);
      Url:=StringReplace(Url, '''', '', [rfReplaceAll]);
      if ((Pos(';', Url)<>0)or
          (Pos('@', Url)<>0)or
          (Pos('#', Url)<>0)or
          (Pos('mailto:', Url)<>0)or
          (Pos('file://', Url)<>0)) then Exit;
      if Url='' then Exit;
      Result:=True;
    end;
var idxPos:Integer;
    link:string;
begin
    idxPos:=1;
    listURL.Clear;
    while True do begin
      idxPos:=PosEx('<a ', text, idxPos);
      if idxPos=0 then Break;
      Inc(idxPos, 2);
      idxPos:=PosEx('href=', text, idxPos);
      if idxPos<=0 then Continue;
      Inc(idxPos, 5);
      link:=Copy(text, idxPos, PosEx('>', text, idxPos)-idxPos);
      if (not NormalizeUrl(link)) then Continue;
      listURL.Add(link);
    end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var list:TStringList;
begin
  list:=TStringList.Create;
  FindURLs(AnsiLowerCase(Memo1.Lines.Text), list);
  Memo1.Lines:=list;
  list.Free;
end;

Автор: Elfebet 11.11.2006, 11:41
Код

procedure FindURLs(FileName: string; listURL:TStringList);
    function NormalizeUrl(var Url:String):Boolean;
    var i:integer;
    begin
      Result:=False;
      Url:=StringReplace(Url, '#13#10', '', [rfReplaceAll]);
      i:=Pos(' ', Url);
      if (i<>0) then Url:=Copy(Url, 1, i-1);
      Url:=StringReplace(Url, '"', '', [rfReplaceAll]);
      Url:=StringReplace(Url, '''', '', [rfReplaceAll]);
      if ((Pos(';', Url)<>0)or
          (Pos('@', Url)<>0)or
          (Pos('#', Url)<>0)or
          (Pos('mailto:', Url)<>0)or
          (Pos('file://', Url)<>0)) then Exit;
      if Url='' then Exit;
      Result:=True;
    end;

var idxPos:Integer;
    link, text:string;
    fileList:TStringList;
begin
    // загружаем файл и записываем данные в переменную text
    fileList:=TStringList.Create;
    fileList.LoadFromFile(FileName);
    text:=fileList.Text;
    fileList.Free;
    // ищем урлы
    idxPos:=1;
    listURL.Clear;
    while True do begin
      idxPos:=PosEx('<a ', text, idxPos);
      if idxPos=0 then Break;
      Inc(idxPos, 2);
      idxPos:=PosEx('href=', text, idxPos);
      if idxPos<=0 then Continue;
      Inc(idxPos, 5);
      link:=Copy(text, idxPos, PosEx('>', text, idxPos)-idxPos);
      if (not NormalizeUrl(link)) then Continue;
      listURL.Add(link);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var list:TStringList;
begin
  list:=TStringList.Create;
  FindURLs('твой файл', list);
  ShowMessage(list.Text);
  list.Free;
end;


оно?

Автор: lamos123456 11.11.2006, 12:10
Ага только как сделать чтобы все ссылки ещё и сохранялись, в файл?

Автор: Rodman 11.11.2006, 12:43
Код

   fileList:=TStringList.Create;
    fileList.SaveToFile(FileName);

Автор: lamos123456 11.11.2006, 12:53
Спасибо всё получилось!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)