|
안녕하세요~ 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);
}
//---------------------------------------------------------------------------
|