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
[62755] Re:Re:문자 저장 질문입니다.감사합니다!!!
알론소 [smire4454] 1342 읽음    2010-10-23 17:53
이제서야 뒤늦게봤네요.,ㅠㅠ
감사합니다 엄청 끙끙댔는데
그때 끙끙대고 딴일생겨서
그거하고그러니까 답변 이제서야봤어요
이걸 한번 해봤는데
저장 제가원하는대로했는데
간혹 FFFFFF라던가 이상하게 들어가더라구요
데이터가 이상하게 들어와서 잘못된건지 아님 제 소스에 맞게 적절하게
약간 고쳐야하는지 더봐야할꺼같은대

손수 함수까지 짜주시고.ㅠㅠㅠㅠㅠ감동이.ㅠㅠ감이왔습니다
감사해요!!!!






박영목.월천 님이 쓰신 글 :
: 꾸벅... 저장은 잘 되신 것 같습니다.  눈으로 보기가 힘들어서 그렇지...
: HEXEDITOR로 보시면 잘 보일 것인데... 그냥 메모장 말고...
:
: 그래서 메모장에서도 볼 수 있게.. HEX로 저장하게 끔 바꾸어 보았습니다.
: 참고하시고...  문자열이나 어떤 DATA 이던지... HEX로 보시기 바랍니다.
: 보이는 문자 안보이는 문자 다 숫자로 나타나니... 어떻게 해야할지 판단할 수 있을 것입니다.
: 헥사에디터 사용합시다. 저희 때는 많이 사용했는 데...
:
: 칠레 광부님들 다 구조되셨네요....   기분이 좋군요.... ㅋㅋㅋ
:
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #include <stdio.h>
: #include <stdarg.h>
: #include <stdlib.h>
: #pragma hdrstop
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
:         : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
:
: AnsiString __fastcall PerfectFolder( AnsiString asFolder )
: {
:   if( asFolder.Length()<1 ) return asFolder;
:
:   asFolder = asFolder.TrimLeft();                                                          //Folder를 안정으로 보충하고
:   asFolder = asFolder.TrimRight();                                                         //fedDataFolder C:가 있는가?
:   if( asFolder[asFolder.Length()] != '\\' ) asFolder += "\\";
:
:   return asFolder;
: }
:
: bool __fastcall CreateFolder( AnsiString asFolder )
: {
:   asFolder = PerfectFolder( asFolder );
:
:   int len;
:   char *buf;
:   bool bRet;
:
:   bRet = true;
:
:   len = asFolder.Length();
:   buf = new char[len+1];
:
:   strncpy( buf, asFolder.c_str(), len );
:   buf[len] = 0x00;
:
:   for(int idx = 0; idx < len; idx++)
:   {
:     if(buf[idx] && buf[idx] != '\\') continue;
:
:     buf[idx] = '\0';
:
:     if( !DirectoryExists( buf ) )
:     {
:       if( CreateDir( buf )==false )
:       {
:         bRet = false;
:         break;
:       }
:     }
:     buf[idx] = '\\';
:   }
:
:   delete []buf;
:
:   //----------------------------------------------------------------------------
:
:   return bRet;
: }
:
: void  AddMsg( char* pformat, ...)
: {
:     FILE *fp;
:     String strTime, dirname, strBuf, sIniName;
:     char buff[8192];
:     va_list argptr;
:
:     sIniName = ExtractFilePath(Application->ExeName);
:     strTime = FormatDateTime("yyyymmddhhnnss", Now());
:
:     AnsiString asFolder;
:     asFolder.sprintf("%sLOG", sIniName.c_str() );
:     CreateFolder( asFolder );   //폴더를 없으면 만드는 부분, 폴더 없으면 저장이 안되니..
:
:     dirname.sprintf("%sLOG\\%8.8s.log", sIniName.c_str(), strTime.c_str()+2);
:
:     va_start(argptr, pformat);
:     int len = vsprintf(buff, pformat, argptr);
:     va_end(argptr);
:
:     strBuf.sprintf("%s %d, %s\n", strTime, len, buff);
:
:     //중간 중간 메세지 띄워 보시던지...
:     //아니면 Memo장 하나 붙혀서 그 안으로 들어오게 하는 것이 더 좋을 것인데..
:     //뭐 파일에 저장하셔도 되고.....
:
:     AnsiString asImsi = strTime + "\nFORMAT: " + AnsiString(pformat) + "\nDATA: ";
:
:     char str[10];
:     int i=0;
:     while( i<len )
:     {
:       wsprintf( str, "%02X ", buff[i] );     //문자 마다 보기 쉽게 간격을 하나씩 주었는 데
:                                                          //이게 또 헷갈릴 수도 있으니 잘 보셔야지..
:       asImsi += str;
:       i++;
:     }
:
:     //계속 한 파일에 연이어 저장될 수 있도록 했습니다.
:     if((fp = fopen(dirname.c_str(),"a+b"))==NULL) return;
:     //fprintf(fp, "%s\n", strBuf);
:     fseek( fp, 0, SEEK_END );
:     fprintf(fp, "%s\n\n", asImsi.c_str() );
:     fclose(fp);
: }
:
:
: //%c 씩으로 포멧이 넘어 오면   문자들 나타날 수 있습니다.
: //ASCII에 문자로 표현 안되는 것들이지요.   ASCII 코드표는 있지요? 인터넷 찾으면 많이 있음
: //그러니까 이런 중간 값을 보려고 하면 HEX로 표현하면 분석하기에 좋겠지요.
: //그냥 저장하시고 HEXEDITER로 보셔도 되겠지만...
: //그리고 이런 경우는 FORMAT도 관찰해야 합니다. 포멧도 언제 바뀔지 모르니...
: //어떤 포멧 유형으로 넘어올 때 이때는 이렇게 하면 되겠다.
: //감이 오겠지요...
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:   AddMsg( "%d %d %c", 1, 2, 'A' );           //끝에 /n 없이
:   AddMsg( "%c %c %c %d\n", 1, 2, 'A', 40 );  //끝에 /n 있게  한줄 더 띄워지겠지요
: }
: //---------------------------------------------------------------------------
:
:
:
:
: 알론소 님이 쓰신 글 :
: : 파일저장하는건데
: : 이건책에도나와있는거고 기본적인건데도
: : 불구하고 질문하기가 좀 죄송한대요
: :
: : 계속생각해봤는데 되질않아서요
: : 제가 데이터를 받는데 텍스트파일에 있는것을
: : 받습니다 그래서
: : 데이터를 리드하면
: : 일단 잘들어옵니다
: : 근데 이것을 DB에 저장을 해야하는데
: :
: : 들어오는것이 텍스트로 들어오고 어떻게
: : 처리해야할지 몰라서 일단 메모장에 저장해서
: : 어떻게 들어오나 확인해보고싶어서
: : 파일로 저장하고싶은데
: :
: : 아래가 파일로 저장하는 함수입니다
: : 데이터를 여기로 넘기는대요
: :
: : void AddMsg(const char* pformat, ...)
: : {
: :     FILE *fp;
: :     String strTime, dirname, strBuf, sIniName;
: :     char buff[8192];
: :     va_list argptr;
: :
: :     sIniName = ExtractFilePath(Application->ExeName);
: :     strTime = FormatDateTime("yyyymmddhhnnss", Now());
: :
: :     dirname.sprintf("%s\\LOG\\%8.8s.log", sIniName.c_str(), strTime.c_str()+2);
: :
: :     va_start(argptr, pformat);
: :     vsprintf(buff, pformat, argptr);
: :     va_end(argptr);
: :
: :     strBuf.sprintf("%s %s\n", strTime, buff);
: :
: :     if((fp = fopen(dirname.c_str(),"a"))==NULL) return;
: :     fprintf(fp, "%s\n", strBuf);
: :     fclose(fp);
: : }
: :
: : 그래서 확인해보려고가면
: : 
: : 식으로 저장이 되는거에요
: : 그래서 요리조리 바꿔보고 그랬는데도 잘되지가않네요
: :
: : 보통 char 배열에 저장해서
: : ansisitring 변수에 sprintf 함수를 이용해서 char배열의 문자를
: : 저장한 뒤 이걸 저기 위의 함수에 넘기는대요
: :
: : 
: : 식으로 저장되니까 어떻게 해야할지 모르겠습니다
: : 제가 문자 처리를 잘못하는건지.ㅠㅠ도와주세요

+ -

관련 글 리스트
62670 문자 저장 질문입니다. 알론소 1150 2010/10/13
62676     Re:문자 저장 질문입니다. 박영목.월천 1231 2010/10/14
62755         Re:Re:문자 저장 질문입니다.감사합니다!!! 알론소 1342 2010/10/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.