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
[28026] Re:[질문] 메모장에서..
김용수 [heredity] 1119 읽음    2003-11-29 20:56

*** Unit1.Cpp ***

  //---------------------------------------------------------------------------
  // 기    능 : Edit에서 일력한 내용을 Memo1에 역순으로 추가한다.
  //            추가시 Memo1의 Line수가 Limit보다 크면 가장 나중에 입력된
  //            내용을 Memo1에서 제거한다.
  // 작 성 일 : 2003-11-29
  // 작 성 자 : 김용수
  // 설    명 : 특별한 설명할 부분이 없어 보입니다. 다만 ① File 추가부분과
  //            ② Memo1에 추가하는 부분을 별개로 처리하는 것이 복잡도를
  //            줄일 수 있음으로 ①과 ②를 별도로 처리할 것을 권장합니다.
  //            참, TMemo는 Windows 객체로 OS에 따라 편집 정도가 다릅며,
  //            모는 Windows계열의 OS에서 사용할 수 있도록 하시려면 가장 작은
  //            편집 용량을 가진 OS(예: Windows 95 등)에 맞추시는게 좋을 듯 합니다.
  //            참고로 Windows 95의 경우 64K 이하(Line 수보단 전체 용량이 그 크기를
  //            좌우하며, 실제 용량은 이보다 더 적음)로 제한 하시면 좋을 듯 합니다.
  // 질    문 : void TMain::Write()
  //            {
  //                MemoM1->SelStart  = 0;
  //                MemoM1->Lines->Add(str1);
  //                MemoM1->Lines->Add(str);
  //            }
  //            위와 같이 쓰면 위 함수를 호출할때마다
  //            메모장맨위에 글을 쓰고 이전에 썼던글은 아래로 내려왔으면 합니다.
  //            즉, 나중에 쓴글이 항상 매모장의 맨위에 위치 할수 있도록 하고 싶습니다.
  //            그리고,메모장의 한계가 어느정도인지 알고 싶습니다.
  //            한 몇라인정도인지가 궁금합니다.
  //            왜냐하면 어느정도 차이게 되면 화일로 관리할려고 합니다.
  //            그리고, 화일관리를 할때 어느 정도 사이즈가 차면 그전에
  //            메모리장에 출력된내용은 화일로 저장할려면 어떻게 하면 되나여?
  //---------------------------------------------------------------------------

  #include <vcl.h>
  #pragma hdrstop

  #include "Unit1.h"
  //---------------------------------------------------------------------------
  #pragma package(smart_init)
  #pragma resource "*.dfm"
  TForm1 *Form1;
  //---------------------------------------------------------------------------
  __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
  {
  }
  //---------------------------------------------------------------------------

  void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
  {
    if(Key == '\r') {
      int nMax = 50;
      int nCnt;
      AnsiString asStr = Edit1->Text;

      Key = '\0';

      //-------------------------------------------------
      // asStr를 Text File에 추가하는 부분을 아래에 추가 .... ①
      // ...

      //-------------------------------------------------
      // asStr를 Memo1에 추가하기 ............................ ②

      Memo1->Lines->Insert( 0, asStr );
      nCnt = Memo1->Lines->Count;

      while( nCnt > nMax ) {
        Memo1->Lines->Delete( --nCnt );
      }
    }
  }
  //---------------------------------------------------------------------------


*** Unit1.h ***

  //---------------------------------------------------------------------------

  #ifndef Unit1H
  #define Unit1H
  //---------------------------------------------------------------------------
  #include <Classes.hpp>
  #include <Controls.hpp>
  #include <StdCtrls.hpp>
  #include <Forms.hpp>
  //---------------------------------------------------------------------------
  class TForm1 : public TForm
  {
  __published:    // IDE-managed Components
    TEdit *Edit1;
    TMemo *Memo1;
    void __fastcall Edit1KeyPress(TObject *Sender, char &Key);
  private:    // User declarations
  public:        // User declarations
    __fastcall TForm1(TComponent* Owner);
  };
  //---------------------------------------------------------------------------
  extern PACKAGE TForm1 *Form1;
  //---------------------------------------------------------------------------
  #endif


*** Unit1.dfm ***

  object Form1: TForm1
    Left = 252
    Top = 108
    Width = 603
    Height = 366
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object Edit1: TEdit
      Left = 0
      Top = 0
      Width = 595
      Height = 21
      ImeName = '한국어(한글) (MS-IME98)'
      TabOrder = 0
      OnKeyPress = Edit1KeyPress
    end
    object Memo1: TMemo
      Left = 0
      Top = 24
      Width = 595
      Height = 315
      ImeName = '한국어(한글) (MS-IME98)'
      TabOrder = 1
    end
  end
====================================================================

초보 님이 쓰신 글 :
: void TMain::Write()
: {
:     MemoM1->SelStart  = 0;
:     MemoM1->Lines->Add(str1);
:     MemoM1->Lines->Add(str);
: }
: 위와 같이 쓰면 위 함수를 호출할때마다
: 메모장맨위에 글을 쓰고 이전에 썼던글은 아래로 내려왔으면 합니다.
: 즉, 나중에 쓴글이 항상 매모장의 맨위에 위치 할수 있도록 하고 싶습니다.
: 그리고,메모장의 한계가 어느정도인지 알고 싶습니다.
: 한 몇라인정도인지가 궁금합니다.
: 왜냐하면 어느정도 차이게 되면 화일로 관리할려고 합니다.
: 그리고, 화일관리를 할때 어느 정도 사이즈가 차면 그전에
: 메모리장에 출력된내용은 화일로 저장할려면 어떻게 하면 되나여?
:

+ -

관련 글 리스트
28018 [질문] 메모장에서.. 초보 758 2003/11/29
28026     Re:[질문] 메모장에서.. 김용수 1119 2003/11/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.