Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

Как удалить ссылку из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
15-1146420362
Meson_
2006-04-30 22:06
2006.05.28
Вопрос по железу. Принтер HP 2610: ошибка при включении


6-1138704192
Vladislav V
2006-01-31 13:43
2006.05.28
Печать


15-1146570229
DVM
2006-05-02 15:43
2006.05.28
Программно передать координаты в Ozi Explorer. Как?


15-1146055921
Nic
2006-04-26 16:52
2006.05.28
Что для России означает снижение курса доллара?


2-1147081029
BAngel
2006-05-08 13:37
2006.05.28
События мышки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский