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
[57210] 안녕하세요 질문드릴것이 있어서 글을 올려봅니다...
헬프미미미미 [] 944 읽음    2009-06-10 22:50
안녕하세요~ C언어 공부를 다시 시작하고 있는 휴학생 입니다...
첨부터 다시하려니 어렵내요 ㅠ
질문드릴것이 있어서 글을 올립니다.
지금 하고잇는것이 주소록 프로그램인데
구조체를 선언한 뒤 파일을 바이너리 형태로 저장을 하고 (저장버튼을 누름니다.)<<---요기까지는 얼추 된듯합니다.

여기서부터 제가 못한점입니다... 
수정을 하고싶을때  저장되어있던 값을 불러내어 수정을 해야합니다.  수정이 되었다면 당연히<<--수정버튼누를때
파일안에 있는 내용도 함께 수정이 되어야 겠지요,,,
그리고 삭제 버튼을 만들어서 선택된 부분에 대해서 이름,전화번호,이메일,나이 <--이것들이 삭제가
되어야 하는데,,,,

무턱대고 하려니까 잘안되내요,,어떤 함수나 어떤 형식이다 이런것을 몰라서요,,,
공부한지 2주 뿐이 안되서요,,,

아시는 분이 있으시다면
여기를 고쳐주세요 여기를 이렇게 하세요 
이런 간단한 말이라도 감사 합니다 기왕이면 초보인 저를 배려하셔서 쉽게 풀이 해서 말씀 해주셧으면 좋겟습니다.

소스 한번 올려 보겟습니다.
메인에 선언되어진 구조체
  struct  myname
  {
    char name[10];
    char phon[10];    //namea
    char mail[20];    //woname
    int age;
  };

cpp소스 내용 입니다.
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
TStringList *ListName;
TStringList *ListAge;
TStringList *ListPhone;
TStringList *ListEmail;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    struct myname save;
  if(txtName->Text.Trim().IsEmpty()) ShowMessage("이름을 입력해주세요.");
  else if(txtAge->Text.Trim().IsEmpty()) ShowMessage("나이를 입력해주세요.");
  else if(txtPhon->Text.Trim().IsEmpty()) ShowMessage("전화번호를 입력해주세요.");
  else if(txtMail->Text.Trim().IsEmpty()) ShowMessage("e-mail주소를 입력해주세요.");
  if(ComboName->Items->IndexOf(txtName->Text) <0){
    ComboName->AddItem(txtName->Text,NULL);

    ListName->Add(txtName->Text);
    ListAge->Add(txtAge->Text);
    ListPhone->Add(txtPhon->Text);
    ListEmail->Add(txtMail->Text);

   // ComboName->Items->SaveToFile("ComboName.dat");

   // ListName->SaveToFile("ListName.dat");
   // ListAge->SaveToFile("ListAge.dat");
   // ListPhone->SaveToFile("ListPhone.dat");
   // ListEmail->SaveToFile("ListEmail.dat");
       }



  strcpy(save.name,txtName->Text.Trim().c_str());
  strcpy(save.phon,txtPhon->Text.Trim().c_str());
  strcpy(save.mail,txtMail->Text.Trim().c_str());
  save.age =txtAge->Text.ToInt() ;
  FILE *fp = fopen("test.dat","ab");
  fwrite(&save, sizeof(save),1,fp);
  ShowMessage(StringReplace(AnsiString(save.name), " ", "", TReplaceFlags()<<rfReplaceAll ) + "\n나이 " + AnsiString(save.age) +"세이며,\n전화번호는"
  + StringReplace(AnsiString(save.phon), " ", "", TReplaceFlags()<<rfReplaceAll ) + "이며,\ne-mail은 "
  +StringReplace(AnsiString(save.mail), " ", "", TReplaceFlags()<<rfReplaceAll ) );
  fclose(fp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    // TStringList 초기화
    ListName = new TStringList;
    ListAge = new TStringList;
    ListPhone = new TStringList;
    ListEmail = new TStringList;

    // 저장된 주소록 내용을 읽는다.
      ComboName->Items->LoadFromFile("ComboName.dat");

    ListName->LoadFromFile("ListName.dat");
    ListAge->LoadFromFile("ListAge.dat");
    ListPhone->LoadFromFile("ListPhone.dat");
    ListEmail->LoadFromFile("ListEmail.dat");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboNameChange(TObject *Sender)
{
    // Combo가 선택되면 해당되는 Index에 맞는 주소록 내용을 Text에 표시한다.
    txtName->Text = ListName->Strings[ComboName->ItemIndex];
    txtAge->Text = ListAge->Strings[ComboName->ItemIndex];
    txtPhon->Text = ListPhone->Strings[ComboName->ItemIndex];
    txtMail->Text = ListEmail->Strings[ComboName->ItemIndex];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::txtAgeKeyPress(TObject *Sender, char &Key)
{
    if ((Key<47 || Key>58) && Key!=8) Key=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{

  ListName->Strings[ComboName->ItemIndex];
  ListAge->Strings[ComboName->ItemIndex];
  ListPhone->Strings[ComboName->ItemIndex];
  ListEmail->Strings[ComboName->ItemIndex];

    //ComboName->Items->SaveToFile("ComboName.dat");

  //ListName->SaveToFile("ListName.dat");
// ListAge->SaveToFile("ListAge.dat");
// ListPhone->SaveToFile("ListPhone.dat");
// ListEmail->SaveToFile("ListEmail.dat");



}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
    ComboName->Items->Delete(1);
  ListName->Delete(1);
  ListAge->Delete(1);
  ListPhone->Delete(1);
  ListEmail->Delete(1);
  //ComboName->Items->SaveToFile("ComboName.dat");

  //ListName->SaveToFile("ListName.dat");
  //ListAge->SaveToFile("ListAge.dat");
  //ListPhone->SaveToFile("ListPhone.dat");
  //ListEmail->SaveToFile("ListEmail.dat");

  txtName->Text = "";
  txtAge->Text = "";
  txtPhon->Text = "";
  txtMail->Text = "";


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
      struct myname save;
        FILE *fp = fopen("test.dat","rb");
    //fseek(fp, sizeof(save)*index, SEEK_SET);
    fread(&save, sizeof(save),1,fp);
    fclose(fp);
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
57210 안녕하세요 질문드릴것이 있어서 글을 올려봅니다... 헬프미미미미 944 2009/06/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.