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
[68628] Re:고수님들 한번만 도와주십쇼
박지훈.임프 [cbuilder] 1354 읽음    2012-11-20 20:21
말씀하신 라인만 보자면,
if (buf[i] == "0xFF" && buf[i+1] == "0xD9")

문자열로 지정해버렸으니 당연히 계산이 안됩니다.

if (buf[i] == 0xFF && buf[i+1] == 0xD9)
이렇게 해야 할 거 같구요.

그런데, 델파이 코드를 왜 C++ 코드로 바꾸고 계신지요.
델파이 코드는 99.00% C++빌더에서 그대로 프로젝트에 포함시켜서 컴파일해서 불러 쓸 수 있습니다만.
혹시 꼭 C++로 된 코드로만 만드셔야 할 이유라도 있으신지?



책방전설 님이 쓰신 글 :
: 델파이 소스를 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 고수님들 한번만 도와주십쇼 책방전설 1329 2012/11/20
68628     Re:고수님들 한번만 도와주십쇼 박지훈.임프 1354 2012/11/20
68629         Re:Re:고수님들 한번만 도와주십쇼 책방전설 1346 2012/11/20
68630             델파이 코드를 C++빌더에서 불러쓰기 박지훈.임프 2558 2012/11/20
68631                 Re:델파이 코드를 C++빌더에서 불러쓰기 책방전설 1579 2012/11/20
68632                     Re:Re:델파이 코드를 C++빌더에서 불러쓰기 박지훈.임프 1504 2012/11/20
68633                         Re:Re:Re:델파이 코드를 C++빌더에서 불러쓰기 책방전설 1601 2012/11/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.