Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

Как удалить ссылку из RTF документа ?   Найти похожие ветки 

 
KygECHuK ©   (2006-05-05 14:34) [0]

Мне необходимо написать утилиту корая убирала ссылки из документов  формата  rtf.  Как это можно сделать ?


 
AlexanderMS ©   (2006-05-05 16:49) [1]

Попробуйте открыть RTF-файл, содежащего гиперссылку, в блокноте и посмотрите, как он оформляется, а также, как оформляется обычный текст. Сравните 2 варианта и сделайте выводы!


 
KygECHuK ©   (2006-05-05 17:04) [2]

Посмотрел. Сделала вывод что ине нужны более конкреьные рекомендации


 
AlexanderMS ©   (2006-05-05 17:24) [3]

Я не смотрел, но оформление текста с гиперссылкой должно отличаться от такового без гиперссылки. Затем, я думаю, можно через поиск замену.


 
KygECHuK ©   (2006-05-05 18:01) [4]

Да оно отличается и даже в нескольких местах и применение парсинга или замены текста слишком трудоёмко, я хочу найти болле простой способ, возможно какой-нибуть компонент или готовый алгоритм.


 
KygECHuK ©   (2006-05-11 15:17) [5]

Если кому интересно:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Mask, ToolEdit, Gauges;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ggProgress: TGauge;
   OpenDialog1: TOpenDialog;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
const
 ld_HYPER_LINK = "HYPERLINK";
 ld_FULL_BEGIN = "{\field{\*\fldinst";
 ld_STR_BEGIN  = "}{\fldrslt";
 ld_FULL_END   = "}}}";
var
 Form1: TForm1;

implementation

{$R *.dfm}
uses
 xtools;

procedure TForm1.Button1Click(Sender: TObject);
var
 HyperSizeS   : integer;
 FullBeginS   : integer;
 StrBeginS    : integer;
 FullEndS     : integer;
 FullBegin    : Integer;
 StrBegin     : integer;
 FullEnd      : integer;
 i, K, j      : Integer;
 L            : Int64;
 FileStream   : TFileStream;
 BigStr       : String;
 BuffStr      : String;
 FileName     : String;

 ForDebug     : String;
begin
 HyperSizeS := length(ld_HYPER_LINK);
 FullBeginS := length(ld_FULL_BEGIN);
 StrBeginS  := length(ld_STR_BEGIN);
 FullEndS   := Length(ld_FULL_END);

 if not OpenDialog1.Execute then exit;
 if not FileExists(OpenDialog1.FileName)then exit;
 FileStream := TFileStream.Create(OpenDialog1.FileName, fmOpenReadWrite);
 try

   SetLength(BigStr, cardinal(FileStream.Size));
   FileStream.Read(pointer(Pchar(BigStr))^, FileStream.Size);
   ggProgress.Progress := 0;
   ggProgress.MaxValue := FileStream.Size - 1;
   for i := 1 to length(bigstr) do
   begin
     ggProgress.Progress := i;
     if copy(BigStr, i, HyperSizeS) = ld_HYPER_LINK then
     begin
       for k := i downto 1 do
       if copy(BigStr, k, FullBeginS) = ld_FULL_BEGIN then
       begin
         FullBegin := k;
         Break;
       end;
       for k := i to length(bigstr) do
       if copy(BigStr, k, StrBeginS) = ld_STR_BEGIN then
       begin
         StrBegin := k;
         Break;
       end;
       for j := k to length(bigstr) do
       if copy(BigStr, j, FullEndS) = ld_full_end then
       begin
         FullEnd := j;
         Break;
       end;
       BuffStr := "{" + copy(BigStr, StrBegin + 24, FullEnd - StrBegin - 24) + "}";
       Delete(BigStr, FullBegin, (FullEnd + 3) - FullBegin);
       Insert(BuffStr, BigStr, FullBegin);
     end;
   end;
   FileStream.Position := 0;
   FileStream.Write(pointer(Pchar(BigStr))^, length(bigStr));
 finally
   FileStream.Free;
 end;
end;

end.




Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
4-1141194528
antonn
2006-03-01 09:28
2006.05.28
Блокировать сворачивание окна


15-1145997774
Любопытствующий
2006-04-26 00:42
2006.05.28
Где достать файлы звуковых эффектов?


2-1147515507
2006_A
2006-05-13 14:18
2006.05.28
Реогирование на кнопку "windows"


2-1147344647
apl
2006-05-11 14:50
2006.05.28
Про файлы


15-1146632993
Палтус
2006-05-03 09:09
2006.05.28
Browser Helper Object