기록

[VCL] 파일을 선택해서 읽어오기 본문

Desktop

[VCL] 파일을 선택해서 읽어오기

youngyin 2025. 2. 3. 11:50

시작하면서

이 포스팅에서는 C++ Builder를 사용하여 파일을 읽고 그 내용을 화면에 표시하는 기능을 구현하는 예제를 소개합니다. 간단한 사용자 인터페이스(UI)를 설정하고, 파일을 선택하고 읽을 수 있는 버튼을 추가하여 사용자가 쉽게 파일 내용을 확인할 수 있도록 합니다.

Source

  1. UI 설정
    (1) TEdit을 하나 만들고, EdtFilePath로 name을 지정한다.
    (2) TButton을 하나 만들고, BtnOpenFile로 name을 지정한다.
    (3) TButton을 하나 만들고, BtnRead로 name을 지정한다.
    (4) TMemo를 하나 만들고, MmResult로 지정한다.
  2. Open file
    BtnOpenFile 버튼을 더블클릭하여 이벤트 함수를 작성합니다.
void __fastcall TFormMain::BtnOpenFileClick(TObject *Sender)
{
    TOpenDialog *OpenDialog = new TOpenDialog(this);
    OpenDialog->Filter = "INI Files (*.ini)|*.ini|All Files (*.*)|*.*";
    OpenDialog->Title = "Open a File";

    if (OpenDialog->Execute())
    {
        EdtFilePath->Text = OpenDialog->FileName;
    }

    delete OpenDialog;
}
  1. Read file
    BtnRead 버튼을 더블클릭하여 이벤트 함수를 작성합니다.
void __fastcall TFormMain::BtnReadClick(TObject *Sender)
{
    if (EdtFilePath->Text.IsEmpty())
    {
        ShowMessage("파일 경로가 비어 있습니다.");
        return;
    }

    TStringList *FileContent = new TStringList();
    try
    {
        FileContent->LoadFromFile(EdtFilePath->Text);
        MmResult->Lines->Assign(FileContent);
    }
    catch (const Exception &e)
    {
        ShowMessage("파일을 읽는 데 오류가 발생했습니다: " + e.Message);
    }

    delete FileContent;
}

마무리하면서

(1) 결과

 

(2) TMemo vs TLabel vs TEdit vs TStaticText
C++ Builder에서 사용되는 다양한 컴포넌트는 각기 다른 용도로 설계되어 있습니다. TMemo는 여러 줄의 텍스트를 입력하거나 표시할 수 있는 컴포넌트로, 사용자가 내용을 수정할 수 있으며 스크롤이 가능하다는 특징이 있습니다. 반면, TLabel은 단순한 텍스트를 표시하는 용도로 사용되며, 사용자가 수정할 수 없는 고정된 텍스트를 제공합니다. TEdit는 한 줄의 텍스트를 입력받을 수 있는 컴포넌트로, 사용자가 직접 내용을 수정할 수 있습니다. 마지막으로, TStaticText는 고정된 텍스트를 표시하는 컴포넌트로, 주로 사용자에게 정보를 제공할 때 사용됩니다.

 

(3) TMemo의 ScrollBars 속성
또한, TMemo의 ScrollBars 속성은 스크롤바의 표시 여부를 결정합니다. 이 속성은 ssNone, ssHorizontal, ssVertical, ssBoth와 같은 다양한 값을 가질 수 있습니다. 적절한 스크롤바 설정을 통해 TMemo의 내용을 쉽게 탐색할 수 있으며, 사용자 경험을 개선하는 데 도움을 줄 수 있습니다.

  • ssNone: 스크롤바가 표시되지 않습니다.
  • ssHorizontal: 수평 스크롤바만 표시됩니다.
  • ssVertical: 수직 스크롤바만 표시됩니다.
  • ssBoth: 수평 및 수직 스크롤바가 모두 표시됩니다.
Comments