|
에~ C++빌더를 한지 언 1주 조금 넘은 초보자 입니다.
제가 하다가 계속 에러가 나는 부분은 일반적으로 Edit에서 받은 값을 파일로 저장하는걸 해볼려구 하는데요
컴파일까지는 되는데 값을 넣고 확인버튼을 누르면 'String'을 'Double'로 바꿀수가 없다고 예외가 떠버리더군요~
혹은 'Out Memory'라는....루프 돌린것도 아닌데요 ㅜ_ㅜ
그래서 부탁드립니다~~
array[0]~[2]까지는 일반 문자형으로(숫자 포함), [3]은 숫자를 받을려고 하는데 에러가 뜬답니다.
AnsiString쪽 메서드를 바도 정확하게 바꿀 방법이 안보이더군요~
.c_str()를 써도 역시 값을 넣고 하면 에러~ 지금 대략 gg니다~
다른곳에서 찾으니깐 AnsiString 같은 경우는 10진수로 변환해서 저장할수도 있다고 하던데 혹시
정확한 방법 아시는분은 쫌 답변부탁드립니다. 그럼
ps~ 제가 아직 문법을 잘 모른답니다.~ 이해해 주세요^^
char szFileName[MAXFILE+4];
int iFileHandle;
int iLength;
AnsiString array[4];
array[0]=Edit1->Text;//문자형으로 변환 or 헥사를 10진수로 변환해야함
array[1]=Edit2->Text;
array[2]=Edit3->Text;//여기까지
array[3]=Edit4->Text;//여기는 일반 상수
if (SaveDialog1->Execute())
{
if (FileExists(SaveDialog1->FileName))
{
fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0);
strcat(szFileName, ".BAK");
RenameFile(SaveDialog1->FileName, szFileName);
}
iFileHandle = FileCreate(SaveDialog1->FileName );
// Write out the number of rows and columns in the grid.
FileWrite(iFileHandle, (char*)&(array[4]), sizeof (array[4]));
for (int x=0;x<array[4];x++)
{
for (int y=0;y<array[4];y++)
{
// Write out the length of each string, followed by the string itself.
iLength = array[4].Length();
FileWrite(iFileHandle, (char*)&iLength, sizeof(iLength));
FileWrite(iFileHandle, array[4].c_str(), array[4].Length());
}
}
FileClose(iFileHandle);
}
|