Q&A

  • 질문:c언어로 구현된 소스를 델파이로 구현하고 싶습니다.
아래와 같은 c 언어 소스를 델파이로 구현하고 싶습니다..
제가 잘 몰라서,,,
오늘 하루 계속 해맸습니다.
검토해주시면 고맙겠습니다.


FILE        *SIN;
char buf[1024];

const char ImageCmd[8] = { 0x1D, 0x76, 0x30, 0x00, 0x10, 0x00, 0x40, 0x00 };

void PrintImage(void)
{
        int i;
        int j;
        char Temp;

SIN = fopen("서명.BMP","rb");        /*싸인 이미지 FILE을 열고*/

        for(i = 0; i < 62; i++){                /*앞의 헤더 62바이트는 버리고*/
                Temp = fgetc(SIN);
        }
        for(i = 0; i < 1024; i++){        /*버퍼뒤에 채우도록 읽어오고, 값 반전*/
                buf[1023 - i] = fgetc(SIN) ^ 0xFF;
        }

        for(i = 0; i < 8; i++){                /*커맨드 헤더 전송*/
                SerialOut(ImageCmd[i]);
        }

        for(i = 0; i < 64; i++){ /*프린트 헤더에 맞게 순서를 바꿔서 Image 데이터 전송*/
                for(j = 0; j < 16; j++){
                        SerialOut(buf[i * 16 + 15 - j]);
                }
        }
        fclose(SIN);
}
3  COMMENTS
  • Profile
    최용일 2009.06.27 03:21
    파일입출력(fopen, fclose)은 API함수쓰거나 델파이 함수쓰거나 하심됩니다.
    AssignFile, Reset, Rewrite, CloseFile 델파이도움말보세요. 예제 있습니다.
    읽는것(fgetc)은 Read함수쓰시면 되구요...
    델파이 문법을 모르신다면 책을 보세요.
  • Profile
    윤옥순 2009.06.27 22:14
    AssignFile(fp, 'C:\Documents and Settings\Administrator\바탕 화면\서명\sign.BMP');
    Reset( fp );
    for i := 0 to 62 - 1 do //*앞의 헤더 62바이트는 버리고*/
    begin
    read(fp,ck);
    Temp := Temp + Chr(ck);
    end;

    for i := 0 to 1024 - 1 do //*버퍼뒤에 채우도록 읽어오고, 값 반전*/
    begin
    buf[1023 - i] := Read(fp,ck) ^ 0xFF;
    end;

    Comm1.WriteBuf( ssendtmp, 8 );

    for i := 0 to 64 - 1 do //*프린트 헤더에 맞게 순서를 바꿔서 Image 데이터 전송*/
    begin
    for j := 0 to 16-1 do
    begin
    Comm1.WriteBuf(buf[i * 16 + 15 - j],1);
    end;
    end;
    CloseFile( fp );


    답변 감사합니다.
    위와같이 약간 변형해봤는데, " 0xFF " 에서 에러가 나네요~~~
    이 부분은 어떻게 변형하면 될까요?
  • Profile
    윤옥순 2009.06.27 22:50
    Read(fp,ck);
    buf[1023 - i] := NOT(ck OR $00) ;
    이렇게 처리해서 해결했습니다.^^
    감사합니다.