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
[68627] 고수님들 한번만 도와주십쇼
책방전설 [] 1328 읽음    2012-11-20 20:07
델파이 소스를 C빌더로 변환해서 쓰려고 하는데 좀 막혀버리네요

델파이 소스와 변환 소스롤 올려드리니 에러나는 부분좀 해결해 주세요.

*델파이소스
function TIEJpegAcquireStream.Write(const Buffer; Count: Longint): Longint;
var
  buf:pbytearray;
  i:integer;
begin
  result:=Count;
  buf:=pbytearray(@Buffer);
  case fStart of
    false:
      // look for begin of jpeg (FFD8)
      for i:=0 to Count-2 do
        if (buf[i]=$FF) and (buf[i+1]=$D8) then
        begin
          fData.Write( buf[i], Count-i);
          fStart:=true;
          exit;
        end;
    true:
      begin
        // look for end of jpeg (FFD9)
        for i:=0 to Count-2 do
          if (buf[i]=$FF) and (buf[i+1]=$D9) then
          begin
            fData.Write( buf[0], i);
            fStart:=false;

            // acquire bitmap
            fData.Position:=0;
            Form1.ImageEnView1.IO.LoadFromStreamJpeg(fData);
            Application.ProcessMessages;
            fData.Clear;

            exit;
          end;
        // not found, write all
        fData.Write( buf[0], Count );
      end;
  end;
end;

*변환소스
int __fastcall TIEJpegAcquireStream::Write(const void *Buffer, int Count)
{
    PByteArray buf;
    int i;

    //long nCount = Count;
    buf = PByteArray(Buffer);

    switch (fStart) {
        // look for begin of jpeg (FFD8)
        case false:
            for (i = 0; i < Count-2; i++) {
                if (buf[i] == "0xFF" && buf[i+1] == "0xD8") { <--- 이부분과
                    fData->Write(buf[i], Count-i);
                    fStart = true;
                    break;
                }
            }

        // look for end of jpeg (FFD9)
        case true:
                for (i = 0; i < Count-2; i++) {
                     if (buf[i] == "0xFF" && buf[i+1] == "0xD9") { <--- 이부분에서 제대로 IF문을 수행하지 못하네요 ㅠㅠ
                    fData->Write(buf[0], i);
                    fStart = false;

                    // acquire bitmap
                    fData->Position = 0;
                    Form1->ImageEnView1->IO->LoadFromStreamJpeg(fData);
                    Application->ProcessMessages();
                    fData->Clear();

                    break;
                }

                // not found, write all
                fData->Write(buf[0], Count);
            }
    }

    return Count;
}

+ -

관련 글 리스트
68627 고수님들 한번만 도와주십쇼 책방전설 1328 2012/11/20
68628     Re:고수님들 한번만 도와주십쇼 박지훈.임프 1354 2012/11/20
68629         Re:Re:고수님들 한번만 도와주십쇼 책방전설 1345 2012/11/20
68630             델파이 코드를 C++빌더에서 불러쓰기 박지훈.임프 2558 2012/11/20
68631                 Re:델파이 코드를 C++빌더에서 불러쓰기 책방전설 1578 2012/11/20
68632                     Re:Re:델파이 코드를 C++빌더에서 불러쓰기 박지훈.임프 1503 2012/11/20
68633                         Re:Re:Re:델파이 코드를 C++빌더에서 불러쓰기 책방전설 1601 2012/11/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.