Главная страница
    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
3-1144073895
Anton_beginer
2006-04-03 18:18
2006.05.28
XP и MDAC - не встает


2-1147245971
KyRo
2006-05-10 11:26
2006.05.28
Вопрос по сервисам и реестру


2-1147434529
Sergey17
2006-05-12 15:48
2006.05.28
Использование UPDATE SQL (Delphi 7)


2-1147154902
Sergey Masloff
2006-05-09 10:08
2006.05.28
Проблема с кодировками. Написал плагин к Outlook но сабж...


1-1145128372
Volf_555
2006-04-15 23:12
2006.05.28
Проблема с вызовом процедуры из DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский