C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[1733] RichEdit2.0에서 대용량 파일 읽기
홍환민 [] 4161 읽음    1999-08-08 00:00

안녕하세요? 홍환민입니다.

리치에디트에서 64KB 이상을 읽지 못하는 걸로 알고 있습니다.
물론 LoadFormFile을 이용하면 메모리 할당을 해주지만 말입니다.

64KB이상을 제가 만든 루틴으로 읽어서 리치에디트(정확히 말하면 RxRichEdit)
에 표시하려고 여러 글을 찾아보았는데
가장 확실해 보이는 놈이 EM_SETLIMITTEXT를 이용한 방법이었습니다.

그런데 제 경우에는 되지 않더군요.

다음은 제가 사용한 소스입니다.
(Editor가 TRxRichEdit 클래스이고, ReadFile은 제가 제작한 루틴입니다.)

유의하셔야 할 것은 아시겠지만 RichEdit 2.0을 지원하는 RxRichEdit를
사용한다는 점입니다.(2.0이라서 안될 가능성이 있다고 그러더라고요.)

--------------------------------------------------------------------------
  Buf: string;

  Buf := Editor.ReadFile(OpenDialog.FileName);
  SendMessage ( Editor.Handle, EM_SETLIMITTEXT, 0, Length(Buf) );
  Editor.Text := Buf;
--------------------------------------------------------------------------

Length(Buf) <- 이 부분의 문제는 아닌 듯 싶습니다. Length(Buf) + 10
으로 하거나 큰 값 여러개를 넣어서 테스트를 해보았는데 안되더군요.

ReadFile 함수부분도 보실 필요가 있을지 모르니 올립니다.

--------------------------------------------------------------------------
function THongRichEdit.ReadFile( FileName: string ) : PChar;
var
  F: file of Byte;
  FSize: Integer;
  BufferStartPoint: PChar;
  Buffer: PChar;
begin
  AssignFile(F, FileName);
  Reset(F);
  FSize := FileSize(F);
  GetMem(Buffer, FSize + 1);
  BufferStartPoint := Buffer;
  BlockRead(F, Buffer[0], FSize);
  Inc(buffer, FSize);
  buffer^ := #0;
  CloseFile(F);
  Result := BufferStartPoint;
end;
--------------------------------------------------------------------------

소스가 델파이군요. 양해바랍니다.

그럼 행복하세요~


+ -

관련 글 리스트
1733 RichEdit2.0에서 대용량 파일 읽기 홍환민 4161 1999/08/08
1735     Re:RichEdit2.0에서 대용량 파일 읽기 박지훈.임프 4422 1999/08/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.