본문 바로가기
Delphi/프로시저-함수

델파이 RTF (Rich Text Format) 사용방법

by MonoSoft 2021. 7. 21.
728x90
반응형

델파이 RTF (Rich Text Format) 사용방법

 

 

 

서식있는 텍스트 형식 의 약자인

 RTF 란? 

 

서식있는 텍스트 파일과 일반 텍스트 파일의 혼합

 

텍스트 파일과 달리 

RTF 파일은 굵게, 기울임 꼴, 밑줄, 글 머리 기호, 

다른 글꼴 및 텍스트 양쪽 맞춤과 같은

일부 서식 지정 기능을 제공합니다. 

그러나 전체 워드 프로세서에있는

모든 기능을 제공하지는 않습니다.

 

RTF 편집기의 예는 Microsoft WordPad입니다. 

그러나 모든 텍스트 또는 워드 프로세서 프로그램은 

RTF 문서를 만들 수있는 위에서 언급

한 서식 지정 기능을 사용하여 문서를 만들 수 있습니다.

 

일반 텍스트를 RTF 파일로 변환하는 방법

WordPad 또는 Microsoft Word와 같은

RTF 편집기에서 파일 일반 텍스트 파일을 엽니다.

 

일단 다른 이름 으로 저장 옵션을 선택하고 

파일 형식이 * .rtf, * .docx, * .odt

또는 다른 RTF 파일 형식인지 확인하십시오.

 

델파이에서 RTF 사용해보기

리치에디터에서 RTF 불러오기 

 

//Get the data from the database as AnsiString

rtfString := sql.FieldByName('rtftext').AsAnsiString;

 

//Write the string into a stream

stream := TMemoryStream.Create;

stream.Clear;

stream.Write(PAnsiChar(rtfString)^, Length(rtfString));

stream.Position := 0;

 

//Load the stream into the RichEdit

RichEdit.PlainText := False;

RichEdit.Lines.LoadFromStream(stream);

stream.Free;

 

DB에 RTF 형식으로 저장하기 

//Save to stream

stream := TMemoryStream.Create;

stream.Clear;

RichEdit.Lines.SaveToStream(stream);

stream.Position := 0;

 

//Read from the stream into an AnsiString (rtfString)

if (stream.Size > 0) then begin

    SetLength(rtfString, stream.Size);

    if (stream.Read(rtfString[1], stream.Size) <= 0) then

        raise EStreamError.CreateFmt('End of stream reached with %d bytes left to read.', [stream.Size]);

end;

 

stream.Free;

 

//Save to database

sql.FieldByName('rtftext').AsAnsiString := rtfString;

 

Delphi RTF Text

Function GetRTFtext(Const RichEdit: TRichEdit): String;

var

  MemoryStream : TMemoryStream;

  RTFText : AnsiString;

begin

  MemoryStream := TMemoryStream.Create;

  try

    RichEdit.Lines.SaveToStream(MemoryStream);

    MemoryStream.position := 0;

    if MemoryStream.size > 0 then

    SetString(RTFText, pchar(MemoryStream.Memory), MemoryStream.size);

  finally

    FreeAndNil(MemoryStream);

  end;

 

  Result := String(RTFText);

end;

 

추가 팁~!

For loading the rtf text:

//Get the data from the database as AnsiString

rtfString := sql.FieldByName('rtftext').AsAnsiString;

//Write the string into a stream

stream := TMemoryStream.Create;

stream.Clear;

stream.Write(PAnsiChar(rtfString)^, Length(rtfString));

stream.Position := 0;

 

//Load the stream into the RichEdit

RichEdit.PlainText := False;

RichEdit.Lines.LoadFromStream(stream);

stream.Free;

 

For saving the rtf text:

 

//Save to stream

stream := TMemoryStream.Create;

stream.Clear;

RichEdit.Lines.SaveToStream(stream);

stream.Position := 0;

 

//Read from the stream into an AnsiString (rtfString)

if (stream.Size > 0) then begin

SetLength(rtfString, stream.Size);

if (stream.Read(rtfString[1], stream.Size) <= 0) then

raise EStreamError.CreateFmt('End of stream reached with %d bytes left to read.', [stream.Size]);

end;

 

stream.Free;

//Save to database

sql.FieldByName('rtftext').AsAnsiString := rtfString;

728x90
반응형

'Delphi > 프로시저-함수' 카테고리의 다른 글

StringGrid의 Cell에 입력 값 제한  (0) 2023.06.02
초를 시간 분 초 형식으로 리턴  (0) 2021.07.22
델파이 JSON to Object 한줄  (0) 2021.07.20
델파이 프로시저와 함수  (0) 2021.07.19
델파이 기본함수  (0) 2021.07.15

댓글