Форум: "Начинающим";
Текущий архив: 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