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
[41296] Re:Re:Re:답변 감사합니다.~~ 처음 글을 올려봤는뎅 ㅜ_ㅜ
칼스 [kalsaint] 991 읽음    2005-08-02 16:41
감사합니다요~~(ㅡㅡ)(__)
다시 시작하는 마음으로~~^_^


유영인  Cuperido 님이 쓰신 글 :
: Edit->Text는 텍스트기 때문에, 상수를 입력했다 하더라도 텍스트 자체로 간주됩니다.
: 그래서, 파일을 쓰기 위해서 상수가 필요한 것이 아니라, 문자열 스트링이 필요합니다.
:
: Out of memory가 나는 이유는,
: >>  for (int x=0;x<array[4];x++)
:
: 이 부분 때문입니다. array[4] 로 처음 객체를 잡았기 때문에, 실질적인 객체는
: array[0], array[1], array[2], array[3], 인데, array[4]를 참조하여 엉뚱한
: 메모리 번지를 참고하기 때문에 그때그때 마다 결과가 틀려지는 것입니다.
:
: for(int x = 0; x < 4; x ++)
: 이런식으로 하셔서, array[x] 이렇게 참조 하시는 것이 좋으실 것 같습니다.
:
: 파일 입출문 형식을 그대로 사용하시는 것도 좋으실텐데요,
: 아래와 같이 StringList를 이용하시는 것도 아주 편합니다.
:
:  TStringList       *slList = new TStringList;
:
:
:  // 초기화
:  slList->Clear();
:
:  // 객체 더하기
:  slList->Add(Edit1->Text);
:  slList->Add(Edit2->Text);
:  slList->Add(Edit3->Text);
:  slList->Add(Edit4->Text);
:
:  // Test.txt 로 저장
:  slList->SaveToFile("Test.txt");
:
:  delete slList;
:
:
: cuperido
:
: 칼스 님이 쓰신 글 :
: : 자문 자답 비스무리하게 됬군요 ㅡㅡ;
: : 암튼 for문쪽에 실수로 배열을 통째로 넣어버린것을 캐치~ 바~로 바꿔주구요, 다른곳도 약간 고쳐주니깐 이젠 에러없이 저장이 잘 됩니다~
: : 단, 저장이 잘 되는건지 안되는건지 통 알수가 없다는거죠~
: : 우선 그냥 저장했을때 [                                                                   ]<--이런식으로 저장이 되구요~
: : 약간 바꿔서 array[4].c_str();를 추가한후에 저장했을땐
: : [   ?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w?팥w]<--이런식이더군요
: : 왠지 저장이 이상하게 된거 같은데 고수님들 답변 좀 부탁합니다. ㅜ_ㅜ
: :
: :
: :
: : 한봉수 님이 쓰신 글 :
: : : 에~ 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);
: : :   }

+ -

관련 글 리스트
41293 [질문] 배열을 파일로 저장하는 법좀 부탁드립니다. 한봉수 1375 2005/08/02
41294     Re:[질문] 혼자 해본결과~ 고수님 도와주세요!!!! 칼스 975 2005/08/02
41295         Re:Re:[질문] 혼자 해본결과~ 고수님 도와주세요!!!! 유영인 Cuperido 1003 2005/08/02
41296             Re:Re:Re:답변 감사합니다.~~ 처음 글을 올려봤는뎅 ㅜ_ㅜ 칼스 991 2005/08/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.