Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
16-01-2006 03:49
function rtf2sgml(text: string): string;
{Funktion for att konvertera en RTF-rad till SGML-text.}
var
temptext: string;
start: integer;
begin
text := stringreplaceall(text, '&', '##amp;');
text := stringreplaceall(text, '##amp', '&');
text := stringreplaceall(text, '\' + chr(39) + 'e5', 'å');
text := stringreplaceall(text, '\' + chr(39) + 'c5', 'Å');
text := stringreplaceall(text, '\' + chr(39) + 'e4', 'ä');
text := stringreplaceall(text, '\' + chr(39) + 'c4', 'Ä');
text := stringreplaceall(text, '\' + chr(39) + 'f6', 'ö');
text := stringreplaceall(text, '\' + chr(39) + 'd6', 'Ö');
text := stringreplaceall(text, '\' + chr(39) + 'e9', 'é');
text := stringreplaceall(text, '\' + chr(39) + 'c9', 'É');
text := stringreplaceall(text, '\' + chr(39) + 'e1', 'á');
text := stringreplaceall(text, '\' + chr(39) + 'c1', 'Á');
text := stringreplaceall(text, '\' + chr(39) + 'e0', 'à');
text := stringreplaceall(text, '\' + chr(39) + 'c0', 'À');
text := stringreplaceall(text, '\' + chr(39) + 'f2', 'ò');
text := stringreplaceall(text, '\' + chr(39) + 'd2', 'Ò');
text := stringreplaceall(text, '\' + chr(39) + 'fc', 'ü');
text := stringreplaceall(text, '\' + chr(39) + 'dc', 'Ü');
text := stringreplaceall(text, '\' + chr(39) + 'a3', '£');
text := stringreplaceall(text, '\}', '#]#');
text := stringreplaceall(text, '\{', '#[#');
text := stringreplaceall(text, '{\rtf1\ansi\deff0\deftab720', ''); {Skall alltid tas bort}
text := stringreplaceall(text, '{\fonttbl', ''); {Skall alltid tas bort}
text := stringreplaceall(text, '{\f0\fnil MS Sans Serif;}', ''); {Skall alltid tas bort}
text := stringreplaceall(text, '{\f1\fnil\fcharset2 Symbol;}', ''); {Skall alltid tas bort}
text := stringreplaceall(text, '{\f2\fswiss\fprq2 System;}}', ''); {Skall alltid tas bort}
text := stringreplaceall(text, '{\colortbl\red0\green0\blue0;}', ''); {Skall alltid tas bort}
{I version 2.01 av Delphi finns inte \cf0 med i RTF-rutan. Tog darfor bort
det efter \fs16 och la istallet en egen tvatt av \cf0.}
//temptext := hamtastreng (text,'{\rtf1','\deflang');
//text := stringreplace (text,temptext,''); {Hamta och radera allt fran start till deflang}
text := stringreplaceall(text, '\cf0', '');
temptext := hamtastreng(text, '\deflang', '\pard'); {Plocka fran deflang till pard for att fa }
text := stringreplace(text, temptext, ''); {oavsett vilken lang det ar. Norska o svenska ar olika}
{Har skall vi plocka bort fs och flera olika siffror beroende pa vilka alternativ vi godkanner.}
//text := stringreplaceall (text,'\fs16','');{8 punkter}
//text := stringreplaceall (text,'\fs20','');{10 punkter}
{Nu stadar vi istallet bort alla tvasiffriga fontsize.}
while pos('\fs', text) > 0 do
begin
application.processmessages;
start := pos('\fs', text);
Delete(text, start, 5);
end;
text := stringreplaceall(text, '\pard\plain\f0 ', '<P>');
text := stringreplaceall(text, '\par \plain\f0\b\ul ', '</P><MELLIS>');
text := stringreplaceall(text, '\plain\f0\b\ul ', '</P><MELLIS>');
text := stringreplaceall(text, '\plain\f0', '</MELLIS>');
text := stringreplaceall(text, '\par }', '</P>');
text := stringreplaceall(text, '\par ', '</P><P>');
text := stringreplaceall(text, '#]#', '}');
text := stringreplaceall(text, '#[#', '{');
text := stringreplaceall(text, '\\', '\');
result := text;
end;
//Нижеприведенный кусок кода вырезан из довольно большой программы, вызывающей вышеприведенную функцию.
//Я знаю что мог бы использовать потоки вместо использования отдельного файла, но у меня не было времени для реализации этого
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.