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
[19747] Re:isam화일을 변환하는데 화일입출력시 문제 숫자부분 처리가 안됩니다.
유영인.Chris [cuperido] 872 읽음    2002-07-02 15:57
표준 바이너리 변환 방식을 사용한다면, 아래와 같은 비트 연산으로 처리하실 수 있습니다. 단, signed 인지 unsigned 변수인지에 따라 값이 틀려지므로, 변환을 하시기 전의 바이너리 숫자 저장 루틴에서의 signed-unsigned 여부를 확인하시기 바랍니다.


//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

char    readcnt[4];
int     itValue = 0, itTemp, itTag = 1;


for(itTemp = 0; itTemp < sizeof(readcnt); itTemp ++) {
   itValue += readcnt[itTemp] * itTag;
   itTag   *= 0x0100;
}


ShowMessage(itValue);

}
//---------------------------------------------------------------------------



김영대 님이 쓰신 글 :
: typedef struct board_isam_tag {
:     char bunho[5];        /* 게시번호 */
:     char id[12];        /* 작성아이디 */
:     char name[20];        /* 작성자 이름*/
:     char date[10];        /* 작성날짜 */
:     char readcnt[4];    /* 조회수 */
: } BOARD_ISAMREC;
:
:
:
: BOARD_ISAMREC board_isamrec;
:
:
: if ((stream = fopen(cOpenDialog->FileName.c_str(), "rb")) == NULL)
: {
:     fprintf(stderr, "Cannot open input file.\n");
: }
:
: fread(&board_isamrec, sizeof(board_isamrec)+1, 1, stream);
:
:
: I-SAM 화일로 된걸 포팅하고 있습니다. (유닉스에서 -> 윈도우 실빌더) 문자는 리딩이 잘됩니다. 그런데 문제는     char readcnt[4];    /* 조회수 */  부분입니다. 아스키형태로 저장된게 아니고 숫자형태로저장되어 있는것 같네요. 원소스에서는 ldlong((char *)&board_isamrec.readcnt) 이런식으로 값을 뽑아냈는데. ldlong가 외부 함수같기는 한데 시빌더에는 제공하지 않는 함수네요.. (char *)&board_isamrec.readcnt 부분도 컴파일 에러나오고 바이러니입출력은 처음이여서 고수님이 많은 조언부탁드립니다. (비트연산자 쓰면 어떻게 될것 같은데.. 머리가 짧아서 ^^)
:

+ -

관련 글 리스트
19724 isam화일을 변환하는데 화일입출력시 문제 숫자부분 처리가 안됩니다. 김영대 928 2002/07/01
30129     Re:isam화일을 변환하는데 화일입출력시 문제 숫자부분 처리가 안됩니다. neofail 700 2002/07/02
19747     Re:isam화일을 변환하는데 화일입출력시 문제 숫자부분 처리가 안됩니다. 유영인.Chris 872 2002/07/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.