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
[37506] Re:짧은 델파이코드 번역좀 해주세요 ...
김성연 [sykim25] 886 읽음    2004-10-07 09:18
곽성주 님이 쓰신 글 :
: 잘돌아가는 델파이코드인데 빌더로 바꾸려면 에러가 나에요 --;
: dll 함수 부르는 부분에서 영상데이타 넘기는 방법이 빌더로 잘 모르겟어요.
: dll 파일 첨부했습니다.
:
: function raw2ezwf(var RawData:Byte; ls_des_filename:string; iWidth,iHeight:longint;
:  fBitRate:single; iLevel:integer; iWavelet:longint):longint; stdcall; external 'ezw.dll'
:
: ...
: ...
: var
:         fs: TFileStream;
:         img_data: array of Byte;  // 이미지 데이타 저장공간
:
:         file_name, ezw_name: string;  // 입출력 파일명
:         dummy: longint;
: //        i,j,k: integer;
: begin
:         file_name:='c:\g512x512.bmp';
:         ezw_name:='c:\test.ezw';
:
:         fs := TFileStream.Create(file_name, fmOpenRead);
:       try
:         img_size := fs.Size;
:         SetLength(img_data, img_size);
:         // pointer 로 형 변환후 ^를 추가
:         fs.Seek(1079, soFromBeginning    );
:         fs.Read(pointer(img_data)^, img_size);
:         // BitRate=0.4, Level=6, Wavelet=2
:         dummy:=raw2ezwf(img_data[0], ezw_name, 512, 512, 0.4, 6, 2);  <<--여기서 이미지데이타 넘기기가 안되네
:       finally
:         fs.free;
:         ShowMessage('Successful !');
:       end;
: end;

extern "C" __declspec(dllimport)
long __stdcall raw2ezwf(unsigned char *RawData, String ls_des_filename, long iWidth, long iHeight,
                        float fBitRate, int iLevel, long iWavelet);



{
    TFileStream *fs;
    unsigned char *img_data;
    String file_name, ezw_name;
    long dummy;
    int i,j,k;

    file_name = "c:\\g512x512.bmp";
    ezw_name = "c:\\test.ezw";

    if ( ! ExistFile(file_name) ) { return -1; }
    fs = new TFileStream( file_name, fmOpenRead | fmShareDenyNone );
    img_data = new unsigned char[img_size];
    __try
    {
        img_size = fs->Size;
        fs->Seek( 1079, soFromBeginning );
        fs->Read( img_data, img_size );
        dummy = raw2ezwf( &(img_data[0]), ezw_name, 512, 512, 0.4f, 6, 2);    // var 는 콜바이 레퍼런스로, 적당한 포인터나 참조형이 필요한데, 대개 포인터를 쓸겁니다.
    }
    __finally
    {
        delete img_data;
        delete fs;
        ShowMessage("Working Finished !"); // 예외가 발생해도 여기는 지나가므로..
    }
}

맞는지 잘 몰겠네요 -_-;;

+ -

관련 글 리스트
37497 짧은 델파이코드 번역좀 해주세요 ... 곽성주 745 2004/10/06
37506     Re:짧은 델파이코드 번역좀 해주세요 ... 김성연 886 2004/10/07
37510         Re:Re:짧은 델파이코드 번역좀 해주세요 ... 곽성주 1423 2004/10/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.