Vi bruger denne kodestump:
function StripRTF(aString: string): string;
var
bsl: boolean;
i, cntb: integer;
begin
result := aString;
if not AnsiContainsText(aString, 'rtf') then
Exit;
cntb := 0;
bsl := false;
for i := 1 to length(Result) do
begin // aString tag characters shown as literals for clarity
case result[i] of
'{': Inc(cntb);
'}': Dec(cntb);
'\': bsl := True;
' ': bsl := False;
end; // case
if (cntb > 1) or bsl then
result[i] := #32;
end; // for
System.Delete(result, 1, Pos('}', result)); // delete initial aString tag
for i := length(result) downto 1 do
if result[i] < #32 then // substitute Space for ctrl characters
result[i] := #32;
result := trim(result);
end;
Da teksterne plejer at ligge i et blob-felt i en database, har vi tit også brug for denne lille funktion:
function StreamToString(aStream: TStream): string;
var
StringStream: TStringStream;
begin
StringStream := TStringStream.Create('');
try
StringStream.CopyFrom(aStream, 0);
result := StringStream.DataString;
finally
StringStream.Free;
end;
end;