|
안녕하세요 많은 도움 얻고있는 초보개발자 입니다 ^^
파일 생성 관련하여 질문드리겠습니다. 많은 관심 부탁 드립니다.^^
아래 코드처럼 해당 디렉토리에 파일이없으면 파일을 만들고 파일이 있으면 오픈해서 기록하겠다는
함수중 일부입니다. 그냥 이 함수만 사용하면 별무리없이 잘 만들고 잘 열고 잘써지고 아주 잘 됩니다.
그런데 다른폼에서 StringGird의 내용을 TSaveDialog를 이용하여 저장할 경로를 받아 저장하고
ini파일 형식으로 확장자만 .pos라고 임의로 지정하여 파일을 저장한 후 아래 함수를 실행하면
아래 함수에서 파일생성이 되지 않네요...
FileHandle값이 -1로 들어오는 문제인데요...TSaveDialog로 저장할때 제가 뭘 잘못한건지 모르겠네요..
//A폼에서 파일을 생성 혹은 열어 기록하는 함수///////////////////////////////////////////////////////////////
if(!FileExists(FullFilePath))
{
FileHandle = FileCreate(FullFilePath);
}
else
{
FileHandle = FileOpen(FullFilePath, fmOpenWrite);
}
if (FileHandle==-1)
{
return false;
}
FileSeek(FileHandle,0,2);
FileWrite (FileHandle, FullComment.c_str() ,FullComment.Length() );
FileClose(FileHandle);
return true;
// TSaveDialog를 이용하여 파일을 저장하는 함수//////////////////////////////////////////////////////////////
void __fastcall TfrmMotor::btnSaveClick(TObject *Sender)
{
String path,SaveFileName,FileType,fullpath;
int length;
if( savedlgMotor->Execute() )
SaveFileName = savedlgMotor->FileName.c_str();
else
return;
length = SaveFileName.Length();
FileType = SaveFileName.SubString(length - 3,4);
if(FileType == ".pos")
path = SaveFileName;
else
path = SaveFileName + ".pos"; //SaveDialog에서 기존 파일을 선택했을때 .pos 없으면 pos붙임
if(FileExists(path)) //같은 이름의 파일이 있을경우 덮어쓸지 물어본다.
{
if(MessageBox(Application->Handle,"이미 존재하는 파일입니다. 덮어 쓰시겠습니까?","모터데이터 정 보",MB_OKCANCEL|MB_ICONINFORMATION) ==ID_OK)
{
for(int MotorNo = 0; MotorNo < MOTORCOUNT; MotorNo++)
{
for(int PosNo = 0; PosNo < POSITION_COUNT; PosNo++)
{
//ini파일로 파일을 쓰는내용
}
}
}
}
else
{
for(int MotorNo = 0; MotorNo < MOTORCOUNT; MotorNo++)
{
for(int PosNo = 0; PosNo < POSITION_COUNT; PosNo++)
{
//ini파일로 파일을 쓰는내용
}
}
}
//savedlgMotor->Free();
}
|